Bladeren bron

fixed WindowsDriver to work in linux unit tests

Tigger Kindel 2 jaren geleden
bovenliggende
commit
06f7a9898e

+ 1 - 0
Terminal.Gui/ConsoleDrivers/ConsoleDriver.cs

@@ -369,6 +369,7 @@ public abstract class ConsoleDriver {
 		get => _force16Colors || !SupportsTrueColor;
 		get => _force16Colors || !SupportsTrueColor;
 		set {
 		set {
 			_force16Colors = (value || !SupportsTrueColor);
 			_force16Colors = (value || !SupportsTrueColor);
+			Refresh ();
 		}
 		}
 	}
 	}
 
 

+ 4 - 2
Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs

@@ -247,8 +247,10 @@ internal class CursesDriver : ConsoleDriver {
 			}
 			}
 		}
 		}
 
 
-		Curses.move (Row, Col);
-		_window.wrefresh ();
+		if (_window != null) {
+			Curses.move (Row, Col);
+			_window.wrefresh ();
+		}
 	}
 	}
 
 
 	public Curses.Window _window;
 	public Curses.Window _window;

+ 10 - 2
Terminal.Gui/ConsoleDrivers/NetDriver.cs

@@ -671,6 +671,9 @@ internal class NetDriver : ConsoleDriver {
 
 
 	public override void UpdateScreen ()
 	public override void UpdateScreen ()
 	{
 	{
+		if (NetWinConsole == null) {
+			return;
+		}
 		if (_winSizeChanging || Console.WindowHeight < 1 || Contents.Length != Rows * Cols || Rows != Console.WindowHeight) {
 		if (_winSizeChanging || Console.WindowHeight < 1 || Contents.Length != Rows * Cols || Rows != Console.WindowHeight) {
 			return;
 			return;
 		}
 		}
@@ -862,6 +865,9 @@ internal class NetDriver : ConsoleDriver {
 	public override bool SetCursorVisibility (CursorVisibility visibility)
 	public override bool SetCursorVisibility (CursorVisibility visibility)
 	{
 	{
 		_cachedCursorVisibility = visibility;
 		_cachedCursorVisibility = visibility;
+		if (NetWinConsole == null) {
+			return visibility == CursorVisibility.Default;
+		}
 		var isVisible = Console.CursorVisible = visibility == CursorVisibility.Default;
 		var isVisible = Console.CursorVisible = visibility == CursorVisibility.Default;
 		//Console.Out.Write (isVisible ? EscSeqUtils.CSI_ShowCursor : EscSeqUtils.CSI_HideCursor);
 		//Console.Out.Write (isVisible ? EscSeqUtils.CSI_ShowCursor : EscSeqUtils.CSI_HideCursor);
 		return isVisible;
 		return isVisible;
@@ -885,8 +891,10 @@ internal class NetDriver : ConsoleDriver {
 
 
 	void SetWindowPosition (int col, int row)
 	void SetWindowPosition (int col, int row)
 	{
 	{
-		Top = Console.WindowTop;
-		Left = Console.WindowLeft;
+		if (NetWinConsole != null) {
+			Top = Console.WindowTop;
+			Left = Console.WindowLeft;
+		}
 	}
 	}
 
 
 	private bool EnsureBufferSize ()
 	private bool EnsureBufferSize ()

+ 6 - 9
UnitTests/ConsoleDrivers/ColorTests.cs

@@ -92,21 +92,18 @@ namespace Terminal.Gui.DriverTests {
 		}
 		}
 		
 		
 		[Theory]
 		[Theory]
-		[InlineData (typeof (FakeDriver), true)]
-		[InlineData (typeof (NetDriver), false)]
-		[InlineData (typeof (CursesDriver), true)]
-		[InlineData (typeof (WindowsDriver), false)] 
-		public void Force16Colors_Sets (Type driverType, bool expectedSetting)
+		[InlineData (typeof (FakeDriver))]
+		[InlineData (typeof (NetDriver))]
+		[InlineData (typeof (CursesDriver))]
+		[InlineData (typeof (WindowsDriver))] 
+		public void Force16Colors_Sets (Type driverType)
 		{
 		{
 			var driver = (ConsoleDriver)Activator.CreateInstance (driverType);
 			var driver = (ConsoleDriver)Activator.CreateInstance (driverType);
 			driver.Init (() => { });
 			driver.Init (() => { });
 
 
-			Assert.Equal (expectedSetting, driver.Force16Colors);
-
 			driver.Force16Colors = true;
 			driver.Force16Colors = true;
-
 			Assert.True (driver.Force16Colors);
 			Assert.True (driver.Force16Colors);
-
+			
 			driver.End ();
 			driver.End ();
 
 
 			// Shutdown must be called to safely clean up Application if Init has been called
 			// Shutdown must be called to safely clean up Application if Init has been called