Skip to content

Commit 3a7c334

Browse files
author
Adam Smith-Platts
committed
[#675] Added test cases to handle passing null or whitespace to Values() constructors
Presently failing, next commit addresses bug.
1 parent 2d4f207 commit 3a7c334

File tree

6 files changed

+132
-0
lines changed

6 files changed

+132
-0
lines changed

Tests/Schema.NET.Test/Values2Test.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,23 @@ public void Constructor_Items_HasAllItems()
4343
Assert.Equal(new List<object>() { 1, "Foo" }, values.Cast<object>().ToList());
4444
}
4545

46+
[Fact]
47+
public void Constructor_StringItems_NullOrWhitespaceDoesntHaveValue()
48+
{
49+
object[] nullOrWhitespaceValues = new[]
50+
{
51+
string.Empty,
52+
null!,
53+
"\u2028 \u2029 \u0009 \u000A \u000B \u000C \u000D \u0085",
54+
};
55+
var values = new Values<int, string>(nullOrWhitespaceValues);
56+
57+
Assert.False(values.HasValue1);
58+
Assert.Empty(values.Value1);
59+
Assert.False(values.HasValue2, $"{nameof(values.HasValue2)}: Expected: False, Actual: True");
60+
AssertEx.Empty(values.Value2);
61+
}
62+
4663
[Fact]
4764
public void Constructor_NullList_ThrowsArgumentNullException() =>
4865
Assert.Throws<ArgumentNullException>(() => new Values<int, string>((List<object>)null!));

Tests/Schema.NET.Test/Values3Test.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,25 @@ public void Constructor_Items_HasAllItems()
5959
Assert.Equal(new List<object>() { 1, "Foo", DayOfWeek.Friday }, values.Cast<object>().ToList());
6060
}
6161

62+
[Fact]
63+
public void Constructor_StringItems_NullOrWhitespaceDoesntHaveValue()
64+
{
65+
object[] nullOrWhitespaceValues = new[]
66+
{
67+
string.Empty,
68+
null!,
69+
"\u2028 \u2029 \u0009 \u000A \u000B \u000C \u000D \u0085",
70+
};
71+
var values = new Values<int, string, DayOfWeek>(nullOrWhitespaceValues);
72+
73+
Assert.False(values.HasValue1);
74+
Assert.Empty(values.Value1);
75+
Assert.False(values.HasValue2, $"{nameof(values.HasValue2)}: Expected: False, Actual: True");
76+
AssertEx.Empty(values.Value2);
77+
Assert.False(values.HasValue3);
78+
Assert.Empty(values.Value3);
79+
}
80+
6281
[Fact]
6382
public void Constructor_NullList_ThrowsArgumentNullException() =>
6483
Assert.Throws<ArgumentNullException>(() => new Values<int, string, DayOfWeek>((List<object>)null!));

Tests/Schema.NET.Test/Values4Test.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,27 @@ public void Constructor_Items_HasAllItems()
8181
values.Cast<object>().ToList());
8282
}
8383

84+
[Fact]
85+
public void Constructor_StringItems_NullOrWhitespaceDoesntHaveValue()
86+
{
87+
object[] nullOrWhitespaceValues = new[]
88+
{
89+
string.Empty,
90+
null!,
91+
"\u2028 \u2029 \u0009 \u000A \u000B \u000C \u000D \u0085",
92+
};
93+
var values = new Values<int, string, DayOfWeek, Person>(nullOrWhitespaceValues);
94+
95+
Assert.False(values.HasValue1);
96+
Assert.Empty(values.Value1);
97+
Assert.False(values.HasValue2, $"{nameof(values.HasValue2)}: Expected: False, Actual: True");
98+
AssertEx.Empty(values.Value2);
99+
Assert.False(values.HasValue3);
100+
Assert.Empty(values.Value3);
101+
Assert.False(values.HasValue4);
102+
Assert.Empty(values.Value4);
103+
}
104+
84105
[Fact]
85106
public void Constructor_NullList_ThrowsArgumentNullException() =>
86107
Assert.Throws<ArgumentNullException>(() => new Values<int, string, DayOfWeek, Person>((List<object>)null!));

Tests/Schema.NET.Test/Values5Test.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,29 @@ public void Constructor_Items_HasAllItems()
120120
values.Cast<object>().ToList());
121121
}
122122

123+
[Fact]
124+
public void Constructor_StringItems_NullOrWhitespaceDoesntHaveValue()
125+
{
126+
object[] nullOrWhitespaceValues = new[]
127+
{
128+
string.Empty,
129+
null!,
130+
"\u2028 \u2029 \u0009 \u000A \u000B \u000C \u000D \u0085",
131+
};
132+
var values = new Values<int, string, DayOfWeek, Person, DateTime>(nullOrWhitespaceValues);
133+
134+
Assert.False(values.HasValue1);
135+
Assert.Empty(values.Value1);
136+
Assert.False(values.HasValue2, $"{nameof(values.HasValue2)}: Expected: False, Actual: True");
137+
AssertEx.Empty(values.Value2);
138+
Assert.False(values.HasValue3);
139+
Assert.Empty(values.Value3);
140+
Assert.False(values.HasValue4);
141+
Assert.Empty(values.Value4);
142+
Assert.False(values.HasValue5);
143+
Assert.Empty(values.Value5);
144+
}
145+
123146
[Fact]
124147
public void Constructor_NullList_ThrowsArgumentNullException() =>
125148
Assert.Throws<ArgumentNullException>(() => new Values<int, string, DayOfWeek, Person, DateTime>((List<object>)null!));

Tests/Schema.NET.Test/Values6Test.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,31 @@ public void Constructor_Items_HasAllItems()
153153
values.Cast<object>().ToList());
154154
}
155155

156+
[Fact]
157+
public void Constructor_StringItems_NullOrWhitespaceDoesntHaveValue()
158+
{
159+
object[] nullOrWhitespaceValues = new[]
160+
{
161+
string.Empty,
162+
null!,
163+
"\u2028 \u2029 \u0009 \u000A \u000B \u000C \u000D \u0085",
164+
};
165+
var values = new Values<int, string, DayOfWeek, Person, DateTime, bool>(nullOrWhitespaceValues);
166+
167+
Assert.False(values.HasValue1);
168+
Assert.Empty(values.Value1);
169+
Assert.False(values.HasValue2, $"{nameof(values.HasValue2)}: Expected: False, Actual: True");
170+
AssertEx.Empty(values.Value2);
171+
Assert.False(values.HasValue3);
172+
Assert.Empty(values.Value3);
173+
Assert.False(values.HasValue4);
174+
Assert.Empty(values.Value4);
175+
Assert.False(values.HasValue5);
176+
Assert.Empty(values.Value5);
177+
Assert.False(values.HasValue6);
178+
Assert.Empty(values.Value6);
179+
}
180+
156181
[Fact]
157182
public void Constructor_NullList_ThrowsArgumentNullException() =>
158183
Assert.Throws<ArgumentNullException>(() => new Values<int, string, DayOfWeek, Person, DateTime, bool>((List<object>)null!));

Tests/Schema.NET.Test/Values7Test.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,33 @@ public void Constructor_Items_HasAllItems()
190190
values.Cast<object>().ToList());
191191
}
192192

193+
[Fact]
194+
public void Constructor_StringItems_NullOrWhitespaceDoesntHaveValue()
195+
{
196+
object[] nullOrWhitespaceValues = new[]
197+
{
198+
string.Empty,
199+
null!,
200+
"\u2028 \u2029 \u0009 \u000A \u000B \u000C \u000D \u0085",
201+
};
202+
var values = new Values<int, string, DayOfWeek, Person, DateTime, bool, TimeSpan>(nullOrWhitespaceValues);
203+
204+
Assert.False(values.HasValue1);
205+
Assert.Empty(values.Value1);
206+
Assert.False(values.HasValue2, $"{nameof(values.HasValue2)}: Expected: False, Actual: True");
207+
AssertEx.Empty(values.Value2);
208+
Assert.False(values.HasValue3);
209+
Assert.Empty(values.Value3);
210+
Assert.False(values.HasValue4);
211+
Assert.Empty(values.Value4);
212+
Assert.False(values.HasValue5);
213+
Assert.Empty(values.Value5);
214+
Assert.False(values.HasValue6);
215+
Assert.Empty(values.Value6);
216+
Assert.False(values.HasValue7);
217+
Assert.Empty(values.Value7);
218+
}
219+
193220
[Fact]
194221
public void Constructor_NullList_ThrowsArgumentNullException() =>
195222
Assert.Throws<ArgumentNullException>(() => new Values<int, string, DayOfWeek, Person, DateTime, bool, TimeSpan>((List<object>)null!));

0 commit comments

Comments
 (0)