diff --git a/Terminal.Gui/Core/ConsoleDriver.cs b/Terminal.Gui/Core/ConsoleDriver.cs
index 86fc62a6f..6967eb962 100644
--- a/Terminal.Gui/Core/ConsoleDriver.cs
+++ b/Terminal.Gui/Core/ConsoleDriver.cs
@@ -1155,14 +1155,14 @@ namespace Terminal.Gui {
public Rune RightBracket = ']';
///
- /// On Segment indicator for meter views (e.g. .
+ /// Blocks Segment indicator for meter views (e.g. .
///
- public Rune OnMeterSegment = '\u258c';
+ public Rune BlocksMeterSegment = '\u258c';
///
- /// Off Segment indicator for meter views (e.g. .
+ /// Continuous Segment indicator for meter views (e.g. .
///
- public Rune OffMeterSegement = ' ';
+ public Rune ContinuousMeterSegment = '\u2588';
///
/// Make the attribute for the foreground and background colors.
diff --git a/Terminal.Gui/Views/ProgressBar.cs b/Terminal.Gui/Views/ProgressBar.cs
index 65cda41f1..85275139d 100644
--- a/Terminal.Gui/Views/ProgressBar.cs
+++ b/Terminal.Gui/Views/ProgressBar.cs
@@ -1,5 +1,54 @@
-using System;
+using NStack;
+using System;
namespace Terminal.Gui {
+ ///
+ /// Specifies the style that a uses to indicate the progress of an operation.
+ ///
+ public enum ProgressBarStyle {
+ ///
+ /// Indicates progress by increasing the number of segmented blocks in a .
+ ///
+ Blocks,
+ ///
+ /// Indicates progress by increasing the size of a smooth, continuous bar in a .
+ ///
+ Continuous,
+ ///
+ /// Indicates progress by continuously scrolling a block across a in a marquee fashion.
+ ///
+ MarqueeBlocks,
+ ///
+ /// Indicates progress by continuously scrolling a block across a in a marquee fashion.
+ ///
+ MarqueeContinuous
+
+ }
+
+ ///
+ ///Specifies the format that a uses to indicate the visual presentation.
+ ///
+ public enum ProgressBarFormat {
+ ///
+ /// A simple visual presentation showing only the progress bar.
+ ///
+ Simple,
+ ///
+ /// A simple visual presentation showing the progress bar and the percentage.
+ ///
+ SimplePlusPercentage,
+ ///
+ /// A framed visual presentation showing only the progress bar.
+ ///
+ Framed,
+ ///
+ /// A framed visual presentation showing the progress bar and the percentage.
+ ///
+ FramedPlusPercentage,
+ ///
+ /// A framed visual presentation showing all with the progress bar padded.
+ ///
+ FramedProgressPadded
+ }
///
/// A Progress Bar view that can indicate progress of an activity visually.
@@ -16,7 +65,8 @@ namespace Terminal.Gui {
///
public class ProgressBar : View {
bool isActivity;
- int activityPos, delta;
+ int [] activityPos;
+ int delta, padding;
///
/// Initializes a new instance of the class, starts in percentage mode with an absolute position and size.
@@ -24,17 +74,28 @@ namespace Terminal.Gui {
/// Rect.
public ProgressBar (Rect rect) : base (rect)
{
- CanFocus = false;
- fraction = 0;
+ Initialize (rect);
}
///
/// Initializes a new instance of the class, starts in percentage mode and uses relative layout.
///
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;
+
+ ///
+ /// Gets/Sets the progress bar style based on the
+ ///
+ 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;
+
+ ///
+ /// Specifies the format that a uses to indicate the visual presentation.
+ ///
+ 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;
+
+ ///
+ /// Segment indicator for meter views.
+ ///
+ public Rune SegmentCharacter {
+ get => segmentCharacter;
+ set {
+ segmentCharacter = value;
+ SetNeedsDisplay ();
+ }
+ }
+
+ ///
+ 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;
+ }
+
///
/// Notifies the that some progress has taken place.
///
///
- /// If the is is percentage mode, it switches to activity
- /// mode. If is in activity mode, the marker is moved.
+ /// If the is percentage mode, it switches to activity
+ /// mode. If is in activity mode, the marker is moved.
///
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 {
}
///
- 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;
+ }
}
///
diff --git a/UICatalog/Scenarios/ProgressBarStyles.cs b/UICatalog/Scenarios/ProgressBarStyles.cs
new file mode 100644
index 000000000..1d016b9fd
--- /dev/null
+++ b/UICatalog/Scenarios/ProgressBarStyles.cs
@@ -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 ().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;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/UnitTests/ProgressBarTests.cs b/UnitTests/ProgressBarTests.cs
new file mode 100644
index 000000000..c8531a446
--- /dev/null
+++ b/UnitTests/ProgressBarTests.cs
@@ -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]);
+ }
+ }
+ }
+ }
+}