summaryrefslogtreecommitdiff
path: root/test/files/run/bitsets.scala
diff options
context:
space:
mode:
authorEugene Vigdorchik <eugene.vigdorchik@gmail.com>2013-03-21 12:14:52 +0400
committerEugene Vigdorchik <eugene.vigdorchik@gmail.com>2013-03-21 21:32:54 +0400
commit1b3a379e7b0518279ceae3a47135df35b4fe3439 (patch)
treeccaf2095c04a70056316745e92615b8697267733 /test/files/run/bitsets.scala
parent7adab908d661f1b238a96972e96ed11ea497bcdc (diff)
downloadscala-1b3a379e7b0518279ceae3a47135df35b4fe3439.tar.gz
scala-1b3a379e7b0518279ceae3a47135df35b4fe3439.tar.bz2
scala-1b3a379e7b0518279ceae3a47135df35b4fe3439.zip
SI-7102 Specialize isEmpty for bitsets
Currently bitsets use default isEmpty implementation inherited from Set, which tests for "size == 0". Calculating the size of a word in a bitmap requires summing through all bits set, whereas testing for emptyness needs only one comparison with zero. This commit overrides the default implementation with the specialized one looking for a non-zero word in this bitmap.
Diffstat (limited to 'test/files/run/bitsets.scala')
-rw-r--r--test/files/run/bitsets.scala13
1 files changed, 13 insertions, 0 deletions
diff --git a/test/files/run/bitsets.scala b/test/files/run/bitsets.scala
index 0ea43fcb95..d55f9e4e83 100644
--- a/test/files/run/bitsets.scala
+++ b/test/files/run/bitsets.scala
@@ -37,6 +37,19 @@ object TestMutable {
Console.println("mi1 = " + ms1.toImmutable)
Console.println("mi2 = " + ms2.toImmutable)
Console.println
+
+ val N = 257
+ val gen = 3
+ val bs = BitSet((1 until N): _*)
+ (1 until N).foldLeft(gen) {
+ case (acc, i) =>
+ assert(bs.size == N-i, s"Bad size for $bs, expected ${N-i} actual ${bs.size}")
+ assert(!bs.isEmpty, s"Unexpected isEmpty for $bs")
+ bs -= acc
+ acc*gen % N
+ }
+ assert(bs.size == 0, s"Expected size == 0 for $bs")
+ assert(bs.isEmpty, s"Expected isEmpty for $bs")
}
object TestMutable2 {