/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { describe, it, expect } from 'vitest';
import { formatKeyBinding, formatCommand } from './keybindingUtils.js';
import { Command, KeyBinding } from './keyBindings.js';
describe('keybindingUtils', () => {
    describe('formatKeyBinding', () => {
        const testCases = [
            {
                name: 'simple key',
                binding: new KeyBinding('a'),
                expected: { darwin: 'A', win32: 'A', linux: 'A', default: 'A' },
            },
            {
                name: 'named key (return)',
                binding: new KeyBinding('enter'),
                expected: {
                    darwin: 'Enter',
                    win32: 'Enter',
                    linux: 'Enter',
                    default: 'Enter',
                },
            },
            {
                name: 'named key (escape)',
                binding: new KeyBinding('escape'),
                expected: { darwin: 'Esc', win32: 'Esc', linux: 'Esc', default: 'Esc' },
            },
            {
                name: 'ctrl modifier',
                binding: new KeyBinding('ctrl+c'),
                expected: {
                    darwin: 'Ctrl+C',
                    win32: 'Ctrl+C',
                    linux: 'Ctrl+C',
                    default: 'Ctrl+C',
                },
            },
            {
                name: 'cmd modifier',
                binding: new KeyBinding('cmd+z'),
                expected: {
                    darwin: 'Cmd+Z',
                    win32: 'Win+Z',
                    linux: 'Super+Z',
                    default: 'Cmd/Win+Z',
                },
            },
            {
                name: 'alt/option modifier',
                binding: new KeyBinding('alt+left'),
                expected: {
                    darwin: 'Option+Left',
                    win32: 'Alt+Left',
                    linux: 'Alt+Left',
                    default: 'Alt+Left',
                },
            },
            {
                name: 'shift modifier',
                binding: new KeyBinding('shift+up'),
                expected: {
                    darwin: 'Shift+Up',
                    win32: 'Shift+Up',
                    linux: 'Shift+Up',
                    default: 'Shift+Up',
                },
            },
            {
                name: 'multiple modifiers (ctrl+shift)',
                binding: new KeyBinding('ctrl+shift+z'),
                expected: {
                    darwin: 'Ctrl+Shift+Z',
                    win32: 'Ctrl+Shift+Z',
                    linux: 'Ctrl+Shift+Z',
                    default: 'Ctrl+Shift+Z',
                },
            },
            {
                name: 'all modifiers',
                binding: new KeyBinding('ctrl+alt+shift+cmd+a'),
                expected: {
                    darwin: 'Ctrl+Option+Shift+Cmd+A',
                    win32: 'Ctrl+Alt+Shift+Win+A',
                    linux: 'Ctrl+Alt+Shift+Super+A',
                    default: 'Ctrl+Alt+Shift+Cmd/Win+A',
                },
            },
        ];
        testCases.forEach(({ name, binding, expected }) => {
            describe(`${name}`, () => {
                it('formats correctly for darwin', () => {
                    expect(formatKeyBinding(binding, 'darwin')).toBe(expected.darwin);
                });
                it('formats correctly for win32', () => {
                    expect(formatKeyBinding(binding, 'win32')).toBe(expected.win32);
                });
                it('formats correctly for linux', () => {
                    expect(formatKeyBinding(binding, 'linux')).toBe(expected.linux);
                });
                it('formats correctly for default', () => {
                    expect(formatKeyBinding(binding, 'default')).toBe(expected.default);
                });
            });
        });
    });
    describe('formatCommand', () => {
        it('formats default commands (using default platform behavior)', () => {
            expect(formatCommand(Command.QUIT, undefined, 'default')).toBe('Ctrl+C');
            expect(formatCommand(Command.SUBMIT, undefined, 'default')).toBe('Enter');
            expect(formatCommand(Command.TOGGLE_BACKGROUND_SHELL, undefined, 'default')).toBe('Ctrl+B');
        });
        it('returns empty string for unknown commands', () => {
            expect(formatCommand('unknown.command', undefined, 'default')).toBe('');
        });
    });
});
//# sourceMappingURL=keybindingUtils.test.js.map