Skip to content

Commit

Permalink
add test spec
Browse files Browse the repository at this point in the history
  • Loading branch information
ericvergnaud committed Mar 10, 2024
1 parent 1b3150b commit 3658336
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 1 deletion.
94 changes: 94 additions & 0 deletions runtime/JavaScript/spec/BitSetSpec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
import BitSet from "../src/antlr4/misc/BitSet.js";

describe('test BitSet', () => {

it("is empty", () => {
const bs = new BitSet();
expect(bs.length).toEqual(0);
})

it("sets 1 value", () => {
const bs = new BitSet();
bs.add(67);
expect(bs.length).toEqual(1);
expect(bs.has(67)).toBeTrue();
})

it("clears 1 value", () => {
const bs = new BitSet();
bs.add(67);
bs.remove(67)
expect(bs.length).toEqual(0);
expect(bs.has(67)).toBeFalse();
})

it("sets 2 consecutive values", () => {
const bs = new BitSet();
bs.add(67);
bs.add(68);
expect(bs.length).toEqual(2);
expect(bs.has(67)).toBeTrue();
expect(bs.has(68)).toBeTrue();
})

it("sets 2 close values", () => {
const bs = new BitSet();
bs.add(67);
bs.add(70);
expect(bs.length).toEqual(2);
expect(bs.has(67)).toBeTrue();
expect(bs.has(70)).toBeTrue();
})

it("sets 2 distant values", () => {
const bs = new BitSet();
bs.add(67);
bs.add(241);
expect(bs.length).toEqual(2);
expect(bs.has(67)).toBeTrue();
expect(bs.has(241)).toBeTrue();
})

it("combines 2 identical sets", () => {
const bs1 = new BitSet();
bs1.add(67);
const bs2 = new BitSet();
bs2.add(67);
bs1.or(bs2);
expect(bs1.length).toEqual(1);
expect(bs1.has(67)).toBeTrue();
})

it("combines 2 distinct sets", () => {
const bs1 = new BitSet();
bs1.add(67);
const bs2 = new BitSet();
bs2.add(69);
bs1.or(bs2);
expect(bs1.length).toEqual(2);
expect(bs1.has(67)).toBeTrue();
expect(bs1.has(69)).toBeTrue();
})

it("combines 2 overlapping sets", () => {
const bs1 = new BitSet();
bs1.add(67);
bs1.add(69);
const bs2 = new BitSet();
bs2.add(69);
bs2.add(71);
bs1.or(bs2);
expect(bs1.length).toEqual(3);
expect(bs1.has(67)).toBeTrue();
expect(bs1.has(69)).toBeTrue();
expect(bs1.has(71)).toBeTrue();
})

it("returns values", () => {
const bs = new BitSet();
bs.add(67);
bs.add(69);
const values = bs.values();
expect(values).toEqual(['67', '69']);
})
})
2 changes: 1 addition & 1 deletion runtime/JavaScript/src/antlr4/misc/BitSet.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export default class BitSet {
}

values() {
return Object.keys(this.data);
return Object.keys(this.data); // .map(s => parseInt(s))
}

minValue() {
Expand Down

0 comments on commit 3658336

Please sign in to comment.