UNPKG

1.71 kBJavaScriptView Raw
1var claire = require('claire');
2
3var forAll = claire.forAll,
4 arb = claire.data,
5 label = claire.label,
6 choice = claire.choice,
7 transform = claire.transform;
8
9var BitSet = require('../lib/bitset').BitSet;
10var PosInt = transform(Math.floor, arb.Positive);
11
12var EmptyBitSet = label('bitset', transform(
13 function(size) {
14 return new BitSet(size);
15 },
16 choice(arb.Nothing, PosInt)));
17
18suite('BitSet', function() {
19
20test('get bit', forAll(EmptyBitSet, PosInt)
21 .satisfy(function(b, bit) {
22 b.set(bit);
23 return b.get(bit);
24 }).asTest());
25
26test('clear bit', forAll(EmptyBitSet, PosInt)
27 .satisfy(function(b, bit) {
28 b.set(bit);
29 b.clear(bit);
30 return !b.get(bit);
31 }).asTest());
32
33test('next set of empty', forAll(EmptyBitSet)
34 .satisfy(function(b) {
35 return b.nextSetBit(0) === -1;
36 }).asTest());
37
38test('next set of one bit', forAll(EmptyBitSet, PosInt)
39 .satisfy(function(b, bit) {
40 b.set(bit);
41 return b.nextSetBit(0) === bit;
42 }).asTest());
43
44test('next set same bit', forAll(EmptyBitSet, PosInt)
45 .satisfy(function(b, bit) {
46 b.set(bit);
47 return b.nextSetBit(bit) === bit;
48 }).asTest());
49
50test('next set following bit', forAll(EmptyBitSet, PosInt)
51 .satisfy(function(b, bit) {
52 b.set(bit);
53 return b.nextSetBit(bit+1) === -1;
54 }).asTest());
55
56test('next clear of empty', forAll(EmptyBitSet, PosInt)
57 .satisfy(function(b, bit) { return b.nextClearBit(bit) === bit; })
58 .asTest());
59
60test('next clear of one set', forAll(EmptyBitSet, PosInt)
61 .satisfy(function(b, bit) {
62 b.set(bit);
63 return b.nextClearBit(bit) === bit + 1;
64 }).asTest());
65
66});