1- using Microsoft . VisualStudio . TestTools . UnitTesting ;
1+ using Akade . IndexedSet . Tests . TestUtilities ;
2+ using Microsoft . VisualStudio . TestTools . UnitTesting ;
23
34namespace Akade . IndexedSet . Tests . CommonIndexTests ;
4- internal abstract partial class BaseIndexTest < TIndexKey , TElement , TIndex >
5+ internal abstract partial class BaseIndexTest < TIndexKey , TElement , TIndex , TComparer >
56{
6- [ TestMethod ]
7+ [ BaseTestMethod ]
78 public void Range_based_methods_should_throw_if_not_supported ( )
89 {
910 if ( ! SupportsRangeBasedQueries )
@@ -23,7 +24,7 @@ public void Range_based_methods_should_throw_if_not_supported()
2324 }
2425 }
2526
26- [ TestMethod ]
27+ [ BaseTestMethod ]
2728 public void Range_returns_empty_result_if_not_present ( )
2829 {
2930 if ( SupportsRangeBasedQueries )
@@ -33,7 +34,7 @@ public void Range_returns_empty_result_if_not_present()
3334 }
3435 }
3536
36- [ TestMethod ]
37+ [ BaseTestMethod ]
3738 public void Range_returns_sorted_elements_respecting_boundary_parameters_for_unique_data ( )
3839 {
3940 if ( SupportsRangeBasedQueries )
@@ -42,7 +43,7 @@ public void Range_returns_sorted_elements_respecting_boundary_parameters_for_uni
4243 TElement [ ] data = GetUniqueData ( ) ;
4344 AddElements ( data , index ) ;
4445
45- TElement [ ] orderedElements = [ .. data . OrderBy ( _keyAccessor ) ] ;
46+ TElement [ ] orderedElements = [ .. data . OrderBy ( _keyAccessor , ComparerUtils . GetComparer < TIndexKey > ( _comparer ) ) ] ;
4647
4748 TIndexKey rangeStart = _keyAccessor ( orderedElements [ 1 ] ) ;
4849 TIndexKey rangeEnd = _keyAccessor ( orderedElements [ ^ 2 ] ) ;
@@ -53,7 +54,7 @@ public void Range_returns_sorted_elements_respecting_boundary_parameters_for_uni
5354 }
5455 }
5556
56- [ TestMethod ]
57+ [ BaseTestMethod ]
5758 public void Comparison_queries_return_empty_result_if_no_element_is_present ( )
5859 {
5960 if ( SupportsRangeBasedQueries )
@@ -66,25 +67,25 @@ public void Comparison_queries_return_empty_result_if_no_element_is_present()
6667 }
6768 }
6869
69- [ TestMethod ]
70+ [ BaseTestMethod ]
7071 public void Comparison_queries_return_sorted_elements_respecting_boundary ( )
7172 {
7273 if ( SupportsRangeBasedQueries )
7374 {
7475 TIndex index = CreateIndex ( ) ;
7576 TElement [ ] data = GetUniqueData ( ) ;
7677 AddElements ( data , index ) ;
77- TElement [ ] orderedElements = [ .. data . OrderBy ( _keyAccessor ) ] ;
78+ TElement [ ] orderedElements = [ .. data . OrderBy ( _keyAccessor , ComparerUtils . GetComparer < TIndexKey > ( _comparer ) ) ] ;
7879
79- TIndexKey boundary = _keyAccessor ( orderedElements [ 3 ] ) ;
80- CollectionAssert . AreEqual ( orderedElements [ 0 ..3 ] , index . LessThan ( boundary ) . ToArray ( ) ) ;
81- CollectionAssert . AreEqual ( orderedElements [ 0 ..4 ] , index . LessThanOrEqual ( boundary ) . ToArray ( ) ) ;
82- CollectionAssert . AreEqual ( orderedElements [ 4 ..] , index . GreaterThan ( boundary ) . ToArray ( ) ) ;
83- CollectionAssert . AreEqual ( orderedElements [ 3 ..] , index . GreaterThanOrEqual ( boundary ) . ToArray ( ) ) ;
80+ TIndexKey boundary = _keyAccessor ( orderedElements [ 2 ] ) ;
81+ CollectionAssert . AreEqual ( orderedElements [ 0 ..2 ] , index . LessThan ( boundary ) . ToArray ( ) ) ;
82+ CollectionAssert . AreEqual ( orderedElements [ 0 ..3 ] , index . LessThanOrEqual ( boundary ) . ToArray ( ) ) ;
83+ CollectionAssert . AreEqual ( orderedElements [ 3 ..] , index . GreaterThan ( boundary ) . ToArray ( ) ) ;
84+ CollectionAssert . AreEqual ( orderedElements [ 2 ..] , index . GreaterThanOrEqual ( boundary ) . ToArray ( ) ) ;
8485 }
8586 }
8687
87- [ TestMethod ]
88+ [ BaseTestMethod ]
8889 public void MaxMin_throw_if_the_set_is_empty ( )
8990 {
9091 if ( SupportsRangeBasedQueries )
@@ -95,7 +96,7 @@ public void MaxMin_throw_if_the_set_is_empty()
9596 }
9697 }
9798
98- [ TestMethod ]
99+ [ BaseTestMethod ]
99100 public void MaxMin_return_empty_enumerable_if_the_set_is_empty ( )
100101 {
101102 if ( SupportsRangeBasedQueries )
@@ -106,7 +107,7 @@ public void MaxMin_return_empty_enumerable_if_the_set_is_empty()
106107 }
107108 }
108109
109- [ TestMethod ]
110+ [ BaseTestMethod ]
110111 public void MaxMin_return_correct_key_and_values ( )
111112 {
112113 if ( SupportsRangeBasedQueries )
@@ -115,7 +116,7 @@ public void MaxMin_return_correct_key_and_values()
115116 TElement [ ] data = GetUniqueData ( ) ;
116117 AddElements ( data , index ) ;
117118
118- TElement [ ] orderedElements = [ .. data . OrderBy ( _keyAccessor ) ] ;
119+ TElement [ ] orderedElements = [ .. data . OrderBy ( _keyAccessor , ComparerUtils . GetComparer < TIndexKey > ( _comparer ) ) ] ;
119120
120121 Assert . AreEqual ( _keyAccessor ( orderedElements [ 0 ] ) , index . Min ( ) ) ;
121122 Assert . AreEqual ( orderedElements [ 0 ] , index . MinBy ( ) . Single ( ) ) ;
@@ -125,7 +126,7 @@ public void MaxMin_return_correct_key_and_values()
125126 }
126127 }
127128
128- [ TestMethod ]
129+ [ BaseTestMethod ]
129130 public void OrderBy_returns_empty_values_with_no_data ( )
130131 {
131132 if ( SupportsRangeBasedQueries )
@@ -135,7 +136,7 @@ public void OrderBy_returns_empty_values_with_no_data()
135136 }
136137 }
137138
138- [ TestMethod ]
139+ [ BaseTestMethod ]
139140 public void OrderBy_throws_if_skip_value_is_too_large ( )
140141 {
141142 if ( SupportsRangeBasedQueries )
@@ -147,15 +148,15 @@ public void OrderBy_throws_if_skip_value_is_too_large()
147148 }
148149 }
149150
150- [ TestMethod ]
151+ [ BaseTestMethod ]
151152 public void OrderBy_returns_sorted_values ( )
152153 {
153154 if ( SupportsRangeBasedQueries )
154155 {
155156 TIndex index = CreateIndex ( ) ;
156157 TElement [ ] data = GetUniqueData ( ) ;
157158 AddElements ( data , index ) ;
158- TElement [ ] orderedElements = [ .. data . OrderBy ( _keyAccessor ) ] ;
159+ TElement [ ] orderedElements = [ .. data . OrderBy ( _keyAccessor , ComparerUtils . GetComparer < TIndexKey > ( _comparer ) ) ] ;
159160
160161 for ( int i = 0 ; i < orderedElements . Length ; i ++ )
161162 {
@@ -164,7 +165,7 @@ public void OrderBy_returns_sorted_values()
164165 }
165166 }
166167
167- [ TestMethod ]
168+ [ BaseTestMethod ]
168169 public void OrderByDescending_returns_empty_values_with_no_data ( )
169170 {
170171 if ( SupportsRangeBasedQueries )
@@ -174,7 +175,7 @@ public void OrderByDescending_returns_empty_values_with_no_data()
174175 }
175176 }
176177
177- [ TestMethod ]
178+ [ BaseTestMethod ]
178179 public void OrderByDescending_throws_if_skip_value_is_too_large ( )
179180 {
180181 if ( SupportsRangeBasedQueries )
@@ -186,15 +187,15 @@ public void OrderByDescending_throws_if_skip_value_is_too_large()
186187 }
187188 }
188189
189- [ TestMethod ]
190+ [ BaseTestMethod ]
190191 public void OrderByDescending_returns_sorted_values ( )
191192 {
192193 if ( SupportsRangeBasedQueries )
193194 {
194195 TIndex index = CreateIndex ( ) ;
195196 TElement [ ] data = GetUniqueData ( ) ;
196197 AddElements ( data , index ) ;
197- TElement [ ] orderedElements = [ .. data . OrderByDescending ( _keyAccessor ) ] ;
198+ TElement [ ] orderedElements = [ .. data . OrderByDescending ( _keyAccessor , ComparerUtils . GetComparer < TIndexKey > ( _comparer ) ) ] ;
198199
199200 for ( int i = 0 ; i < orderedElements . Length ; i ++ )
200201 {
0 commit comments