Skip to content

Commit 20f133b

Browse files
committed
Correct Range.TryCreateExclusiveTo. Fixes #114
1 parent fe7b4b9 commit 20f133b

File tree

3 files changed

+43
-4
lines changed

3 files changed

+43
-4
lines changed

CodeJam.Main.Tests/Ranges/RangeTests.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ public static void TestRangeEquality()
160160
{
161161
int? value1 = 1;
162162
int? value2 = 2;
163+
int? value3 = 3;
163164
int? empty = null;
164165
var key = "Hello!";
165166
var key2 = "Hello2!";
@@ -188,6 +189,24 @@ public static void TestRangeEquality()
188189
IsTrue(Range.Create(value1, value2, key) == Range.Create<int?, string>(1, 2, key));
189190
IsTrue(Range.Create(value1, value2, key) != Range.Create<int?, string>(1, 2, key2));
190191
IsTrue(Range.Create(value1, value2, key) != Range.Create<int?, string>(1, 1, key));
192+
193+
IsTrue(Range.TryCreate(value1, value2) == Range.Create<int?>(1, 2));
194+
IsTrue(Range.TryCreate(value1, value2) != Range.Create(value1, 1));
195+
IsTrue(Range.TryCreate(value1, value2, key) == Range.Create<int?, string>(1, 2, key));
196+
IsTrue(Range.TryCreate(value1, value2, key) != Range.Create<int?, string>(1, 2, key2));
197+
IsTrue(Range.TryCreate(value1, value2, key) != Range.Create<int?, string>(1, 1, key));
198+
199+
IsTrue(Range.TryCreateExclusiveFrom(value1, value2) == Range.CreateExclusiveFrom<int?>(1, 2));
200+
IsTrue(Range.TryCreateExclusiveFrom(value1, value3) == Range.CreateExclusiveFrom(value1, 3));
201+
IsTrue(Range.TryCreateExclusiveFrom(value1, value3) != Range.CreateExclusiveFrom(value1, 4));
202+
IsTrue(Range.TryCreateExclusiveFrom(value1, value2, key) == Range.CreateExclusiveFrom<int?, string>(1, 2, key));
203+
IsTrue(Range.TryCreateExclusiveFrom(value1, value2, key) != Range.CreateExclusiveFrom<int?, string>(1, 2, key2));
204+
205+
IsTrue(Range.TryCreateExclusiveTo(value1, value2) == Range.CreateExclusiveTo<int?>(1, 2));
206+
IsTrue(Range.TryCreateExclusiveTo(value1, value3) == Range.CreateExclusiveTo(value1, 3));
207+
IsTrue(Range.TryCreateExclusiveTo(value1, value3) != Range.CreateExclusiveTo(value1, 4));
208+
IsTrue(Range.TryCreateExclusiveTo(value1, value2, key) == Range.CreateExclusiveTo<int?, string>(1, 2, key));
209+
IsTrue(Range.TryCreateExclusiveTo(value1, value2, key) != Range.CreateExclusiveTo<int?, string>(1, 2, key2));
191210
}
192211

193212
/// <summary>Tests the range to string.</summary>
@@ -201,28 +220,48 @@ public static void TestRangeToString()
201220
AreEqual(Range<int>.Empty.ToString(), "∅");
202221
AreEqual(Range<int>.Infinite.ToString(), "(-∞..+∞)");
203222
AreEqual(Range.Create(1, 1).ToString(), "[1..1]");
223+
AreEqual(Range.TryCreate(1, 1).ToString(), "[1..1]");
204224
AreEqual(Range.Create(1, 2).ToString(), "[1..2]");
225+
AreEqual(Range.TryCreate(1, 2).ToString(), "[1..2]");
205226
AreEqual(Range.CreateExclusive(1, 2).ToString(), "(1..2)");
227+
AreEqual(Range.TryCreateExclusive(1, 2).ToString(), "(1..2)");
206228
AreEqual(Range.CreateExclusiveFrom(1, 2).ToString(), "(1..2]");
229+
AreEqual(Range.TryCreateExclusiveFrom(1, 2).ToString(), "(1..2]");
207230
AreEqual(Range.CreateExclusiveTo(1, 2).ToString(), "[1..2)");
231+
AreEqual(Range.TryCreateExclusiveTo(1, 2).ToString(), "[1..2)");
208232
AreEqual(Range.CreateExclusive(value1, empty).ToString("000"), "(001..+∞)");
233+
AreEqual(Range.TryCreateExclusive(value1, empty).ToString("000"), "(001..+∞)");
209234

210235
AreEqual(Range.Create(RangeBoundaryFrom<int?>.Empty, RangeBoundaryTo<int?>.Empty, key).ToString(), "'Hello!':∅");
236+
AreEqual(Range.TryCreate(RangeBoundaryFrom<int?>.Empty, RangeBoundaryTo<int?>.Empty, key).ToString(), "'Hello!':∅");
211237
AreEqual(Range.Create(empty, empty, key).ToString(), "'Hello!':(-∞..+∞)");
238+
AreEqual(Range.TryCreate(empty, empty, key).ToString(), "'Hello!':(-∞..+∞)");
212239
AreEqual(Range.Create(empty, empty, (string)null).ToString(), "'':(-∞..+∞)");
240+
AreEqual(Range.TryCreate(empty, empty, (string)null).ToString(), "'':(-∞..+∞)");
213241
AreEqual(Range.Create(1, 1, key).ToString(), "'Hello!':[1..1]");
242+
AreEqual(Range.TryCreate(1, 1, key).ToString(), "'Hello!':[1..1]");
214243
AreEqual(Range.Create(1, 2, key).ToString(), "'Hello!':[1..2]");
244+
AreEqual(Range.TryCreate(1, 2, key).ToString(), "'Hello!':[1..2]");
215245
AreEqual(Range.CreateExclusive(1, 2, key).ToString(), "'Hello!':(1..2)");
246+
AreEqual(Range.TryCreateExclusive(1, 2, key).ToString(), "'Hello!':(1..2)");
216247
AreEqual(Range.CreateExclusiveFrom(1, 2, key).ToString(), "'Hello!':(1..2]");
248+
AreEqual(Range.TryCreateExclusiveFrom(1, 2, key).ToString(), "'Hello!':(1..2]");
217249
AreEqual(Range.CreateExclusiveTo(1, 2, key).ToString(), "'Hello!':[1..2)");
250+
AreEqual(Range.TryCreateExclusiveTo(1, 2, key).ToString(), "'Hello!':[1..2)");
218251
AreEqual(Range.CreateExclusive(value1, empty, 3).ToString("000"), "'3':(001..+∞)");
252+
AreEqual(Range.TryCreateExclusive(value1, empty, 3).ToString("000"), "'3':(001..+∞)");
219253
AreEqual(Range.Create((int?)1, null, key).ToString(), "'Hello!':[1..+∞)");
254+
AreEqual(Range.TryCreate((int?)1, null, key).ToString(), "'Hello!':[1..+∞)");
220255
var cultureRu = new CultureInfo("ru-RU");
221256
var cultureEn = new CultureInfo("en-US");
222257
AreEqual(Range.Create(1.5, 2.5, 1.1).ToString("000.000", cultureRu), "'1,1':[001,500..002,500]");
258+
AreEqual(Range.TryCreate(1.5, 2.5, 1.1).ToString("000.000", cultureRu), "'1,1':[001,500..002,500]");
223259
AreEqual(Range.Create(1.5, 2.5, 1.1).ToString("000.000", cultureEn), "'1.1':[001.500..002.500]");
260+
AreEqual(Range.TryCreate(1.5, 2.5, 1.1).ToString("000.000", cultureEn), "'1.1':[001.500..002.500]");
224261
AreEqual(Range.Create(1.5, 2.5, (string)null).ToString(null, cultureRu), "'':[1,5..2,5]");
262+
AreEqual(Range.TryCreate(1.5, 2.5, (string)null).ToString(null, cultureRu), "'':[1,5..2,5]");
225263
AreEqual(Range.Create(1.5, 2.5, (string)null).ToString(null, cultureEn), "'':[1.5..2.5]");
264+
AreEqual(Range.TryCreate(1.5, 2.5, (string)null).ToString(null, cultureEn), "'':[1.5..2.5]");
226265
}
227266

228267
[Test]

CodeJam.Main/Ranges/Range.FactoryMethods.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ public static Range<T> TryCreateExclusiveFrom<T>(T fromValue, T toValue) =>
9999
[Pure, MethodImpl(AggressiveInlining)]
100100
public static Range<T> TryCreateExclusiveTo<T>(T fromValue, T toValue) =>
101101
TryCreateCore(
102-
fromValue, RangeBoundaryFromKind.Exclusive,
103-
toValue, RangeBoundaryToKind.Inclusive);
102+
fromValue, RangeBoundaryFromKind.Inclusive,
103+
toValue, RangeBoundaryToKind.Exclusive);
104104
#endregion
105105
}
106106
}

CodeJam.Main/Ranges/Range.FactoryMethods.generated.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ public static Range<T, TKey> TryCreateExclusiveFrom<T, TKey>(T fromValue, T toVa
126126
[Pure, MethodImpl(AggressiveInlining)]
127127
public static Range<T, TKey> TryCreateExclusiveTo<T, TKey>(T fromValue, T toValue, TKey key) =>
128128
TryCreateCore(
129-
fromValue, RangeBoundaryFromKind.Exclusive,
130-
toValue, RangeBoundaryToKind.Inclusive, key);
129+
fromValue, RangeBoundaryFromKind.Inclusive,
130+
toValue, RangeBoundaryToKind.Exclusive, key);
131131
#endregion
132132
}
133133
}

0 commit comments

Comments
 (0)