-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathStyleTests.cs
More file actions
128 lines (95 loc) · 3.32 KB
/
Copy pathStyleTests.cs
File metadata and controls
128 lines (95 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using Xunit;
using Tedd.TUI;
namespace Tedd.TUI.Tests;
public class StyleTests
{
private class TestControl : Control
{
}
[Fact]
public void Style_Setter_AppliesValue()
{
var control = new TestControl();
var style = new Style();
style.Setters.Add(new Setter(UIElement.ForegroundProperty, TuiColor.Red));
control.Style = style;
Assert.Equal(TuiColor.Red, control.Foreground);
}
[Fact]
public void LocalValue_Overrides_StyleSetter()
{
var control = new TestControl();
control.Foreground = TuiColor.Blue; // Local value
var style = new Style();
style.Setters.Add(new Setter(UIElement.ForegroundProperty, TuiColor.Red));
control.Style = style;
// Local value should take precedence
Assert.Equal(TuiColor.Blue, control.Foreground);
}
[Fact]
public void ClearingLocalValue_Restores_StyleSetter()
{
var control = new TestControl();
control.Foreground = TuiColor.Blue; // Local value
var style = new Style();
style.Setters.Add(new Setter(UIElement.ForegroundProperty, TuiColor.Red));
control.Style = style;
// Local value should take precedence
Assert.Equal(TuiColor.Blue, control.Foreground);
// Clear local value
control.ClearValue(UIElement.ForegroundProperty);
// Style value should take over
Assert.Equal(TuiColor.Red, control.Foreground);
}
[Fact]
public void Style_Trigger_Overrides_StyleSetter()
{
var control = new TestControl();
var style = new Style();
style.Setters.Add(new Setter(UIElement.ForegroundProperty, TuiColor.Red));
var trigger = new Trigger
{
Property = UIElement.IsFocusedProperty,
Value = true
};
trigger.Setters.Add(new Setter(UIElement.ForegroundProperty, TuiColor.Yellow));
style.Triggers.Add(trigger);
control.Style = style;
// Initial state, no trigger
Assert.Equal(TuiColor.Red, control.Foreground);
// Activate trigger
control.IsFocused = true;
// Trigger should take precedence over style setter
Assert.Equal(TuiColor.Yellow, control.Foreground);
// Deactivate trigger
control.IsFocused = false;
// Should restore to style setter
Assert.Equal(TuiColor.Red, control.Foreground);
}
[Fact]
public void LocalValue_Overrides_StyleTrigger()
{
var control = new TestControl();
var style = new Style();
var trigger = new Trigger
{
Property = UIElement.IsFocusedProperty,
Value = true
};
trigger.Setters.Add(new Setter(UIElement.ForegroundProperty, TuiColor.Yellow));
style.Triggers.Add(trigger);
control.Style = style;
// Activate trigger
control.IsFocused = true;
Assert.Equal(TuiColor.Yellow, control.Foreground);
// Set local value while trigger is active
control.Foreground = TuiColor.Blue;
// Local value overrides trigger
Assert.Equal(TuiColor.Blue, control.Foreground);
// Deactivate trigger
control.IsFocused = false;
// Local value persists
Assert.Equal(TuiColor.Blue, control.Foreground);
}
}