1- using System . Text ;
1+ using System . Collections ;
2+ using System . Text ;
23using Terminal . Gui . ViewBase ;
34
45
56namespace UnitTests
67{
78 internal class SliderTests : Tests
89 {
10+ private static IEnumerable < TestCaseData > LinearRange_SupportedTTypes =>
11+ TTypes . GetSupportedTTypesForGenericViewOfType ( typeof ( LinearRange < > ) )
12+ . Distinct ( )
13+ . Select ( t => new TestCaseData ( t ) . SetName ( $ "Create_LinearRange_HasOptions<{ t . Name } >") ) ;
14+
15+ [ Test ]
16+ [ TestCaseSource ( nameof ( LinearRange_SupportedTTypes ) ) ]
17+ public void Create_LinearRange_AllSupportedTTypes_HaveAtLeastTwoOptions ( Type tType )
18+ {
19+ var linearRangeType = typeof ( LinearRange < > ) . MakeGenericType ( tType ) ;
20+
21+ var method = typeof ( ViewFactory ) . GetMethods ( )
22+ . Single ( m => m . Name == "Create" && m . IsGenericMethodDefinition ) ;
23+ var concreteMethod = method . MakeGenericMethod ( linearRangeType ) ;
24+ var view = ( View ) concreteMethod . Invoke ( null , new object ? [ ] { null , null , null } ) ! ;
25+
26+ var optionsProp = linearRangeType . GetProperty ( "Options" ) ;
27+ var options = optionsProp ! . GetValue ( view ) as IList ;
28+
29+ Assert . That ( options , Is . Not . Null , $ "Options property was null for LinearRange<{ tType . Name } >") ;
30+ Assert . That ( options ! . Count , Is . GreaterThanOrEqualTo ( 2 ) , $ "LinearRange<{ tType . Name } > had fewer than 2 options after ViewFactory.Create") ;
31+ }
32+
33+ [ Test ]
34+ public void TestRoundTrip_LinearRange_Bool_PreservesDefaultOptions ( )
35+ {
36+ var sliderIn = RoundTrip < Dialog , LinearRange < bool > > ( ( d , v ) =>
37+ {
38+ Assert . That ( v . Options . Count , Is . EqualTo ( 2 ) ) ;
39+ } , out var viewOut ) ;
40+
41+ Assert . That ( sliderIn . Options . Count , Is . EqualTo ( viewOut . Options . Count ) ) ;
42+ for ( int i = 0 ; i < viewOut . Options . Count ; i ++ )
43+ {
44+ Assert . That ( sliderIn . Options [ i ] . Legend , Is . EqualTo ( viewOut . Options [ i ] . Legend ) ) ;
45+ Assert . That ( sliderIn . Options [ i ] . LegendAbbr , Is . EqualTo ( viewOut . Options [ i ] . LegendAbbr ) ) ;
46+ Assert . That ( sliderIn . Options [ i ] . Data , Is . EqualTo ( viewOut . Options [ i ] . Data ) ) ;
47+ }
48+ }
49+
50+ [ Test ]
51+ public void TestRoundTrip_LinearRange_Int_PreservesDefaultOptions ( )
52+ {
53+ var sliderIn = RoundTrip < Dialog , LinearRange < int > > ( ( d , v ) =>
54+ {
55+ Assert . That ( v . Options . Count , Is . GreaterThanOrEqualTo ( 2 ) ) ;
56+ } , out var viewOut ) ;
57+
58+ Assert . That ( sliderIn . Options . Count , Is . EqualTo ( viewOut . Options . Count ) ) ;
59+ for ( int i = 0 ; i < viewOut . Options . Count ; i ++ )
60+ {
61+ Assert . That ( sliderIn . Options [ i ] . Legend , Is . EqualTo ( viewOut . Options [ i ] . Legend ) ) ;
62+ Assert . That ( sliderIn . Options [ i ] . LegendAbbr , Is . EqualTo ( viewOut . Options [ i ] . LegendAbbr ) ) ;
63+ Assert . That ( sliderIn . Options [ i ] . Data , Is . EqualTo ( viewOut . Options [ i ] . Data ) ) ;
64+ }
65+ }
66+
67+ [ Test ]
68+ public void TestRoundTrip_LinearRange_Double_PreservesDefaultOptions ( )
69+ {
70+ var sliderIn = RoundTrip < Dialog , LinearRange < double > > ( ( d , v ) =>
71+ {
72+ Assert . That ( v . Options . Count , Is . GreaterThanOrEqualTo ( 2 ) ) ;
73+ } , out var viewOut ) ;
74+
75+ Assert . That ( sliderIn . Options . Count , Is . EqualTo ( viewOut . Options . Count ) ) ;
76+ for ( int i = 0 ; i < viewOut . Options . Count ; i ++ )
77+ {
78+ Assert . That ( sliderIn . Options [ i ] . Legend , Is . EqualTo ( viewOut . Options [ i ] . Legend ) ) ;
79+ Assert . That ( sliderIn . Options [ i ] . LegendAbbr , Is . EqualTo ( viewOut . Options [ i ] . LegendAbbr ) ) ;
80+ Assert . That ( sliderIn . Options [ i ] . Data , Is . EqualTo ( viewOut . Options [ i ] . Data ) ) ;
81+ }
82+ }
83+
84+ [ Test ]
85+ public void TestRoundTrip_LinearRange_String_PreservesDefaultOptions ( )
86+ {
87+ var sliderIn = RoundTrip < Dialog , LinearRange < string > > ( ( d , v ) =>
88+ {
89+ Assert . That ( v . Options . Count , Is . EqualTo ( 3 ) ) ;
90+ } , out var viewOut ) ;
91+
92+ Assert . That ( sliderIn . Options . Count , Is . EqualTo ( viewOut . Options . Count ) ) ;
93+ for ( int i = 0 ; i < viewOut . Options . Count ; i ++ )
94+ {
95+ Assert . That ( sliderIn . Options [ i ] . Legend , Is . EqualTo ( viewOut . Options [ i ] . Legend ) ) ;
96+ Assert . That ( sliderIn . Options [ i ] . LegendAbbr , Is . EqualTo ( viewOut . Options [ i ] . LegendAbbr ) ) ;
97+ Assert . That ( sliderIn . Options [ i ] . Data , Is . EqualTo ( viewOut . Options [ i ] . Data ) ) ;
98+ }
99+ }
100+
101+
9102 private static IEnumerable < TestCaseData > Orientation_Cases
10103 {
11104 get
@@ -20,23 +113,36 @@ private static IEnumerable<TestCaseData> Orientation_Cases
20113 [ Test ]
21114 public void TestRoundTrip_Slider_PreserveStringOptions ( )
22115 {
116+ // ViewFactory.Create gives 3 default options; adjust adds 2 more = 5 total
23117 var sliderIn = RoundTrip < Dialog , LinearRange < string > > ( ( d , v ) =>
24118 {
25119 v . Options . Add ( new LinearRangeOption < string > ( "l1" , new Rune ( '1' ) , "Fun1" ) ) ;
26120 v . Options . Add ( new LinearRangeOption < string > { Legend = "l2" , LegendAbbr = new Rune ( '2' ) , Data = "Fun2" } ) ;
27121
28- Assert . That ( v . Options . Count , Is . EqualTo ( 2 ) ) ;
122+ Assert . That ( v . Options . Count , Is . EqualTo ( 5 ) ) ;
29123 } , out _ ) ;
30124
31- Assert . That ( sliderIn . Options . Count , Is . EqualTo ( 2 ) ) ;
125+ Assert . That ( sliderIn . Options . Count , Is . EqualTo ( 5 ) ) ;
32126
33- Assert . That ( sliderIn . Options [ 0 ] . Legend , Is . EqualTo ( "l1 " ) ) ;
127+ Assert . That ( sliderIn . Options [ 0 ] . Legend , Is . EqualTo ( "Option 1 " ) ) ;
34128 Assert . That ( sliderIn . Options [ 0 ] . LegendAbbr , Is . EqualTo ( new Rune ( '1' ) ) ) ;
35- Assert . That ( sliderIn . Options [ 0 ] . Data , Is . EqualTo ( "Fun1 " ) ) ;
129+ Assert . That ( sliderIn . Options [ 0 ] . Data , Is . EqualTo ( "Option 1 " ) ) ;
36130
37- Assert . That ( sliderIn . Options [ 1 ] . Legend , Is . EqualTo ( "l2 " ) ) ;
131+ Assert . That ( sliderIn . Options [ 1 ] . Legend , Is . EqualTo ( "Option 2 " ) ) ;
38132 Assert . That ( sliderIn . Options [ 1 ] . LegendAbbr , Is . EqualTo ( new Rune ( '2' ) ) ) ;
39- Assert . That ( sliderIn . Options [ 1 ] . Data , Is . EqualTo ( "Fun2" ) ) ;
133+ Assert . That ( sliderIn . Options [ 1 ] . Data , Is . EqualTo ( "Option 2" ) ) ;
134+
135+ Assert . That ( sliderIn . Options [ 2 ] . Legend , Is . EqualTo ( "Option 3" ) ) ;
136+ Assert . That ( sliderIn . Options [ 2 ] . LegendAbbr , Is . EqualTo ( new Rune ( '3' ) ) ) ;
137+ Assert . That ( sliderIn . Options [ 2 ] . Data , Is . EqualTo ( "Option 3" ) ) ;
138+
139+ Assert . That ( sliderIn . Options [ 3 ] . Legend , Is . EqualTo ( "l1" ) ) ;
140+ Assert . That ( sliderIn . Options [ 3 ] . LegendAbbr , Is . EqualTo ( new Rune ( '1' ) ) ) ;
141+ Assert . That ( sliderIn . Options [ 3 ] . Data , Is . EqualTo ( "Fun1" ) ) ;
142+
143+ Assert . That ( sliderIn . Options [ 4 ] . Legend , Is . EqualTo ( "l2" ) ) ;
144+ Assert . That ( sliderIn . Options [ 4 ] . LegendAbbr , Is . EqualTo ( new Rune ( '2' ) ) ) ;
145+ Assert . That ( sliderIn . Options [ 4 ] . Data , Is . EqualTo ( "Fun2" ) ) ;
40146 }
41147
42148 [ Test ]
0 commit comments