Skip to content

Commit 6c1b90a

Browse files
author
tznind
committed
Add more tests for LinearRange
1 parent 9f670d4 commit 6c1b90a

1 file changed

Lines changed: 113 additions & 7 deletions

File tree

tests/SliderTests.cs

Lines changed: 113 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,104 @@
1-
using System.Text;
1+
using System.Collections;
2+
using System.Text;
23
using Terminal.Gui.ViewBase;
34

45

56
namespace 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

Comments
 (0)