Files
advanced-camera-card/tests/conditions/conditions/key.test.ts
T

68 lines
1.8 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { createConditionEvaluator } from '../../../src/conditions/factory';
import { createEvaluatorContext } from './test-utils';
// @vitest-environment jsdom
describe('key condition', () => {
it('should match a simple keypress', () => {
const evaluator = createConditionEvaluator(
{ condition: 'key' as const, key: 'a' },
createEvaluatorContext(),
);
expect(evaluator.evaluate({}).result).toBeFalsy();
expect(
evaluator.evaluate({
keys: {
a: { state: 'down', ctrl: false, shift: false, alt: false, meta: false },
},
}).result,
).toBeTruthy();
expect(
evaluator.evaluate({
keys: {
a: { state: 'up', ctrl: false, shift: false, alt: false, meta: false },
},
}).result,
).toBeFalsy();
});
it('should match a keypress with modifiers', () => {
const evaluator = createConditionEvaluator(
{
condition: 'key' as const,
key: 'a',
state: 'down' as const,
ctrl: true,
shift: true,
alt: true,
meta: true,
},
createEvaluatorContext(),
);
expect(evaluator.evaluate({}).result).toBeFalsy();
expect(
evaluator.evaluate({
keys: {
a: { state: 'down', ctrl: false, shift: false, alt: false, meta: false },
},
}).result,
).toBeFalsy();
expect(
evaluator.evaluate({
keys: {
a: { state: 'down', ctrl: true, shift: true, alt: true, meta: false },
},
}).result,
).toBeFalsy();
expect(
evaluator.evaluate({
keys: {
a: { state: 'down', ctrl: true, shift: true, alt: true, meta: true },
},
}).result,
).toBeTruthy();
});
});