import { expect } from 'chai' import { set, unset, toggle, isset } from '../src/flags' describe('flags', function () { describe('set', function () { it('should set a single flag', function () { expect(set(4, 0b10010)).to.eq(0b10110) }) it('should set the correct bits on empty flags', function () { const result = set([1, 2, 8, 32]) expect(result).to.eq(0b101011) }) it('should set the correct bits on exisiting flags', function () { const settings = 0b1111 const result = set([1, 2, 8], settings) expect(result).to.eq(0b1111) }) }) describe('unset', function () { it('should unset a single flag', function () { const settings = 0b1111 const result = unset(2, settings) expect(result).to.eq(0b1101) }) it('should unset nothing on empty flags', function () { const settings = 0 const result = unset([1, 2, 4, 8], settings) expect(result).to.eq(0) }) it('should unset all bits', function () { const settings = 0b1111 const result = unset([1, 2, 4, 8], settings) expect(result).to.eq(0) }) it('should keep zeros as they are', function () { const settings = 0b10101 const result = unset([1, 2, 8], settings) expect(result).to.eq(0b10100) }) }) describe('toggle', function () { it('should invert all flags', function () { const settings = 0b1111 const result = toggle([1, 2, 4, 8], settings) expect(result).to.eq(0b0000) }) it('should invert only specific flags', function () { const settings = 0b1010 const result = toggle([8, 1], settings) expect(result).to.eq(0b0011) }) }) describe('isset', function () { it('should check a single flag', function () { expect(isset(4, 0b1101101)).to.eq(true) expect(isset(16, 0b1101101)).to.eq(false) }) it('should check multiple flags', function () { expect(isset([4, 16, 2], 0b10010111)).to.eq(true) expect(isset([8, 32, 64], 0b10010111)).to.eq(false) expect(isset([1, 8], 0b10010111)).to.eq(false) expect(isset([1, 4], 0b10010111)).to.eq(true) }) }) })