import { assert } from 'chai'; import { setFlag, testFlag } from '../../../lib/core/flags'; const enum Modifier { NoModifier = 0x00, ShiftModifier = 0x02, ControlModifier = 0x04, AltModifier = 0x08, MetaModifier = 0x10, KeypadModifier = 0x20 } describe('core.flags', () => { describe('testFlag', () => { test.each([ [Modifier.NoModifier, Modifier.NoModifier, true], [Modifier.NoModifier, Modifier.ShiftModifier, false], [Modifier.ControlModifier | Modifier.ShiftModifier, Modifier.ShiftModifier, true], [Modifier.ControlModifier | Modifier.ShiftModifier, Modifier.ControlModifier, true], [Modifier.ControlModifier | Modifier.ShiftModifier, Modifier.ControlModifier | Modifier.ShiftModifier, true], [Modifier.ControlModifier | Modifier.ShiftModifier, Modifier.AltModifier | Modifier.ControlModifier | Modifier.ShiftModifier, false], [Modifier.ControlModifier | Modifier.ShiftModifier, Modifier.NoModifier, false], [Modifier.ControlModifier | Modifier.ShiftModifier, Modifier.AltModifier, false], ])('testFlag#%#', (value: number, flag: number, result: boolean) => { assert.strictEqual(testFlag(value, flag), result); }); }); describe('setFlag', () => { test.each([ [Modifier.NoModifier, Modifier.ShiftModifier, true, Modifier.ShiftModifier], [Modifier.ShiftModifier, Modifier.ShiftModifier, false, Modifier.NoModifier], [Modifier.NoModifier, Modifier.ShiftModifier | Modifier.ControlModifier, true, Modifier.ShiftModifier | Modifier.ControlModifier], [Modifier.ShiftModifier | Modifier.ControlModifier, Modifier.ControlModifier, false, Modifier.ShiftModifier], [Modifier.ShiftModifier | Modifier.ControlModifier, Modifier.ShiftModifier, false, Modifier.ControlModifier], [Modifier.ShiftModifier | Modifier.ControlModifier, Modifier.ShiftModifier | Modifier.ControlModifier, false, Modifier.NoModifier], [Modifier.ShiftModifier | Modifier.ControlModifier | Modifier.AltModifier, Modifier.ShiftModifier | Modifier.ControlModifier, false, Modifier.AltModifier], [Modifier.AltModifier, Modifier.ShiftModifier | Modifier.ControlModifier, true, Modifier.ShiftModifier | Modifier.ControlModifier | Modifier.AltModifier], [Modifier.ShiftModifier | Modifier.ControlModifier, Modifier.NoModifier, true, Modifier.ShiftModifier | Modifier.ControlModifier], [Modifier.ShiftModifier | Modifier.ControlModifier, Modifier.NoModifier, false, Modifier.ShiftModifier | Modifier.ControlModifier], ])('setFlag#%#', (value: number, flag: number, on: boolean, result: number) => { assert.strictEqual(setFlag(value, flag, on), result); }); }); });