implement containsAll method in Bitmap class and add corresponding tests
This commit is contained in:
parent
a032007ca4
commit
4f99bf61b4
|
|
@ -219,4 +219,49 @@ describe("Bitmap", () => {
|
||||||
const bitmap2 = Bitmap.fromString(bitmap.toString());
|
const bitmap2 = Bitmap.fromString(bitmap.toString());
|
||||||
expect(bitmap2.toString()).toEqual(bitmap.toString());
|
expect(bitmap2.toString()).toEqual(bitmap.toString());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("containsAll returns true when all bits are set", () => {
|
||||||
|
const a = new Bitmap(8);
|
||||||
|
a.set(0).set(2).set(4).set(6);
|
||||||
|
|
||||||
|
const b = new Bitmap(8);
|
||||||
|
b.set(0).set(4);
|
||||||
|
|
||||||
|
expect(a.containsAll(b)).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("containsAll returns false when some bits are missing", () => {
|
||||||
|
const a = new Bitmap(8);
|
||||||
|
a.set(0).set(2);
|
||||||
|
|
||||||
|
const b = new Bitmap(8);
|
||||||
|
b.set(0).set(4);
|
||||||
|
|
||||||
|
expect(a.containsAll(b)).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("containsAll returns true for empty bitmap", () => {
|
||||||
|
const a = new Bitmap(8);
|
||||||
|
a.set(1).set(3);
|
||||||
|
|
||||||
|
const b = new Bitmap(8);
|
||||||
|
|
||||||
|
expect(a.containsAll(b)).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("containsAll returns true when comparing bitmap with itself", () => {
|
||||||
|
const a = new Bitmap(8);
|
||||||
|
a.set(1).set(3);
|
||||||
|
|
||||||
|
expect(a.containsAll(a)).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("containsAll works with single-bit bitmaps", () => {
|
||||||
|
const a = new Bitmap(8).set(5);
|
||||||
|
const b = new Bitmap(8).set(5);
|
||||||
|
const c = new Bitmap(8).set(6);
|
||||||
|
|
||||||
|
expect(a.containsAll(b)).toBe(true);
|
||||||
|
expect(a.containsAll(c)).toBe(false);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -383,4 +383,16 @@ export class Bitmap {
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return whether all bits set in `other` are also set in this bitmap.
|
||||||
|
* @param {Bitmap} other - Bitmap to check against
|
||||||
|
* @returns {boolean} True if every set bit in `other` is also set in this bitmap
|
||||||
|
*/
|
||||||
|
public containsAll(other: Bitmap): boolean {
|
||||||
|
for (const bit of other) {
|
||||||
|
if (!this.contains(bit)) return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue