From 157470426c57b192484bbc30a265870c9f25c0aa Mon Sep 17 00:00:00 2001 From: Charlie Kindel Date: Mon, 8 Jun 2020 16:47:17 -0600 Subject: [PATCH 1/3] renamed mock to fake after learning the difference --- .../FakeConsole.cs} | 4 +- .../FakeDriver.cs} | 50 +++++++++---------- 2 files changed, 27 insertions(+), 27 deletions(-) rename Terminal.Gui/ConsoleDrivers/{MockDriver/MockConsole.cs => FakeDriver/FakeConsole.cs} (99%) rename Terminal.Gui/ConsoleDrivers/{MockDriver/MockDriver.cs => FakeDriver/FakeDriver.cs} (92%) diff --git a/Terminal.Gui/ConsoleDrivers/MockDriver/MockConsole.cs b/Terminal.Gui/ConsoleDrivers/FakeDriver/FakeConsole.cs similarity index 99% rename from Terminal.Gui/ConsoleDrivers/MockDriver/MockConsole.cs rename to Terminal.Gui/ConsoleDrivers/FakeDriver/FakeConsole.cs index d69b52ea9..a336997ad 100644 --- a/Terminal.Gui/ConsoleDrivers/MockDriver/MockConsole.cs +++ b/Terminal.Gui/ConsoleDrivers/FakeDriver/FakeConsole.cs @@ -1,5 +1,5 @@ // -// MockConsole.cs: A mock .NET Windows Console API implementaiton for unit tests. +// FakeConsole.cs: A fake .NET Windows Console API implementaiton for unit tests. // // Authors: // Charlie Kindel (github.com/tig) @@ -15,7 +15,7 @@ namespace Terminal.Gui { /// /// /// - public static class MockConsole { + public static class FakeConsole { // // Summary: diff --git a/Terminal.Gui/ConsoleDrivers/MockDriver/MockDriver.cs b/Terminal.Gui/ConsoleDrivers/FakeDriver/FakeDriver.cs similarity index 92% rename from Terminal.Gui/ConsoleDrivers/MockDriver/MockDriver.cs rename to Terminal.Gui/ConsoleDrivers/FakeDriver/FakeDriver.cs index 8442b5c29..19196397c 100644 --- a/Terminal.Gui/ConsoleDrivers/MockDriver/MockDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/FakeDriver/FakeDriver.cs @@ -1,5 +1,5 @@ // -// MockDriver.cs: A mock ConsoleDriver for unit tests. +// FakeDriver.cs: A fake ConsoleDriver for unit tests. // // Authors: // Charlie Kindel (github.com/tig) @@ -14,7 +14,7 @@ namespace Terminal.Gui { /// /// Implements a mock ConsoleDriver for unit testing /// - public class MockDriver : ConsoleDriver, IMainLoopDriver { + public class FakeDriver : ConsoleDriver, IMainLoopDriver { int cols, rows; /// /// @@ -52,10 +52,10 @@ namespace Terminal.Gui { /// /// /// - public MockDriver () + public FakeDriver () { - cols = MockConsole.WindowWidth; - rows = MockConsole.WindowHeight; // - 1; + cols = FakeConsole.WindowWidth; + rows = FakeConsole.WindowHeight; // - 1; UpdateOffscreen (); } @@ -73,12 +73,12 @@ namespace Terminal.Gui { crow = row; if (Clip.Contains (col, row)) { - MockConsole.CursorTop = row; - MockConsole.CursorLeft = col; + FakeConsole.CursorTop = row; + FakeConsole.CursorLeft = col; needMove = false; } else { - MockConsole.CursorTop = Clip.Y; - MockConsole.CursorLeft = Clip.X; + FakeConsole.CursorTop = Clip.Y; + FakeConsole.CursorLeft = Clip.X; needMove = true; } @@ -127,8 +127,8 @@ namespace Terminal.Gui { /// public override void End () { - MockConsole.ResetColor (); - MockConsole.Clear (); + FakeConsole.ResetColor (); + FakeConsole.Clear (); } static Attribute MakeColor (ConsoleColor f, ConsoleColor b) @@ -230,10 +230,10 @@ namespace Terminal.Gui { .OfType () .Select (s => (int)s); if (values.Contains (color & 0xffff)) { - MockConsole.BackgroundColor = (ConsoleColor)(color & 0xffff); + FakeConsole.BackgroundColor = (ConsoleColor)(color & 0xffff); } if (values.Contains ((color >> 16) & 0xffff)) { - MockConsole.ForegroundColor = (ConsoleColor)((color >> 16) & 0xffff); + FakeConsole.ForegroundColor = (ConsoleColor)((color >> 16) & 0xffff); } } @@ -245,8 +245,8 @@ namespace Terminal.Gui { int rows = Rows; int cols = Cols; - MockConsole.CursorTop = 0; - MockConsole.CursorLeft = 0; + FakeConsole.CursorTop = 0; + FakeConsole.CursorLeft = 0; for (int row = 0; row < rows; row++) { dirtyLine [row] = false; for (int col = 0; col < cols; col++) { @@ -254,7 +254,7 @@ namespace Terminal.Gui { var color = contents [row, col, 1]; if (color != redrawColor) SetColor (color); - MockConsole.Write ((char)contents [row, col, 0]); + FakeConsole.Write ((char)contents [row, col, 0]); } } } @@ -267,8 +267,8 @@ namespace Terminal.Gui { int rows = Rows; int cols = Cols; - var savedRow = MockConsole.CursorTop; - var savedCol = MockConsole.CursorLeft; + var savedRow = FakeConsole.CursorTop; + var savedCol = FakeConsole.CursorLeft; for (int row = 0; row < rows; row++) { if (!dirtyLine [row]) continue; @@ -277,20 +277,20 @@ namespace Terminal.Gui { if (contents [row, col, 2] != 1) continue; - MockConsole.CursorTop = row; - MockConsole.CursorLeft = col; + FakeConsole.CursorTop = row; + FakeConsole.CursorLeft = col; for (; col < cols && contents [row, col, 2] == 1; col++) { var color = contents [row, col, 1]; if (color != redrawColor) SetColor (color); - MockConsole.Write ((char)contents [row, col, 0]); + FakeConsole.Write ((char)contents [row, col, 0]); contents [row, col, 2] = 0; } } } - MockConsole.CursorTop = savedRow; - MockConsole.CursorLeft = savedCol; + FakeConsole.CursorTop = savedRow; + FakeConsole.CursorLeft = savedCol; } /// @@ -421,7 +421,7 @@ namespace Terminal.Gui { public override void PrepareToRun (MainLoop mainLoop, Action keyHandler, Action keyDownHandler, Action keyUpHandler, Action mouseHandler) { // Note: Net doesn't support keydown/up events and thus any passed keyDown/UpHandlers will never be called - (mainLoop.Driver as MockDriver).WindowsKeyPressed = delegate (ConsoleKeyInfo consoleKey) { + (mainLoop.Driver as FakeDriver).WindowsKeyPressed = delegate (ConsoleKeyInfo consoleKey) { var map = MapKey (consoleKey); if (map == (Key)0xffffffff) return; @@ -478,7 +478,7 @@ namespace Terminal.Gui { { while (true) { waitForProbe.WaitOne (); - windowsKeyResult = MockConsole.ReadKey (true); + windowsKeyResult = FakeConsole.ReadKey (true); keyReady.Set (); } } From 01c583f0634e4c8afbabc7ab0205b5e29022fc42 Mon Sep 17 00:00:00 2001 From: Charlie Kindel Date: Mon, 8 Jun 2020 18:01:40 -0600 Subject: [PATCH 2/3] updated existing tests with new names; more tests --- UnitTests/{DimPosTests.cs => PosTests.cs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename UnitTests/{DimPosTests.cs => PosTests.cs} (100%) diff --git a/UnitTests/DimPosTests.cs b/UnitTests/PosTests.cs similarity index 100% rename from UnitTests/DimPosTests.cs rename to UnitTests/PosTests.cs From f8d235a4262dc33b76611e88a834767fe44a0a46 Mon Sep 17 00:00:00 2001 From: Charlie Kindel Date: Mon, 8 Jun 2020 18:02:18 -0600 Subject: [PATCH 3/3] enabled posdim tests --- Terminal.Gui/Core/PosDim.cs | 21 ++++-- UnitTests/ApplicationTests.cs | 24 +++---- UnitTests/ConsoleDriverTests.cs | 18 ++--- UnitTests/DimTests.cs | 122 +++++++++++++++++++++++++++++++ UnitTests/PosTests.cs | 124 ++++++++++++++++++++++++-------- UnitTests/ResponderTests.cs | 6 +- UnitTests/ViewTests.cs | 6 +- 7 files changed, 258 insertions(+), 63 deletions(-) create mode 100644 UnitTests/DimTests.cs diff --git a/Terminal.Gui/Core/PosDim.cs b/Terminal.Gui/Core/PosDim.cs index 51ea52072..fd7b2641f 100644 --- a/Terminal.Gui/Core/PosDim.cs +++ b/Terminal.Gui/Core/PosDim.cs @@ -222,7 +222,7 @@ namespace Terminal.Gui { public override string ToString () { - return $"Pos.Combine ({left.ToString ()}{(add ? '+' : '-')}{right.ToString ()})"; + return $"Pos.Combine({left.ToString ()}{(add ? '+' : '-')}{right.ToString ()})"; } } @@ -274,7 +274,7 @@ namespace Terminal.Gui { } internal override int Anchor (int width) { - switch (side) { + switch(side) { case 0: return Target.Frame.X; case 1: return Target.Frame.Y; case 2: return Target.Frame.Right; @@ -287,14 +287,14 @@ namespace Terminal.Gui { public override string ToString () { string tside; - switch (side) { + switch(side) { case 0: tside = "x"; break; case 1: tside = "y"; break; case 2: tside = "right"; break; case 3: tside = "bottom"; break; default: tside = "unknown"; break; } - return $"Pos.View(side={tside}, target={Target.ToString ()}"; + return $"Pos.View(side={tside}, target={Target.ToString ()})"; } } @@ -538,9 +538,20 @@ namespace Terminal.Gui { this.side = side; } + public override string ToString () + { + string tside; + switch(side) { + case 0: tside = "Height"; break; + case 1: tside = "Width"; break; + default: tside = "unknown"; break; + } + return $"DimView(side={tside}, target={Target.ToString ()})"; + } + internal override int Anchor (int width) { - switch (side) { + switch(side) { case 0: return Target.Frame.Height; case 1: return Target.Frame.Width; default: diff --git a/UnitTests/ApplicationTests.cs b/UnitTests/ApplicationTests.cs index 1676cdb93..aaf84de67 100644 --- a/UnitTests/ApplicationTests.cs +++ b/UnitTests/ApplicationTests.cs @@ -5,7 +5,7 @@ using Terminal.Gui; using Xunit; // Alais Console to MockConsole so we don't accidentally use Console -using Console = Terminal.Gui.MockConsole; +using Console = Terminal.Gui.FakeConsole; // Since Application is a singleton we can't run tests in parallel [assembly: CollectionBehavior (DisableTestParallelization = true)] @@ -13,7 +13,7 @@ using Console = Terminal.Gui.MockConsole; namespace Terminal.Gui { public class ApplicationTests { [Fact] - public void TestInitShutdown () + public void Init_Shutdown_Cleans_Up () { Assert.Null (Application.Current); Assert.Null (Application.CurrentView); @@ -21,7 +21,7 @@ namespace Terminal.Gui { Assert.Null (Application.MainLoop); Assert.Null (Application.Driver); - Application.Init (new MockDriver ()); + Application.Init (new FakeDriver ()); Assert.NotNull (Application.Current); Assert.NotNull (Application.CurrentView); Assert.NotNull (Application.Top); @@ -41,7 +41,7 @@ namespace Terminal.Gui { } [Fact] - public void TestNewRunState () + public void RunState_Dispose_Cleans_Up () { var rs = new Application.RunState (null); Assert.NotNull (rs); @@ -58,10 +58,10 @@ namespace Terminal.Gui { } [Fact] - public void TestBeginEnd () + public void Begin_End_Cleana_Up () { // Setup Mock driver - Application.Init (new MockDriver ()); + Application.Init (new FakeDriver ()); Assert.NotNull (Application.Driver); // Test null Toplevel @@ -83,10 +83,10 @@ namespace Terminal.Gui { } [Fact] - public void TestRequestStop () + public void RequestStop_Stops () { // Setup Mock driver - Application.Init (new MockDriver ()); + Application.Init (new FakeDriver ()); Assert.NotNull (Application.Driver); var top = new Toplevel (); @@ -109,10 +109,10 @@ namespace Terminal.Gui { } [Fact] - public void TestRunningFalse () + public void RunningFalse_Stops () { // Setup Mock driver - Application.Init (new MockDriver ()); + Application.Init (new FakeDriver ()); Assert.NotNull (Application.Driver); var top = new Toplevel (); @@ -136,10 +136,10 @@ namespace Terminal.Gui { [Fact] - public void TestKeyUp () + public void KeyUp_Event () { // Setup Mock driver - Application.Init (new MockDriver ()); + Application.Init (new FakeDriver ()); Assert.NotNull (Application.Driver); // Setup some fake kepresses (This) diff --git a/UnitTests/ConsoleDriverTests.cs b/UnitTests/ConsoleDriverTests.cs index b2b040e70..d551d2fc3 100644 --- a/UnitTests/ConsoleDriverTests.cs +++ b/UnitTests/ConsoleDriverTests.cs @@ -3,14 +3,14 @@ using Terminal.Gui; using Xunit; // Alais Console to MockConsole so we don't accidentally use Console -using Console = Terminal.Gui.MockConsole; +using Console = Terminal.Gui.FakeConsole; namespace Terminal.Gui { public class ConsoleDriverTests { [Fact] - public void TestInit () + public void Init_Inits () { - var driver = new MockDriver (); + var driver = new FakeDriver (); driver.Init (() => { }); Assert.Equal (80, Console.BufferWidth); @@ -23,15 +23,15 @@ namespace Terminal.Gui { } [Fact] - public void TestEnd () + public void End_Cleans_Up () { - var driver = new MockDriver (); + var driver = new FakeDriver (); driver.Init (() => { }); - MockConsole.ForegroundColor = ConsoleColor.Red; + FakeConsole.ForegroundColor = ConsoleColor.Red; Assert.Equal (ConsoleColor.Red, Console.ForegroundColor); - MockConsole.BackgroundColor = ConsoleColor.Green; + FakeConsole.BackgroundColor = ConsoleColor.Green; Assert.Equal (ConsoleColor.Green, Console.BackgroundColor); driver.Move (2, 3); Assert.Equal (2, Console.CursorLeft); @@ -45,9 +45,9 @@ namespace Terminal.Gui { } [Fact] - public void TestSetColors () + public void SetColors_Changes_Colors () { - var driver = new MockDriver (); + var driver = new FakeDriver (); driver.Init (() => { }); Assert.Equal (ConsoleColor.Gray, Console.ForegroundColor); Assert.Equal (ConsoleColor.Black, Console.BackgroundColor); diff --git a/UnitTests/DimTests.cs b/UnitTests/DimTests.cs new file mode 100644 index 000000000..f0c0150e5 --- /dev/null +++ b/UnitTests/DimTests.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using Terminal.Gui; +using Xunit; + +// Alais Console to MockConsole so we don't accidentally use Console +using Console = Terminal.Gui.FakeConsole; + +namespace Terminal.Gui { + public class DimTests { + [Fact] + public void New_Works () + { + var dim = new Dim (); + Assert.Equal ("Terminal.Gui.Dim", dim.ToString ()); + } + + [Fact] + public void Sized_SetsValue () + { + var dim = Dim.Sized (0); + Assert.Equal ("Dim.Absolute(0)", dim.ToString ()); + + int testVal = 5; + dim = Dim.Sized (testVal); + Assert.Equal ($"Dim.Absolute({testVal})", dim.ToString ()); + } + + // TODO: Other Dim.Sized tests (e.g. Equal?) + + [Fact] + public void Width_SetsValue () + { + var dim = Dim.Width (null); + Assert.Throws (() => dim.ToString ()); + + var testVal = Rect.Empty; + testVal = Rect.Empty; + dim = Dim.Width (new View (testVal)); + Assert.Equal ($"DimView(side=Width, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", dim.ToString ()); + + testVal = new Rect (1, 2, 3, 4); + dim = Dim.Width (new View (testVal)); + Assert.Equal ($"DimView(side=Width, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", dim.ToString ()); + } + + // TODO: Other Dim.Width tests (e.g. Equal?) + + [Fact] + public void Height_SetsValue () + { + var dim = Dim.Height (null); + Assert.Throws (() => dim.ToString ()); + + var testVal = Rect.Empty; + testVal = Rect.Empty; + dim = Dim.Height (new View (testVal)); + Assert.Equal ($"DimView(side=Height, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", dim.ToString ()); + + testVal = new Rect (1, 2, 3, 4); + dim = Dim.Height (new View (testVal)); + Assert.Equal ($"DimView(side=Height, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", dim.ToString ()); + } + + // TODO: Other Dim.Height tests (e.g. Equal?) + + [Fact] + public void Fill_SetsValue () + { + var testMargin = 0; + var dim = Dim.Fill (); + Assert.Equal ($"Dim.Fill(margin={testMargin})", dim.ToString()); + + testMargin = 0; + dim = Dim.Fill (testMargin); + Assert.Equal ($"Dim.Fill(margin={testMargin})", dim.ToString ()); + + testMargin = 5; + dim = Dim.Fill (testMargin); + Assert.Equal ($"Dim.Fill(margin={testMargin})", dim.ToString ()); + } + + + [Fact] + public void Fill_Equal() + { + var margin1 = 0; + var margin2 = 0; + var dim1 = Dim.Fill (margin1); + var dim2 = Dim.Fill (margin2); + Assert.Equal (dim1, dim2); + } + + [Fact] + public void Percent_SetsValue () + { + var dim = Dim.Percent (0); + Assert.Equal ("Dim.Factor(0)", dim.ToString ()); + dim = Dim.Percent (0.5F); + Assert.Equal ("Dim.Factor(0.005)", dim.ToString ()); + dim = Dim.Percent (100); + Assert.Equal ("Dim.Factor(1)", dim.ToString ()); + } + + // TODO: Other Dim.Percent tests (e.g. Equal?) + + [Fact] + public void Percent_ThrowsOnIvalid() + { + var dim = Dim.Percent (0); + Assert.Throws (() => dim = Dim.Percent (-1)); + Assert.Throws (() => dim = Dim.Percent (101)); + Assert.Throws (() => dim = Dim.Percent (100.0001F)); + Assert.Throws (() => dim = Dim.Percent (1000001)); + } + + // TODO: Test operators + } +} diff --git a/UnitTests/PosTests.cs b/UnitTests/PosTests.cs index 175ed3967..f3d02f103 100644 --- a/UnitTests/PosTests.cs +++ b/UnitTests/PosTests.cs @@ -7,29 +7,47 @@ using Terminal.Gui; using Xunit; // Alais Console to MockConsole so we don't accidentally use Console -using Console = Terminal.Gui.MockConsole; +using Console = Terminal.Gui.FakeConsole; namespace Terminal.Gui { - public class DimPosTests { + public class PosTests { [Fact] - public void TestNew () + public void New_Works () { var pos = new Pos (); Assert.Equal ("Terminal.Gui.Pos", pos.ToString ()); } [Fact] - public void TestAnchorEnd () + public void AnchorEnd_SetsValue () { + var n = 0; var pos = Pos.AnchorEnd (); - Assert.Equal ("Pos.AnchorEnd(margin=0)", pos.ToString ()); + Assert.Equal ($"Pos.AnchorEnd(margin={n})", pos.ToString ()); - pos = Pos.AnchorEnd (5); - Assert.Equal ("Pos.AnchorEnd(margin=5)", pos.ToString ()); + n = 5; + pos = Pos.AnchorEnd (n); + Assert.Equal ($"Pos.AnchorEnd(margin={n})", pos.ToString ()); } [Fact] - public void TestAt () + public void AnchorEnd_Equal () + { + var n1 = 0; + var n2 = 0; + + var pos1 = Pos.AnchorEnd (n1); + var pos2 = Pos.AnchorEnd (n2); + Assert.Equal (pos1, pos2); + + // Test inequality + n2 = 5; + pos2 = Pos.AnchorEnd (n2); + Assert.NotEqual (pos1, pos2); + } + + [Fact] + public void At_SetsValue () { var pos = Pos.At (0); Assert.Equal ("Pos.Absolute(0)", pos.ToString ()); @@ -41,79 +59,125 @@ namespace Terminal.Gui { } [Fact] - public void TestLeft () + public void At_Equal () + { + var n1 = 0; + var n2 = 0; + + var pos1 = Pos.At (n1); + var pos2 = Pos.At (n2); + // BUGBUG: Pos should implement equality and this should change to Equal + Assert.NotEqual (pos1, pos2); + } + + [Fact] + public void Left_SetsValue () { var pos = Pos.Left (null); Assert.Throws (() => pos.ToString ()); + var testVal = Rect.Empty; pos = Pos.Left (new View ()); - Assert.Equal ("Pos.View(side=x, target=View()({X=0,Y=0,Width=0,Height=0})", pos.ToString ()); + Assert.Equal ($"Pos.View(side=x, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); - pos = Pos.Left (new View (new Rect (1, 2, 3, 4))); - Assert.Equal ("Pos.View(side=x, target=View()({X=1,Y=2,Width=3,Height=4})", pos.ToString ()); + pos = Pos.Left (new View (testVal)); + Assert.Equal ($"Pos.View(side=x, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); + + testVal = new Rect (1, 2, 3, 4); + pos = Pos.Left (new View (testVal)); + Assert.Equal ($"Pos.View(side=x, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); } + // TODO: Test Left, Top, Right bottom Equal + [Fact] - public void TestTop () + public void Top_SetsValue () { var pos = Pos.Top (null); Assert.Throws (() => pos.ToString ()); + var testVal = Rect.Empty; pos = Pos.Top (new View ()); - Assert.Equal ("Pos.View(side=y, target=View()({X=0,Y=0,Width=0,Height=0})", pos.ToString ()); + Assert.Equal ($"Pos.View(side=y, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); - pos = Pos.Top (new View (new Rect (1, 2, 3, 4))); - Assert.Equal ("Pos.View(side=y, target=View()({X=1,Y=2,Width=3,Height=4})", pos.ToString ()); + testVal = new Rect (1, 2, 3, 4); + pos = Pos.Top (new View (testVal)); + Assert.Equal ($"Pos.View(side=y, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); } [Fact] - public void TestRight () + public void Right_SetsValue () { var pos = Pos.Right (null); Assert.Throws (() => pos.ToString ()); + var testVal = Rect.Empty; pos = Pos.Right (new View ()); - Assert.Equal ("Pos.View(side=right, target=View()({X=0,Y=0,Width=0,Height=0})", pos.ToString ()); + Assert.Equal ($"Pos.View(side=right, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); - pos = Pos.Right (new View (new Rect (1, 2, 3, 4))); - Assert.Equal ("Pos.View(side=right, target=View()({X=1,Y=2,Width=3,Height=4})", pos.ToString ()); + testVal = Rect.Empty; + pos = Pos.Right (new View (testVal)); + Assert.Equal ($"Pos.View(side=right, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); + + testVal = new Rect (1, 2, 3, 4); + pos = Pos.Right (new View (testVal)); + Assert.Equal ($"Pos.View(side=right, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); } [Fact] - public void TestBottom () + public void Bottom_SetsValue () { var pos = Pos.Bottom (null); Assert.Throws (() => pos.ToString ()); + var testVal = Rect.Empty; pos = Pos.Bottom (new View ()); - Assert.Equal ("Pos.View(side=bottom, target=View()({X=0,Y=0,Width=0,Height=0})", pos.ToString ()); + Assert.Equal ($"Pos.View(side=bottom, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); - pos = Pos.Bottom (new View (new Rect (1, 2, 3, 4))); - Assert.Equal ("Pos.View(side=bottom, target=View()({X=1,Y=2,Width=3,Height=4})", pos.ToString ()); + testVal = Rect.Empty; + pos = Pos.Bottom (new View (testVal)); + Assert.Equal ($"Pos.View(side=bottom, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); + + testVal = new Rect (1, 2, 3, 4); + pos = Pos.Bottom (new View (testVal)); + Assert.Equal ($"Pos.View(side=bottom, target=View()({{X={testVal.X},Y={testVal.Y},Width={testVal.Width},Height={testVal.Height}}}))", pos.ToString ()); //Assert.Throws (() => pos = Pos.Bottom (new View (new Rect (0, 0, -3, -4)))); - } [Fact] - public void TestCenter () + public void Center_SetsValue () { var pos = Pos.Center (); Assert.Equal ("Pos.Center", pos.ToString ()); } [Fact] - public void TestPercent () + public void Percent_SetsValue () { var pos = Pos.Percent (0); Assert.Equal ("Pos.Factor(0)", pos.ToString ()); - pos = Pos.Percent (0.5F); Assert.Equal ("Pos.Factor(0.005)", pos.ToString ()); - pos = Pos.Percent (100); Assert.Equal ("Pos.Factor(1)", pos.ToString ()); + } + [Fact] + public void Percent_Equal () + { + var n1 = 0; + var n2 = 0; + var pos1 = Pos.Percent (n1); + var pos2 = Pos.Percent (n2); + // BUGBUG: Pos.Percent should support equality + Assert.NotEqual (pos1, pos2); + } + + [Fact] + public void Percent_ThrowsOnIvalid () + { + var pos = Pos.Percent (0); Assert.Throws (() => pos = Pos.Percent (-1)); Assert.Throws (() => pos = Pos.Percent (101)); Assert.Throws (() => pos = Pos.Percent (100.0001F)); @@ -121,7 +185,5 @@ namespace Terminal.Gui { } // TODO: Test operators - - // TODO: Test Dim } } diff --git a/UnitTests/ResponderTests.cs b/UnitTests/ResponderTests.cs index 3d8680604..1e662a608 100644 --- a/UnitTests/ResponderTests.cs +++ b/UnitTests/ResponderTests.cs @@ -5,12 +5,12 @@ using Terminal.Gui; using Xunit; // Alais Console to MockConsole so we don't accidentally use Console -using Console = Terminal.Gui.MockConsole; +using Console = Terminal.Gui.FakeConsole; namespace Terminal.Gui { public class ResponderTests { [Fact] - public void TestNew () + public void New_Initializes () { var r = new Responder (); Assert.NotNull (r); @@ -20,7 +20,7 @@ namespace Terminal.Gui { } [Fact] - public void TestMethods () + public void New_Methods_Return_False () { var r = new Responder (); diff --git a/UnitTests/ViewTests.cs b/UnitTests/ViewTests.cs index 5fe17f35f..059544090 100644 --- a/UnitTests/ViewTests.cs +++ b/UnitTests/ViewTests.cs @@ -7,12 +7,12 @@ using Terminal.Gui; using Xunit; // Alais Console to MockConsole so we don't accidentally use Console -using Console = Terminal.Gui.MockConsole; +using Console = Terminal.Gui.FakeConsole; namespace Terminal.Gui { public class ViewTests { [Fact] - public void TestNew () + public void New_Initializes () { // Parameterless var r = new View (); @@ -90,7 +90,7 @@ namespace Terminal.Gui { } [Fact] - public void TestMethods () + public void New_Methods_Return_False () { var r = new View ();