From ef4ab3ec503a90a1f41b4912e081817f0496383e Mon Sep 17 00:00:00 2001 From: Alexandr Nikitin Date: Wed, 12 Sep 2018 16:10:47 +0300 Subject: [PATCH] Attempt to fix #39 approximateElementCount() is wrong after intersect or union --- .../src/main/scala/bloomfilter/mutable/UnsafeBitArray.scala | 1 + .../scala/tests/bloomfilter/mutable/UnsafeBitArraysSpec.scala | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bloom-filter/src/main/scala/bloomfilter/mutable/UnsafeBitArray.scala b/bloom-filter/src/main/scala/bloomfilter/mutable/UnsafeBitArray.scala index f8cd998..2708801 100644 --- a/bloom-filter/src/main/scala/bloomfilter/mutable/UnsafeBitArray.scala +++ b/bloom-filter/src/main/scala/bloomfilter/mutable/UnsafeBitArray.scala @@ -33,6 +33,7 @@ class UnsafeBitArray(val numberOfBits: Long) extends Serializable { val thatLong = unsafe.getLong(that.ptr + (index >>> 6) * 8L) val longAtIndex = combiner(thisLong, thatLong) unsafe.putLong(result.ptr + (index >>> 6) * 8L, longAtIndex) + result.bitCount += java.lang.Long.bitCount(longAtIndex) index += 64 } result diff --git a/tests/src/test/scala/tests/bloomfilter/mutable/UnsafeBitArraysSpec.scala b/tests/src/test/scala/tests/bloomfilter/mutable/UnsafeBitArraysSpec.scala index 863102e..143cd17 100644 --- a/tests/src/test/scala/tests/bloomfilter/mutable/UnsafeBitArraysSpec.scala +++ b/tests/src/test/scala/tests/bloomfilter/mutable/UnsafeBitArraysSpec.scala @@ -49,7 +49,8 @@ class UnsafeBitArraysSpec extends Properties("UnsafeBitArray") { commonIndices.foreach(x => { array.set(x); thatArray.set(x) }) val sut = array & thatArray - val result = commonIndices.forall(sut.get) + val result = commonIndices.forall(sut.get) && + commonIndices.size == sut.getBitCount array.dispose() thatArray.dispose()