Fixes #546. Enhancement ProgressBar. (#1379)

* Fixes #546. Enhancement ProgressBar.

* Allows set the Text only on Marquee style.
This commit is contained in:
BDisp
2021-07-21 17:08:43 +01:00
committed by GitHub
parent 2454dc9679
commit e2d53d2d92
4 changed files with 1256 additions and 28 deletions

View File

@@ -1155,14 +1155,14 @@ namespace Terminal.Gui {
public Rune RightBracket = ']';
/// <summary>
/// On Segment indicator for meter views (e.g. <see cref="ProgressBar"/>.
/// Blocks Segment indicator for meter views (e.g. <see cref="ProgressBar"/>.
/// </summary>
public Rune OnMeterSegment = '\u258c';
public Rune BlocksMeterSegment = '\u258c';
/// <summary>
/// Off Segment indicator for meter views (e.g. <see cref="ProgressBar"/>.
/// Continuous Segment indicator for meter views (e.g. <see cref="ProgressBar"/>.
/// </summary>
public Rune OffMeterSegement = ' ';
public Rune ContinuousMeterSegment = '\u2588';
/// <summary>
/// Make the attribute for the foreground and background colors.

View File

@@ -1,5 +1,54 @@
using System;
using NStack;
using System;
namespace Terminal.Gui {
/// <summary>
/// Specifies the style that a <see cref="ProgressBar"/> uses to indicate the progress of an operation.
/// </summary>
public enum ProgressBarStyle {
/// <summary>
/// Indicates progress by increasing the number of segmented blocks in a <see cref="ProgressBar"/>.
/// </summary>
Blocks,
/// <summary>
/// Indicates progress by increasing the size of a smooth, continuous bar in a <see cref="ProgressBar"/>.
/// </summary>
Continuous,
/// <summary>
/// Indicates progress by continuously scrolling a block across a <see cref="ProgressBar"/> in a marquee fashion.
/// </summary>
MarqueeBlocks,
/// <summary>
/// Indicates progress by continuously scrolling a block across a <see cref="ProgressBar"/> in a marquee fashion.
/// </summary>
MarqueeContinuous
}
/// <summary>
///Specifies the format that a <see cref="ProgressBar"/> uses to indicate the visual presentation.
/// </summary>
public enum ProgressBarFormat {
/// <summary>
/// A simple visual presentation showing only the progress bar.
/// </summary>
Simple,
/// <summary>
/// A simple visual presentation showing the progress bar and the percentage.
/// </summary>
SimplePlusPercentage,
/// <summary>
/// A framed visual presentation showing only the progress bar.
/// </summary>
Framed,
/// <summary>
/// A framed visual presentation showing the progress bar and the percentage.
/// </summary>
FramedPlusPercentage,
/// <summary>
/// A framed visual presentation showing all with the progress bar padded.
/// </summary>
FramedProgressPadded
}
/// <summary>
/// A Progress Bar view that can indicate progress of an activity visually.
@@ -16,7 +65,8 @@ namespace Terminal.Gui {
/// </remarks>
public class ProgressBar : View {
bool isActivity;
int activityPos, delta;
int [] activityPos;
int delta, padding;
/// <summary>
/// Initializes a new instance of the <see cref="ProgressBar"/> class, starts in percentage mode with an absolute position and size.
@@ -24,17 +74,28 @@ namespace Terminal.Gui {
/// <param name="rect">Rect.</param>
public ProgressBar (Rect rect) : base (rect)
{
CanFocus = false;
fraction = 0;
Initialize (rect);
}
/// <summary>
/// Initializes a new instance of the <see cref="ProgressBar"/> class, starts in percentage mode and uses relative layout.
/// </summary>
public ProgressBar () : base ()
{
Initialize (Rect.Empty);
}
void Initialize (Rect rect)
{
CanFocus = false;
fraction = 0;
ColorScheme = new ColorScheme () {
Normal = Application.Driver.MakeAttribute (Color.BrightGreen, Color.Gray),
HotNormal = Colors.Base.Normal
};
if (rect.IsEmpty) {
Height = 1;
}
}
float fraction;
@@ -46,32 +107,147 @@ namespace Terminal.Gui {
public float Fraction {
get => fraction;
set {
fraction = value;
fraction = Math.Min (value, 1);
isActivity = false;
SetNeedsDisplay ();
}
}
ProgressBarStyle progressBarStyle;
/// <summary>
/// Gets/Sets the progress bar style based on the <see cref="Terminal.Gui.ProgressBarStyle"/>
/// </summary>
public ProgressBarStyle ProgressBarStyle {
get => progressBarStyle;
set {
progressBarStyle = value;
switch (value) {
case ProgressBarStyle.Blocks:
SegmentCharacter = Driver.BlocksMeterSegment;
break;
case ProgressBarStyle.Continuous:
SegmentCharacter = Driver.ContinuousMeterSegment;
break;
case ProgressBarStyle.MarqueeBlocks:
SegmentCharacter = Driver.BlocksMeterSegment;
break;
case ProgressBarStyle.MarqueeContinuous:
SegmentCharacter = Driver.ContinuousMeterSegment;
break;
}
SetNeedsDisplay ();
}
}
private ProgressBarFormat progressBarFormat;
/// <summary>
/// Specifies the format that a <see cref="ProgressBar"/> uses to indicate the visual presentation.
/// </summary>
public ProgressBarFormat ProgressBarFormat {
get => progressBarFormat;
set {
progressBarFormat = value;
switch (progressBarFormat) {
case ProgressBarFormat.Simple:
Height = 1;
break;
case ProgressBarFormat.SimplePlusPercentage:
Height = 2;
break;
case ProgressBarFormat.Framed:
Height = 3;
break;
case ProgressBarFormat.FramedPlusPercentage:
Height = 4;
break;
case ProgressBarFormat.FramedProgressPadded:
Height = 6;
break;
}
SetNeedsDisplay ();
}
}
private Rune segmentCharacter = Driver.BlocksMeterSegment;
/// <summary>
/// Segment indicator for meter views.
/// </summary>
public Rune SegmentCharacter {
get => segmentCharacter;
set {
segmentCharacter = value;
SetNeedsDisplay ();
}
}
///<inheritdoc/>
public override ustring Text {
get => GetPercentageText ();
set {
base.Text = SetPercentageText (value);
}
}
ustring GetPercentageText ()
{
switch (progressBarStyle) {
case ProgressBarStyle.Blocks:
case ProgressBarStyle.Continuous:
return $"{fraction * 100:F0}%";
case ProgressBarStyle.MarqueeBlocks:
case ProgressBarStyle.MarqueeContinuous:
break;
}
return base.Text;
}
ustring SetPercentageText (ustring value)
{
switch (progressBarStyle) {
case ProgressBarStyle.Blocks:
case ProgressBarStyle.Continuous:
return $"{fraction * 100:F0}%";
case ProgressBarStyle.MarqueeBlocks:
case ProgressBarStyle.MarqueeContinuous:
break;
}
return value;
}
/// <summary>
/// Notifies the <see cref="ProgressBar"/> that some progress has taken place.
/// </summary>
/// <remarks>
/// If the <see cref="ProgressBar"/> is is percentage mode, it switches to activity
/// mode. If is in activity mode, the marker is moved.
/// If the <see cref="ProgressBar"/> is percentage mode, it switches to activity
/// mode. If is in activity mode, the marker is moved.
/// </remarks>
public void Pulse ()
{
if (activityPos == null) {
PopulateActivityPos ();
}
if (!isActivity) {
isActivity = true;
activityPos = 0;
delta = 1;
} else {
activityPos += delta;
if (activityPos < 0) {
activityPos = 1;
for (int i = 0; i < activityPos.Length; i++) {
activityPos [i] += delta;
}
int fWidth = GetFrameWidth ();
if (activityPos [activityPos.Length - 1] < 0) {
for (int i = 0; i < activityPos.Length; i++) {
activityPos [i] = i - activityPos.Length + 2;
}
delta = 1;
} else if (activityPos >= Frame.Width) {
activityPos = Frame.Width - 2;
} else if (activityPos [0] >= fWidth) {
for (int i = 0; i < activityPos.Length; i++) {
activityPos [i] = fWidth + i - 2;
}
delta = -1;
}
}
@@ -80,27 +256,97 @@ namespace Terminal.Gui {
}
///<inheritdoc/>
public override void Redraw(Rect region)
public override void Redraw (Rect region)
{
DrawFrame ();
Driver.SetAttribute (ColorScheme.Normal);
int top = Frame.Width;
int fWidth = GetFrameWidth ();
if (isActivity) {
Move (0, 0);
for (int i = 0; i < top; i++)
if (i == activityPos)
Driver.AddRune (Driver.Stipple);
Move (padding, padding);
for (int i = 0; i < fWidth; i++)
if (Array.IndexOf (activityPos, i) != -1)
Driver.AddRune (SegmentCharacter);
else
Driver.AddRune (' ');
} else {
Move (0, 0);
int mid = (int)(fraction * top);
Move (padding, padding);
int mid = (int)(fraction * fWidth);
int i;
for (i = 0; i < mid; i++)
Driver.AddRune (Driver.Stipple);
for (; i < top; i++)
for (i = 0; i < mid & i < fWidth; i++)
Driver.AddRune (SegmentCharacter);
for (; i < fWidth; i++)
Driver.AddRune (' ');
}
DrawText (fWidth);
}
int GetFrameWidth ()
{
switch (progressBarFormat) {
case ProgressBarFormat.Simple:
case ProgressBarFormat.SimplePlusPercentage:
break;
case ProgressBarFormat.Framed:
case ProgressBarFormat.FramedPlusPercentage:
return Frame.Width - 2;
case ProgressBarFormat.FramedProgressPadded:
return Frame.Width - 2 - padding;
}
return Frame.Width;
}
void DrawText (int fWidth)
{
switch (progressBarFormat) {
case ProgressBarFormat.Simple:
case ProgressBarFormat.Framed:
break;
case ProgressBarFormat.SimplePlusPercentage:
case ProgressBarFormat.FramedPlusPercentage:
case ProgressBarFormat.FramedProgressPadded:
var tf = new TextFormatter () {
Alignment = TextAlignment.Centered,
Text = Text
};
var row = padding + (progressBarFormat == ProgressBarFormat.FramedProgressPadded
? 2 : 1);
Move (padding, row);
var rect = new Rect (padding, row, fWidth, Frame.Height);
tf?.Draw (ViewToScreen (rect), ColorScheme.HotNormal, ColorScheme.HotNormal);
break;
}
}
void DrawFrame ()
{
switch (progressBarFormat) {
case ProgressBarFormat.Simple:
case ProgressBarFormat.SimplePlusPercentage:
padding = 0;
break;
case ProgressBarFormat.Framed:
case ProgressBarFormat.FramedPlusPercentage:
padding = 1;
Application.Driver.DrawWindowFrame (ViewToScreen (Bounds), padding, padding, padding, padding, true);
break;
case ProgressBarFormat.FramedProgressPadded:
padding = 2;
Application.Driver.DrawWindowFrame (ViewToScreen (Bounds), padding, padding, padding, padding + 1, true);
Application.Driver.DrawWindowFrame (ViewToScreen (Bounds), padding - 1, padding - 1, padding - 1, padding - 1, true);
break;
}
}
void PopulateActivityPos ()
{
activityPos = new int [Math.Min (Frame.Width / 3, 5)];
for (int i = 0; i < activityPos.Length; i++) {
activityPos [i] = i - activityPos.Length + 1;
}
}
///<inheritdoc/>

View File

@@ -0,0 +1,134 @@
using System;
using System.Linq;
using System.Threading;
using Terminal.Gui;
namespace UICatalog {
[ScenarioMetadata (Name: "ProgressBar Styles", Description: "Shows the ProgressBar Styles")]
[ScenarioCategory ("Controls")]
[ScenarioCategory ("MainLoop")]
class ProgressBarStyles : Scenario {
private Timer _fractionTimer;
private Timer _pulseTimer;
private const uint _timerTick = 100;
public override void Setup ()
{
const float fractionStep = 0.01F;
const int pbWidth = 20;
var pbFormatEnum = Enum.GetValues (typeof (ProgressBarFormat)).Cast<ProgressBarFormat> ().ToList ();
var rbPBFormat = new RadioGroup (pbFormatEnum.Select (e => NStack.ustring.Make (e.ToString ())).ToArray ()) {
X = Pos.Center (),
Y = 1
};
Win.Add (rbPBFormat);
var label = new Label ("Blocks") {
X = Pos.Center (),
Y = Pos.Bottom (rbPBFormat) + 1
};
Win.Add (label);
var blocksPB = new ProgressBar () {
X = Pos.Center (),
Y = Pos.Y (label) + 1,
Width = pbWidth
};
Win.Add (blocksPB);
label = new Label ("Continuous") {
X = Pos.Center (),
Y = Pos.Bottom (blocksPB) + 1
};
Win.Add (label);
var continuousPB = new ProgressBar () {
X = Pos.Center (),
Y = Pos.Y (label) + 1,
Width = pbWidth,
ProgressBarStyle = ProgressBarStyle.Continuous
};
Win.Add (continuousPB);
var button = new Button ("Start timer") {
X = Pos.Center (),
Y = Pos.Bottom (continuousPB) + 1
};
button.Clicked += () => {
if (_fractionTimer == null) {
button.CanFocus = false;
blocksPB.Fraction = 0;
continuousPB.Fraction = 0;
float fractionSum = 0;
_fractionTimer = new Timer ((_) => {
fractionSum += fractionStep;
blocksPB.Fraction = fractionSum;
continuousPB.Fraction = fractionSum;
if (fractionSum > 1) {
_fractionTimer.Dispose ();
_fractionTimer = null;
button.CanFocus = true;
}
Application.MainLoop.Driver.Wakeup ();
}, null, 0, _timerTick);
}
};
Win.Add (button);
label = new Label ("Marquee Blocks") {
X = Pos.Center (),
Y = Pos.Y (button) + 3
};
Win.Add (label);
var marqueesBlocksPB = new ProgressBar () {
X = Pos.Center (),
Y = Pos.Y (label) + 1,
Width = pbWidth,
ProgressBarStyle = ProgressBarStyle.MarqueeBlocks
};
Win.Add (marqueesBlocksPB);
label = new Label ("Marquee Continuous") {
X = Pos.Center (),
Y = Pos.Bottom (marqueesBlocksPB) + 1
};
Win.Add (label);
var marqueesContinuousPB = new ProgressBar () {
X = Pos.Center (),
Y = Pos.Y (label) + 1,
Width = pbWidth,
ProgressBarStyle = ProgressBarStyle.MarqueeContinuous
};
Win.Add (marqueesContinuousPB);
rbPBFormat.SelectedItemChanged += (e) => {
blocksPB.ProgressBarFormat = (ProgressBarFormat)e.SelectedItem;
continuousPB.ProgressBarFormat = (ProgressBarFormat)e.SelectedItem;
marqueesBlocksPB.ProgressBarFormat = (ProgressBarFormat)e.SelectedItem;
marqueesContinuousPB.ProgressBarFormat = (ProgressBarFormat)e.SelectedItem;
};
_pulseTimer = new Timer ((_) => {
marqueesBlocksPB.Text = marqueesContinuousPB.Text = DateTime.Now.TimeOfDay.ToString ();
marqueesBlocksPB.Pulse ();
marqueesContinuousPB.Pulse ();
Application.MainLoop.Driver.Wakeup ();
}, null, 0, 300);
Top.Unloaded += Top_Unloaded;
void Top_Unloaded ()
{
if (_pulseTimer != null) {
_pulseTimer.Dispose ();
_pulseTimer = null;
Top.Unloaded -= Top_Unloaded;
}
}
}
}
}

View File

@@ -0,0 +1,848 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
namespace Terminal.Gui.Views {
public class ProgressBarTests {
[Fact]
[AutoInitShutdown]
public void Default_Contructor ()
{
var pb = new ProgressBar ();
Assert.False (pb.CanFocus);
Assert.Equal (0, pb.Fraction);
Assert.Equal (new Attribute (Color.BrightGreen, Color.Gray),
new Attribute (pb.ColorScheme.Normal.Foreground, pb.ColorScheme.Normal.Background));
Assert.Equal (Colors.Base.Normal, pb.ColorScheme.HotNormal);
Assert.Equal (1, pb.Height);
Assert.Equal (ProgressBarStyle.Blocks, pb.ProgressBarStyle);
Assert.Equal (ProgressBarFormat.Simple, pb.ProgressBarFormat);
Assert.Equal (Application.Driver.BlocksMeterSegment, pb.SegmentCharacter);
}
[Fact]
[AutoInitShutdown]
public void ProgressBarStyle_Setter ()
{
var driver = ((FakeDriver)Application.Driver);
var pb = new ProgressBar ();
pb.ProgressBarStyle = ProgressBarStyle.Blocks;
Assert.Equal (driver.BlocksMeterSegment, pb.SegmentCharacter);
pb.ProgressBarStyle = ProgressBarStyle.Continuous;
Assert.Equal (driver.ContinuousMeterSegment, pb.SegmentCharacter);
pb.ProgressBarStyle = ProgressBarStyle.MarqueeBlocks;
Assert.Equal (driver.BlocksMeterSegment, pb.SegmentCharacter);
pb.ProgressBarStyle = ProgressBarStyle.MarqueeContinuous;
Assert.Equal (driver.ContinuousMeterSegment, pb.SegmentCharacter);
}
[Fact]
[AutoInitShutdown]
public void ProgressBarFormat_Setter ()
{
var pb = new ProgressBar ();
pb.ProgressBarFormat = ProgressBarFormat.Simple;
Assert.Equal (1, pb.Height);
pb.ProgressBarFormat = ProgressBarFormat.SimplePlusPercentage;
Assert.Equal (2, pb.Height);
pb.ProgressBarFormat = ProgressBarFormat.Framed;
Assert.Equal (3, pb.Height);
pb.ProgressBarFormat = ProgressBarFormat.FramedPlusPercentage;
Assert.Equal (4, pb.Height);
pb.ProgressBarFormat = ProgressBarFormat.FramedProgressPadded;
Assert.Equal (6, pb.Height);
}
[Fact]
[AutoInitShutdown]
public void ProgressBarFormat_MarqueeBlocks_MarqueeContinuous_Setter ()
{
var driver = ((FakeDriver)Application.Driver);
var pb1 = new ProgressBar () { ProgressBarStyle = ProgressBarStyle.MarqueeBlocks };
var pb2 = new ProgressBar () { ProgressBarStyle = ProgressBarStyle.MarqueeContinuous };
pb1.ProgressBarFormat = ProgressBarFormat.Simple;
Assert.Equal (ProgressBarFormat.Simple, pb1.ProgressBarFormat);
Assert.Equal (1, pb1.Height);
pb2.ProgressBarFormat = ProgressBarFormat.Simple;
Assert.Equal (ProgressBarFormat.Simple, pb2.ProgressBarFormat);
Assert.Equal (1, pb2.Height);
pb1.ProgressBarFormat = ProgressBarFormat.SimplePlusPercentage;
Assert.Equal (ProgressBarFormat.SimplePlusPercentage, pb1.ProgressBarFormat);
Assert.Equal (2, pb1.Height);
pb2.ProgressBarFormat = ProgressBarFormat.SimplePlusPercentage;
Assert.Equal (ProgressBarFormat.SimplePlusPercentage, pb2.ProgressBarFormat);
Assert.Equal (2, pb2.Height);
pb1.ProgressBarFormat = ProgressBarFormat.Framed;
Assert.Equal (ProgressBarFormat.Framed, pb1.ProgressBarFormat);
Assert.Equal (3, pb1.Height);
pb2.ProgressBarFormat = ProgressBarFormat.Framed;
Assert.Equal (ProgressBarFormat.Framed, pb2.ProgressBarFormat);
Assert.Equal (3, pb2.Height);
pb1.ProgressBarFormat = ProgressBarFormat.FramedPlusPercentage;
Assert.Equal (ProgressBarFormat.FramedPlusPercentage, pb1.ProgressBarFormat);
Assert.Equal (4, pb1.Height);
pb2.ProgressBarFormat = ProgressBarFormat.FramedPlusPercentage;
Assert.Equal (ProgressBarFormat.FramedPlusPercentage, pb2.ProgressBarFormat);
Assert.Equal (4, pb2.Height);
pb1.ProgressBarFormat = ProgressBarFormat.FramedProgressPadded;
Assert.Equal (ProgressBarFormat.FramedProgressPadded, pb1.ProgressBarFormat);
Assert.Equal (6, pb1.Height);
pb2.ProgressBarFormat = ProgressBarFormat.FramedProgressPadded;
Assert.Equal (ProgressBarFormat.FramedProgressPadded, pb2.ProgressBarFormat);
Assert.Equal (6, pb2.Height);
}
[Fact]
[AutoInitShutdown]
public void Text_Setter_Not_Marquee ()
{
var pb = new ProgressBar () { Fraction = 0.25F};
pb.ProgressBarFormat = ProgressBarFormat.Simple;
pb.Text = "blabla";
Assert.Equal ("25%", pb.Text);
pb.ProgressBarFormat = ProgressBarFormat.SimplePlusPercentage;
pb.Text = "bleble";
Assert.Equal ("25%", pb.Text);
pb.ProgressBarFormat = ProgressBarFormat.Framed;
Assert.Equal ("25%", pb.Text);
pb.ProgressBarFormat = ProgressBarFormat.FramedPlusPercentage;
Assert.Equal ("25%", pb.Text);
pb.ProgressBarFormat = ProgressBarFormat.FramedProgressPadded;
Assert.Equal ("25%", pb.Text);
}
[Fact]
[AutoInitShutdown]
public void Text_Setter_Marquee ()
{
var pb = new ProgressBar () { Fraction = 0.25F, ProgressBarStyle = ProgressBarStyle.MarqueeBlocks };
pb.ProgressBarFormat = ProgressBarFormat.Simple;
pb.Text = "blabla";
Assert.Equal ("blabla", pb.Text);
pb.ProgressBarFormat = ProgressBarFormat.SimplePlusPercentage;
pb.Text = "bleble";
Assert.Equal ("bleble", pb.Text);
pb.ProgressBarFormat = ProgressBarFormat.Framed;
Assert.Equal ("bleble", pb.Text);
pb.ProgressBarFormat = ProgressBarFormat.FramedPlusPercentage;
Assert.Equal ("bleble", pb.Text);
pb.ProgressBarFormat = ProgressBarFormat.FramedProgressPadded;
Assert.Equal ("bleble", pb.Text);
}
[Fact]
[AutoInitShutdown]
public void Pulse_Redraw ()
{
var driver = ((FakeDriver)Application.Driver);
var pb = new ProgressBar () {
Width = 15,
ProgressBarStyle = ProgressBarStyle.MarqueeBlocks
};
for (int i = 0; i < 38; i++) {
pb.Pulse ();
pb.Redraw (pb.Bounds);
if (i == 0) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 1) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 2) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 3) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 4) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 5) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 6) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 5, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 7) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 5, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 6, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 8) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 5, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 6, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 7, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 9) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 5, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 6, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 7, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 8, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 10) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 6, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 7, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 8, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 9, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 11) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 7, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 8, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 9, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 10, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 12) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 8, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 9, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 10, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 11, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 13) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 9, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 10, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 11, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 12, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 14) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 10, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 11, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 12, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 13, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 14, 0]);
} else if (i == 15) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 11, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 12, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 13, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 14, 0]);
} else if (i == 16) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 12, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 13, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 14, 0]);
} else if (i == 17) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 13, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 14, 0]);
} else if (i == 18) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 14, 0]);
} else if (i == 19) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 13, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 14, 0]);
} else if (i == 20) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 12, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 13, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 14, 0]);
} else if (i == 21) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 11, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 12, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 13, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 14, 0]);
} else if (i == 22) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 10, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 11, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 12, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 13, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 14, 0]);
} else if (i == 23) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 9, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 10, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 11, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 12, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 24) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 8, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 9, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 10, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 11, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 25) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 7, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 8, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 9, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 10, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 26) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 6, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 7, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 8, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 9, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 27) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 5, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 6, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 7, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 8, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 28) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 5, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 6, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 7, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 29) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 5, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 6, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 30) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 5, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 31) {
Assert.Equal (' ', (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 32) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 33) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 34) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 35) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 36) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
} else if (i == 37) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 6, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 7, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 8, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 9, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 10, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 11, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 12, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 13, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 14, 0]);
}
}
}
[Fact]
[AutoInitShutdown]
public void Fraction_Redraw ()
{
var driver = ((FakeDriver)Application.Driver);
var pb = new ProgressBar () {
Width = 5
};
for (int i = 0; i <= pb.Frame.Width; i++) {
pb.Fraction += 0.2F;
pb.Redraw (pb.Bounds);
if (i == 0) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
} else if (i == 1) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
} else if (i == 2) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
} else if (i == 3) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
} else if (i == 4) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
} else if (i == 5) {
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 0, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 1, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 2, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 3, 0]);
Assert.Equal (driver.BlocksMeterSegment, (double)driver.Contents [0, 4, 0]);
Assert.Equal (' ', (double)driver.Contents [0, 5, 0]);
}
}
}
}
}