@@ -243,6 +243,53 @@ class PersistentHashMapBuilderTest : ExecutionTimeMeasuringTest() {
243
243
}
244
244
}
245
245
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
+
246
293
@Test
247
294
fun removeEntryTests () {
248
295
val builder = persistentHashMapOf<Int , String >().builder()
0 commit comments