@@ -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