@@ -17,20 +17,18 @@ public void HashIndex_AddAndLookup_FindsRows()
1717 var row3 = new Dictionary < string , object > { { "id" , 1 } , { "name" , "Alice2" } } ;
1818
1919 // Act
20- index . Add ( row1 ) ;
21- index . Add ( row2 ) ;
22- index . Add ( row3 ) ;
20+ index . Add ( row1 , 0 ) ;
21+ index . Add ( row2 , 1 ) ;
22+ index . Add ( row3 , 2 ) ;
2323
24- var results1 = index . Lookup ( 1 ) ;
25- var results2 = index . Lookup ( 2 ) ;
26- var results3 = index . Lookup ( 999 ) ;
24+ var positions1 = index . LookupPositions ( 1 ) ;
25+ var positions2 = index . LookupPositions ( 2 ) ;
26+ var positions3 = index . LookupPositions ( 999 ) ;
2727
2828 // Assert
29- Assert . Equal ( 2 , results1 . Count ) ; // Two rows with id=1
30- Assert . Single ( results2 ) ; // One row with id=2
31- Assert . Empty ( results3 ) ; // No rows with id=999
32- Assert . Equal ( "Alice" , results1 [ 0 ] [ "name" ] ) ;
33- Assert . Equal ( "Bob" , results2 [ 0 ] [ "name" ] ) ;
29+ Assert . Equal ( 2 , positions1 . Count ) ; // Two rows with id=1
30+ Assert . Single ( positions2 ) ; // One row with id=2
31+ Assert . Empty ( positions3 ) ; // No rows with id=999
3432 }
3533
3634 [ Fact ]
@@ -41,7 +39,7 @@ public void HashIndex_ContainsKey_ReturnsCorrectly()
4139 var row1 = new Dictionary < string , object > { { "category" , "Electronics" } , { "name" , "Laptop" } } ;
4240
4341 // Act
44- index . Add ( row1 ) ;
42+ index . Add ( row1 , 0 ) ;
4543
4644 // Assert
4745 Assert . True ( index . ContainsKey ( "Electronics" ) ) ;
@@ -58,17 +56,16 @@ public void HashIndex_Remove_RemovesRow()
5856 var row2 = new Dictionary < string , object > { { "id" , 1 } , { "name" , "Alice2" } } ;
5957
6058 // Act
61- index . Add ( row1 ) ;
62- index . Add ( row2 ) ;
63- var beforeRemove = index . Lookup ( 1 ) ;
59+ index . Add ( row1 , 0 ) ;
60+ index . Add ( row2 , 1 ) ;
61+ var beforeRemove = index . LookupPositions ( 1 ) ;
6462
6563 index . Remove ( row1 ) ;
66- var afterRemove = index . Lookup ( 1 ) ;
64+ var afterRemove = index . LookupPositions ( 1 ) ;
6765
6866 // Assert
6967 Assert . Equal ( 2 , beforeRemove . Count ) ;
7068 Assert . Single ( afterRemove ) ;
71- Assert . Equal ( "Alice2" , afterRemove [ 0 ] [ "name" ] ) ;
7269 }
7370
7471 [ Fact ]
@@ -80,16 +77,16 @@ public void HashIndex_Clear_RemovesAllData()
8077 var row2 = new Dictionary < string , object > { { "id" , 2 } , { "name" , "Bob" } } ;
8178
8279 // Act
83- index . Add ( row1 ) ;
84- index . Add ( row2 ) ;
80+ index . Add ( row1 , 0 ) ;
81+ index . Add ( row2 , 1 ) ;
8582 Assert . Equal ( 2 , index . Count ) ;
8683
8784 index . Clear ( ) ;
8885
8986 // Assert
9087 Assert . Equal ( 0 , index . Count ) ;
91- Assert . Empty ( index . Lookup ( 1 ) ) ;
92- Assert . Empty ( index . Lookup ( 2 ) ) ;
88+ Assert . Empty ( index . LookupPositions ( 1 ) ) ;
89+ Assert . Empty ( index . LookupPositions ( 2 ) ) ;
9390 }
9491
9592 [ Fact ]
@@ -109,8 +106,8 @@ public void HashIndex_Rebuild_RebuildsFromRows()
109106
110107 // Assert
111108 Assert . Equal ( 2 , index . Count ) ; // Two unique projects
112- Assert . Equal ( 2 , index . Lookup ( "Alpha" ) . Count ) ;
113- Assert . Single ( index . Lookup ( "Beta" ) ) ;
109+ Assert . Equal ( 2 , index . LookupPositions ( "Alpha" ) . Count ) ;
110+ Assert . Single ( index . LookupPositions ( "Beta" ) ) ;
114111 }
115112
116113 [ Fact ]
@@ -130,7 +127,7 @@ public void HashIndex_GetStatistics_ReturnsCorrectData()
130127 // Act
131128 foreach ( var row in rows )
132129 {
133- index . Add ( row ) ;
130+ index . Add ( row , 0 ) ; // Dummy position
134131 }
135132
136133 var stats = index . GetStatistics ( ) ;
@@ -150,12 +147,12 @@ public void HashIndex_NullKeys_AreIgnored()
150147 var row2 = new Dictionary < string , object > { { "name" , "Bob" } } ; // Missing email key
151148
152149 // Act
153- index . Add ( row1 ) ;
154- index . Add ( row2 ) ;
150+ index . Add ( row1 , 0 ) ;
151+ index . Add ( row2 , 1 ) ;
155152
156153 // Assert
157154 Assert . Equal ( 0 , index . Count ) ; // No keys added
158- Assert . Empty ( index . Lookup ( null ) ) ;
155+ Assert . Empty ( index . LookupPositions ( null ) ) ;
159156 }
160157
161158 [ Fact ]
@@ -175,10 +172,10 @@ public void HashIndex_LargeDataSet_PerformsWell()
175172 { "eventId" , i } ,
176173 { "timestamp" , DateTime . UtcNow }
177174 } ;
178- index . Add ( row ) ;
175+ index . Add ( row , i ) ;
179176 }
180177
181- var lookupResults = index . Lookup ( 42 ) ; // Look up a specific user
178+ var lookupResults = index . LookupPositions ( 42 ) ; // Look up a specific user
182179
183180 // Assert
184181 Assert . Equal ( uniqueUsers , index . Count ) ; // 100 unique users
@@ -197,20 +194,20 @@ public void HashIndex_DifferentDataTypes_WorksCorrectly()
197194
198195 // Act & Assert - Integer keys
199196 var row1 = new Dictionary < string , object > { { "price" , 100 } , { "name" , "Item1" } } ;
200- index . Add ( row1 ) ;
201- Assert . Single ( index . Lookup ( 100 ) ) ;
197+ index . Add ( row1 , 0 ) ;
198+ Assert . Single ( index . LookupPositions ( 100 ) ) ;
202199
203200 // String keys
204201 index . Clear ( ) ;
205202 var row2 = new Dictionary < string , object > { { "price" , "expensive" } , { "name" , "Item2" } } ;
206- index . Add ( row2 ) ;
207- Assert . Single ( index . Lookup ( "expensive" ) ) ;
203+ index . Add ( row2 , 0 ) ;
204+ Assert . Single ( index . LookupPositions ( "expensive" ) ) ;
208205
209206 // DateTime keys
210207 index . Clear ( ) ;
211208 var date = DateTime . Parse ( "2024-01-01" ) ;
212209 var row3 = new Dictionary < string , object > { { "price" , date } , { "name" , "Item3" } } ;
213- index . Add ( row3 ) ;
214- Assert . Single ( index . Lookup ( date ) ) ;
210+ index . Add ( row3 , 0 ) ;
211+ Assert . Single ( index . LookupPositions ( date ) ) ;
215212 }
216213}
0 commit comments