|
@@ -6,10 +6,19 @@ using System.Threading.Tasks;
|
|
|
using Terminal.Gui;
|
|
|
using Terminal.Gui.Trees;
|
|
|
using Xunit;
|
|
|
+using Xunit.Abstractions;
|
|
|
|
|
|
namespace Terminal.Gui.Views {
|
|
|
|
|
|
public class TreeViewTests {
|
|
|
+
|
|
|
+ readonly ITestOutputHelper output;
|
|
|
+
|
|
|
+ public TreeViewTests (ITestOutputHelper output)
|
|
|
+ {
|
|
|
+ this.output = output;
|
|
|
+ }
|
|
|
+
|
|
|
#region Test Setup Methods
|
|
|
class Factory {
|
|
|
public Car [] Cars { get; set; }
|
|
@@ -712,6 +721,77 @@ namespace Terminal.Gui.Views {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ [Fact, AutoInitShutdown]
|
|
|
+ public void TestTreeViewColor()
|
|
|
+ {
|
|
|
+ var tv = new TreeView{Width = 20,Height = 10};
|
|
|
+
|
|
|
+ var n1 = new TreeNode("normal");
|
|
|
+ var n1_1 = new TreeNode("pink");
|
|
|
+ var n1_2 = new TreeNode("normal");
|
|
|
+ n1.Children.Add(n1_1);
|
|
|
+ n1.Children.Add(n1_2);
|
|
|
+
|
|
|
+ var n2 = new TreeNode("pink");
|
|
|
+ tv.AddObject(n1);
|
|
|
+ tv.AddObject(n2);
|
|
|
+ tv.Expand(n1);
|
|
|
+
|
|
|
+ var pink = new Attribute(Color.Magenta,Color.Black);
|
|
|
+ var hotpink = new Attribute(Color.BrightMagenta,Color.Black);
|
|
|
+
|
|
|
+ tv.ColorScheme = new ColorScheme();
|
|
|
+ tv.Redraw(tv.Bounds);
|
|
|
+
|
|
|
+ // Normal drawing of the tree view
|
|
|
+ GraphViewTests.AssertDriverContentsAre(
|
|
|
+@"├-normal
|
|
|
+│ ├─pink
|
|
|
+│ └─normal
|
|
|
+└─pink
|
|
|
+",output);
|
|
|
+ // Should all be the same color
|
|
|
+ GraphViewTests.AssertDriverColorsAre(
|
|
|
+@"00000000
|
|
|
+00000000
|
|
|
+0000000000
|
|
|
+000000
|
|
|
+",
|
|
|
+ new []{tv.ColorScheme.Normal,pink});
|
|
|
+
|
|
|
+ // create a new color scheme
|
|
|
+ var pinkScheme = new ColorScheme
|
|
|
+ {
|
|
|
+ Normal = pink,
|
|
|
+ Focus = hotpink
|
|
|
+ };
|
|
|
+
|
|
|
+ // and a delegate that uses the pink color scheme
|
|
|
+ // for nodes "pink"
|
|
|
+ tv.ColorGetter = (n)=> n.Text.Equals("pink") ? pinkScheme : null;
|
|
|
+
|
|
|
+ // redraw now that the custom color
|
|
|
+ // delegate is registered
|
|
|
+ tv.Redraw(tv.Bounds);
|
|
|
+
|
|
|
+ // Same text
|
|
|
+ GraphViewTests.AssertDriverContentsAre(
|
|
|
+@"├-normal
|
|
|
+│ ├─pink
|
|
|
+│ └─normal
|
|
|
+└─pink
|
|
|
+",output);
|
|
|
+ // but now the item (only not lines) appear
|
|
|
+ // in pink when they are the word "pink"
|
|
|
+ GraphViewTests.AssertDriverColorsAre(
|
|
|
+@"00000000
|
|
|
+00001111
|
|
|
+0000000000
|
|
|
+001111
|
|
|
+",
|
|
|
+ new []{tv.ColorScheme.Normal,pink});
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Test object which considers for equality only <see cref="Name"/>
|
|
|
/// </summary>
|