Skip to content

Commit 0a322dd

Browse files
Abduqodiri Qurbonzodaqurbonzoda
authored andcommitted
Test that Map correctly handles non-canonical trie it derives from builder
1 parent b2c46f7 commit 0a322dd

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

core/commonTest/src/stress/map/PersistentHashMapBuilderTest.kt

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,53 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() {
243243
}
244244
}
245245

246+
@Test
247+
fun removeBuildTests() {
248+
val builder = persistentHashMapOf<IntWrapper, Int>().builder()
249+
250+
val elementsToAddToBuilder = NForAlgorithmComplexity.O_NlogN
251+
252+
val keyGen = WrapperGenerator<Int>(elementsToAddToBuilder)
253+
val expectedKeys = hashSetOf<IntWrapper>()
254+
255+
repeat(times = elementsToAddToBuilder) {
256+
val keyValue = Random.nextInt()
257+
val key = keyGen.wrapper(keyValue)
258+
expectedKeys.add(key)
259+
builder[key] = keyValue
260+
}
261+
262+
val elementsToRemoveFromBuilder = expectedKeys.size / 2
263+
expectedKeys.take(elementsToRemoveFromBuilder).forEach { key ->
264+
expectedKeys.remove(key)
265+
builder.remove(key)
266+
}
267+
268+
var map = builder.build()
269+
270+
val elementsToRemoveFromMap = expectedKeys.size / 2
271+
expectedKeys.take(elementsToRemoveFromMap).forEach { key ->
272+
expectedKeys.remove(key)
273+
map = map.remove(key)
274+
}
275+
assertEquals<Set<IntWrapper>>(expectedKeys, map.keys)
276+
277+
val elementsToAddToMap = elementsToAddToBuilder - expectedKeys.size
278+
repeat(elementsToAddToMap) {
279+
val keyValue = Random.nextInt()
280+
val key = keyGen.wrapper(keyValue)
281+
expectedKeys.add(key)
282+
map = map.put(key, keyValue)
283+
}
284+
assertEquals<Set<IntWrapper>>(expectedKeys, map.keys)
285+
286+
expectedKeys.toHashSet().forEach { key ->
287+
expectedKeys.remove(key)
288+
map = map.remove(key)
289+
}
290+
assertEquals<Set<IntWrapper>>(expectedKeys, map.keys)
291+
}
292+
246293
@Test
247294
fun removeEntryTests() {
248295
val builder = persistentHashMapOf<Int, String>().builder()

0 commit comments

Comments
 (0)