Skip to content

Commit 7c30da5

Browse files
committed
ComparerProviderTests improvements
- serialization tests for different comparers - removed commented tests that were commented since inital import - new formatting applied
1 parent 368f7e7 commit 7c30da5

File tree

1 file changed

+75
-166
lines changed

1 file changed

+75
-166
lines changed
Lines changed: 75 additions & 166 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
// Copyright (C) 2003-2010 Xtensive LLC.
2-
// All rights reserved.
3-
// For conditions of distribution and use, see license.
1+
// Copyright (C) 2007-2021 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
44
// Created by: Alex Yakunin
55
// Created: 2007.12.17
66

77
using System;
8+
using System.Collections.Generic;
9+
using System.Globalization;
810
using System.Reflection;
911
using NUnit.Framework;
1012
using Xtensive.Comparison;
@@ -26,7 +28,33 @@ public void PairComparerTest()
2628
[Test]
2729
public void SerializationTest()
2830
{
29-
AdvancedComparer<short> comparer = AdvancedComparer<short>.Default;
31+
SerializationTest<int[]>();
32+
SerializationTest<Guid>();
33+
SerializationTest<bool>();
34+
SerializationTest<byte>();
35+
SerializationTest<sbyte>();
36+
SerializationTest<short>();
37+
SerializationTest<int>();
38+
SerializationTest<long>();
39+
SerializationTest<ushort>();
40+
SerializationTest<uint>();
41+
SerializationTest<ulong>();
42+
SerializationTest<float>();
43+
SerializationTest<double>();
44+
SerializationTest<decimal>();
45+
SerializationTest<Direction>();
46+
SerializationTest<IEnumerable<int>>();
47+
SerializationTest<char>();
48+
SerializationTest<string>();
49+
SerializationTest<short?>();
50+
SerializationTest<Pair<int>>();
51+
SerializationTest<Pair<int, long>>();
52+
SerializationTest<Xtensive.Tuples.Tuple>();
53+
}
54+
55+
private void SerializationTest<T>()
56+
{
57+
var comparer = AdvancedComparer<T>.Default;
3058
Assert.IsNotNull(comparer.Compare);
3159
var deserializedComparer = Cloner.Clone(comparer);
3260
Assert.IsNotNull(deserializedComparer.Compare);
@@ -38,50 +66,51 @@ public void SerializationTest()
3866
public void GettingDefaultComparerPerformanceTest()
3967
{
4068
GettingDefaultComparerLoop(100);
41-
int count = 1000000;
69+
var count = 1000000;
4270
using (new Measurement("Getting default comparer", count)) {
4371
GettingDefaultComparerLoop(count);
4472
}
4573
}
4674

4775
private static void GettingDefaultComparerLoop(int count)
4876
{
49-
for (int i = 0; i < count; i++) {
50-
ComparerProvider.Default.GetComparer<bool>();
51-
ComparerProvider.Default.GetComparer<byte>();
52-
ComparerProvider.Default.GetComparer<char>();
53-
ComparerProvider.Default.GetComparer<short>();
54-
ComparerProvider.Default.GetComparer<ushort>();
55-
ComparerProvider.Default.GetComparer<int>();
56-
ComparerProvider.Default.GetComparer<uint>();
57-
ComparerProvider.Default.GetComparer<long>();
58-
ComparerProvider.Default.GetComparer<ulong>();
59-
ComparerProvider.Default.GetComparer<string>();
77+
for (var i = 0; i < count; i++) {
78+
_ = ComparerProvider.Default.GetComparer<bool>();
79+
_ = ComparerProvider.Default.GetComparer<byte>();
80+
_ = ComparerProvider.Default.GetComparer<char>();
81+
_ = ComparerProvider.Default.GetComparer<short>();
82+
_ = ComparerProvider.Default.GetComparer<ushort>();
83+
_ = ComparerProvider.Default.GetComparer<int>();
84+
_ = ComparerProvider.Default.GetComparer<uint>();
85+
_ = ComparerProvider.Default.GetComparer<long>();
86+
_ = ComparerProvider.Default.GetComparer<ulong>();
87+
_ = ComparerProvider.Default.GetComparer<string>();
6088
}
6189
}
6290

6391

6492
private class TestClass
6593
{
94+
#pragma warning disable IDE0044, IDE0051 // Add readonly modifier + Remove unused private members
6695
private string x;
6796
private int y;
97+
#pragma warning restore IDE0044, IDE0051 // Add readonly modifier + Remove unused private members
6898
}
69-
7099

71100
[Test]
72101
public void ClassTest()
73102
{
74-
AdvancedComparerStruct<TestClass> dd = AdvancedComparerStruct<TestClass>.System;
103+
_ = AdvancedComparerStruct<TestClass>.System;
75104
}
76105

77106
[Test]
78107
public void Int32ComparerTest()
79108
{
80-
int o1 = 1;
81-
int o2 = 2;
82-
AdvancedComparer<int> comparer = AdvancedComparer<int>.Default;
109+
var o1 = 1;
110+
var o2 = 2;
111+
var comparer = AdvancedComparer<int>.Default;
83112
Assert.IsNotNull(comparer);
84-
Assert.AreEqual("Int32Comparer", comparer.Implementation.GetType().Name);
113+
Assert.AreEqual(nameof(Int32Comparer), comparer.Implementation.GetType().Name);
85114
Assert.Greater(comparer.Compare(o2,o1), 0);
86115
Assert.IsTrue(comparer.ValueRangeInfo.HasMinValue);
87116
Assert.IsTrue(comparer.ValueRangeInfo.HasMaxValue);
@@ -95,22 +124,22 @@ public void Int32ComparerTest()
95124
[Test]
96125
public void StringComparerTest()
97126
{
98-
string o1 = "1";
99-
string o2 = "2";
100-
AdvancedComparer<string> comparer = AdvancedComparer<string>.Default;
127+
var o1 = "1";
128+
var o2 = "2";
129+
var comparer = AdvancedComparer<string>.Default;
101130
Assert.IsNotNull(comparer);
102131
Assert.AreEqual("StringComparer", comparer.Implementation.GetType().Name);
103132
Assert.Greater(comparer.Compare(o2,o1), 0);
104133
Assert.IsTrue(comparer.ValueRangeInfo.HasMinValue);
105134
Assert.IsFalse(comparer.ValueRangeInfo.HasMaxValue);
106135
Assert.AreEqual(null, comparer.ValueRangeInfo.MinValue);
107-
AssertEx.ThrowsInvalidOperationException(delegate {string s = comparer.ValueRangeInfo.MaxValue;});
136+
AssertEx.ThrowsInvalidOperationException(delegate { var s = comparer.ValueRangeInfo.MaxValue; });
137+
138+
var z = char.MaxValue;
139+
var y = unchecked ((char) (char.MaxValue - 1));
140+
var a = char.MinValue;
108141

109-
char z = char.MaxValue;
110-
char y = unchecked ((char) (char.MaxValue - 1));
111-
char a = char.MinValue;
112-
113-
string str = "BCD";
142+
var str = "BCD";
114143
str = comparer.GetNearestValue(str, Direction.Negative);
115144
Assert.AreEqual("BCC" + z, str);
116145
str = comparer.GetNearestValue(str, Direction.Negative);
@@ -135,95 +164,13 @@ public void StringComparerTest()
135164
Assert.IsNull(comparer.GetNearestValue(string.Empty, Direction.Negative));
136165
Assert.AreEqual(string.Empty, comparer.GetNearestValue(null, Direction.Positive));
137166
Assert.AreEqual(char.MaxValue.ToString(), comparer.GetNearestValue(char.MaxValue.ToString(), Direction.Positive));
138-
AssertEx.Throws<ArgumentOutOfRangeException>(delegate { comparer.GetNearestValue(str, Direction.None); });
167+
AssertEx.Throws<ArgumentOutOfRangeException>(delegate { _ = comparer.GetNearestValue(str, Direction.None); });
139168
}
140169

141-
// [Test]
142-
// public void EntireComparerTest()
143-
// {
144-
// AdvancedComparer<Entire<int>> comparer = AdvancedComparer<Entire<int>>.Default;
145-
// Assert.IsNotNull(comparer);
146-
// Assert.AreEqual("EntireComparer`1", comparer.Implementation.GetType().Name);
147-
// Assert.AreEqual(comparer.Compare((Entire<int>)Entire<int>.Create(InfinityType.Positive), (Entire<int>)Entire<int>.Create(InfinityType.Positive)), 0);
148-
// Assert.AreEqual(comparer.Compare((Entire<int>)Entire<int>.Create(InfinityType.Negative), (Entire<int>)Entire<int>.Create(InfinityType.Negative)), 0);
149-
// Assert.Greater(comparer.Compare((Entire<int>)Entire<int>.Create(InfinityType.Positive), (Entire<int>)Entire<int>.Create(InfinityType.Negative)), 0);
150-
// Assert.Greater(comparer.Compare((Entire<int>)Entire<int>.Create(InfinityType.Positive), (Entire<int>)Entire<int>.Create(100)), 0);
151-
// Assert.Less(comparer.Compare((Entire<int>)Entire<int>.Create(InfinityType.Negative), (Entire<int>)Entire<int>.Create(InfinityType.Positive)), 0);
152-
// Assert.Less(comparer.Compare((Entire<int>)Entire<int>.Create(InfinityType.Negative), (Entire<int>)Entire<int>.Create(100)), 0);
153-
// Assert.IsTrue(comparer.ValueRangeInfo.HasMinValue);
154-
// Assert.IsTrue(comparer.ValueRangeInfo.HasMaxValue);
155-
// Assert.IsTrue(comparer.ValueRangeInfo.HasDeltaValue);
156-
// Assert.AreEqual(Entire<int>.MinValue, comparer.ValueRangeInfo.MinValue);
157-
// Assert.AreEqual(Entire<int>.MaxValue, comparer.ValueRangeInfo.MaxValue);
158-
// Assert.AreEqual(Entire<int>.Create(1), comparer.ValueRangeInfo.DeltaValue);
159-
// }
160-
161-
// [Test]
162-
// public void EntireInterfaceComparerTest()
163-
// {
164-
// AdvancedComparer<IEntire<int>> comparer = AdvancedComparer<IEntire<int>>.Default;
165-
// Assert.IsNotNull(comparer);
166-
// Assert.AreEqual("EntireInterfaceComparer`1", comparer.Implementation.GetType().Name);
167-
// Assert.AreEqual(comparer.Compare(Entire<int>.Create(InfinityType.Positive), Entire<int>.Create(InfinityType.Positive)), 0);
168-
// Assert.AreEqual(comparer.Compare(Entire<int>.Create(InfinityType.Negative), Entire<int>.Create(InfinityType.Negative)), 0);
169-
// Assert.Greater(comparer.Compare(Entire<int>.Create(InfinityType.Positive), Entire<int>.Create(InfinityType.Negative)), 0);
170-
// Assert.Greater(comparer.Compare(Entire<int>.Create(InfinityType.Positive), Entire<int>.Create(100)), 0);
171-
// Assert.Less(comparer.Compare(Entire<int>.Create(InfinityType.Negative), Entire<int>.Create(InfinityType.Positive)), 0);
172-
// Assert.Less(comparer.Compare(Entire<int>.Create(InfinityType.Negative), Entire<int>.Create(100)), 0);
173-
// Assert.AreNotEqual(comparer.Compare(new Entire<int>(1, Direction.Positive), new Entire<int>(2)), 0);
174-
// Assert.IsTrue(comparer.ValueRangeInfo.HasMinValue);
175-
// Assert.IsTrue(comparer.ValueRangeInfo.HasMaxValue);
176-
// Assert.IsTrue(comparer.ValueRangeInfo.HasDeltaValue);
177-
// Assert.AreEqual(Entire<int>.MinValue, comparer.ValueRangeInfo.MinValue);
178-
// Assert.AreEqual(Entire<int>.MaxValue, comparer.ValueRangeInfo.MaxValue);
179-
// Assert.AreEqual(Entire<int>.Create(1), comparer.ValueRangeInfo.DeltaValue);
180-
// }
181-
182-
// [Test]
183-
// public void ReversedComparerTest()
184-
// {
185-
// {
186-
// AdvancedComparer<Reversed<int>> comparer = AdvancedComparer<Reversed<int>>.Default;
187-
// Assert.IsNotNull(comparer);
188-
// Assert.AreEqual("ReversedComparer`1", comparer.Implementation.GetType().Name);
189-
// Assert.Less(comparer.Compare(10, 1), 0);
190-
// Assert.Greater(comparer.Compare(1, 10), 0);
191-
// Assert.AreEqual(comparer.Compare(10, 10), 0);
192-
// Assert.IsTrue(comparer.ValueRangeInfo.HasMinValue);
193-
// Assert.IsTrue(comparer.ValueRangeInfo.HasMaxValue);
194-
// Assert.IsTrue(comparer.ValueRangeInfo.HasDeltaValue);
195-
// Assert.AreEqual(new Reversed<int>(int.MaxValue), new Reversed<int>(int.MaxValue));
196-
// Assert.AreEqual(new Reversed<int>(int.MaxValue), comparer.ValueRangeInfo.MinValue);
197-
// Assert.AreEqual(new Reversed<int>(int.MinValue), comparer.ValueRangeInfo.MaxValue);
198-
// Assert.AreEqual(new Reversed<int>(1), comparer.ValueRangeInfo.DeltaValue);
199-
// }
200-
//
201-
// {
202-
// AdvancedComparer<Reversed<int?>> comparer = AdvancedComparer<Reversed<int?>>.Default;
203-
// Assert.IsNotNull(comparer);
204-
// Assert.AreEqual("ReversedComparer`1", comparer.Implementation.GetType().Name);
205-
// Assert.Less(comparer.Compare(10, 1), 0);
206-
// Assert.Greater(comparer.Compare(1, 10), 0);
207-
// Assert.AreEqual(comparer.Compare(10, 10), 0);
208-
// Assert.Greater(comparer.Compare(1, 10), 0);
209-
// Assert.Less(comparer.Compare(10, 1), 0);
210-
// Assert.AreEqual(comparer.Compare(10, 10), 0);
211-
// Assert.Greater(comparer.Compare(null, 10), 0);
212-
// Assert.AreEqual(comparer.Compare(null, null), 0);
213-
// Assert.Less(comparer.Compare(10, null), 0);
214-
// Assert.IsTrue(comparer.ValueRangeInfo.HasMinValue);
215-
// Assert.IsTrue(comparer.ValueRangeInfo.HasMaxValue);
216-
// Assert.IsTrue(comparer.ValueRangeInfo.HasDeltaValue);
217-
// Assert.AreEqual(new Reversed<int?>(int.MaxValue), comparer.ValueRangeInfo.MinValue);
218-
// Assert.AreEqual(new Reversed<int?>(), comparer.ValueRangeInfo.MaxValue);
219-
// Assert.AreEqual(new Reversed<int?>(1), comparer.ValueRangeInfo.DeltaValue);
220-
// }
221-
// }
222-
223170
[Test]
224171
public void NullableComparerTest()
225172
{
226-
AdvancedComparer<int?> comparer = AdvancedComparer<int?>.Default;
173+
var comparer = AdvancedComparer<int?>.Default;
227174
Assert.IsNotNull(comparer);
228175
Assert.AreEqual("NullableComparer`1", comparer.Implementation.GetType().Name);
229176
Assert.Greater(comparer.Compare(10, 1), 0);
@@ -246,7 +193,7 @@ public void NullableComparerTest()
246193
[Test]
247194
public void EnumComparerTest()
248195
{
249-
AdvancedComparer<Direction> comparer = AdvancedComparer<Direction>.System;
196+
var comparer = AdvancedComparer<Direction>.System;
250197
Assert.IsNotNull(comparer);
251198
Assert.AreEqual("EnumComparer`2", comparer.Implementation.GetType().Name);
252199
Assert.Greater(comparer.Compare(Direction.Positive, Direction.Negative), 0);
@@ -273,9 +220,9 @@ public void EnumComparerTest()
273220
[Test]
274221
public void CustomComparerTest()
275222
{
276-
Wrapper<int> o1 = new Wrapper<int>(1);
277-
Wrapper<int> o2 = new Wrapper<int>(2);
278-
AdvancedComparer<Wrapper<int>> comparer = AdvancedComparer<Wrapper<int>>.Default;
223+
var o1 = new Wrapper<int>(1);
224+
var o2 = new Wrapper<int>(2);
225+
var comparer = AdvancedComparer<Wrapper<int>>.Default;
279226
Assert.IsNotNull(comparer);
280227
AssertEx.IsPatternMatch(comparer.Implementation.GetType().Name, "WrapperComparer*");
281228
Assert.Greater(comparer.Compare(o2,o1), 0);
@@ -284,9 +231,9 @@ public void CustomComparerTest()
284231
[Test]
285232
public void CustomComparerTest2()
286233
{
287-
Wrapper2<int, int> o1 = new Wrapper2<int, int>(0,1);
288-
Wrapper2<int, int> o2 = new Wrapper2<int, int>(0,2);
289-
AdvancedComparer<Wrapper2<int, int>> comparer = AdvancedComparer<Wrapper2<int, int>>.Default;
234+
var o1 = new Wrapper2<int, int>(0,1);
235+
var o2 = new Wrapper2<int, int>(0,2);
236+
var comparer = AdvancedComparer<Wrapper2<int, int>>.Default;
290237
Assert.IsNotNull(comparer);
291238
AssertEx.IsPatternMatch(comparer.Implementation.GetType().Name, "Wrapper2Comparer*");
292239
Assert.Greater(comparer.Compare(o2,o1), 0);
@@ -295,9 +242,9 @@ public void CustomComparerTest2()
295242
[Test]
296243
public void InheritedComparerTest()
297244
{
298-
Wrapper2a<int, int> o1 = new Wrapper2a<int, int>(0,1);
299-
Wrapper2a<int, int> o2 = new Wrapper2a<int, int>(0,2);
300-
AdvancedComparer<Wrapper2a<int, int>> comparer = AdvancedComparer<Wrapper2a<int, int>>.Default;
245+
var o1 = new Wrapper2a<int, int>(0,1);
246+
var o2 = new Wrapper2a<int, int>(0,2);
247+
var comparer = AdvancedComparer<Wrapper2a<int, int>>.Default;
301248
Assert.IsNotNull(comparer);
302249
AssertEx.IsPatternMatch(comparer.Implementation.GetType().Name, "BaseComparerWrapper*");
303250
Assert.AreEqual(comparer.Compare(o2,o1), 0);
@@ -306,50 +253,12 @@ public void InheritedComparerTest()
306253
[Test]
307254
public void CastingComparerTest()
308255
{
309-
Wrapper1<int> o1 = new Wrapper1<int>(1);
310-
Wrapper1<int> o2 = new Wrapper1<int>(2);
311-
AdvancedComparer<Wrapper<int>> comparer = AdvancedComparer<Wrapper1<int>>.Default.Cast<Wrapper<int>>();
256+
var o1 = new Wrapper1<int>(1);
257+
var o2 = new Wrapper1<int>(2);
258+
var comparer = AdvancedComparer<Wrapper1<int>>.Default.Cast<Wrapper<int>>();
312259
Assert.IsNotNull(comparer);
313260
AssertEx.IsPatternMatch(comparer.Implementation.GetType().Name, "CastingComparer*");
314261
Assert.Greater(comparer.Compare(o2,o1), 0);
315262
}
316-
317-
// [Test]
318-
// public void TupleEntireComparerTest()
319-
// {
320-
// List<Type> fields = new List<Type>(3);
321-
// fields.AddRange(new Type[] {typeof(int), typeof(bool), typeof(string)});
322-
// TupleDescriptor tupleDescriptor = TupleDescriptor.Create(fields);
323-
// Tuple tuple = Tuple.Create(tupleDescriptor);
324-
// tuple.SetValue(0, 1);
325-
// tuple.SetValue(1, true);
326-
// tuple.SetValue(2, "TupleEntire");
327-
// IEntire<Tuple> entire1 = Entire<Tuple>.Create(tuple);
328-
// IEntire<Tuple> entire2 = Entire<Tuple>.Create(tuple);
329-
// AdvancedComparer<IEntire<Tuple>> comparer = AdvancedComparer<IEntire<Tuple>>.Default;
330-
// AssertEx.IsPatternMatch(comparer.Implementation.GetType().Name, "EntireInterfaceComparer*");
331-
//
332-
//// entire2.Shift(1);
333-
//// Assert.IsFalse(c.Equals(entire1, entire2));
334-
//// Assert.AreEqual(-1, c.Compare(entire1, entire2));
335-
////
336-
//// entire1.Shift();
337-
//// Assert.IsFalse(c.Equals(entire1, entire2));
338-
//// Assert.AreEqual(1, c.Compare(entire1, entire2));
339-
////
340-
//// entire2.Shift();
341-
//// Assert.IsTrue(c.Equals(entire1, entire2));
342-
//// Assert.AreEqual(0, c.Compare(entire1, entire2));
343-
// }
344-
345-
int ToReflect1(Direction d)
346-
{
347-
return (int) d;
348-
}
349-
350-
Direction ToReflect2(int i)
351-
{
352-
return (Direction) i;
353-
}
354263
}
355264
}

0 commit comments

Comments
 (0)