import { testAll, testAllNoError, testAllObject } from "./test_utils" import * as ks from "./keyseq" import { mapstrToKeyseq as mks } from "./keyseq" function mk(k, mod?: ks.KeyModifiers) { return new ks.MinimalKey(k, mod) } { // {{{ parse and completions const keymap = new Map([ [[mk("u", { ctrlKey: true }), mk("j")], "scrollline 10"], [[mk("g"), mk("g")], "scrolltop"], [mks(""), "rarelyusedcommand"], ]) // This one actually found a bug once! testAllObject(ks.parse, [ [[[mk("g")], keymap], { keys: [mk("g")] }], [[[mk("g"), mk("g")], keymap], { exstr: "scrolltop" }], [ [[mk("Escape", { shiftKey: true, altKey: true })], keymap], { exstr: "rarelyusedcommand" }, ], ]) testAllObject(ks.completions, [ [[[mk("g")], keymap], new Map([[[mk("g"), mk("g")], "scrolltop"]])], [[mks("j"), keymap], new Map([[mks("j"), "scrollline 10"]])], ]) } // }}} // {{{ mapstr -> keysequence testAll(ks.bracketexprToKey, [ ["", [mk("a", { ctrlKey: true }), ""]], ["", [mk("<", { metaKey: true }), ""]], ["Foo", [mk("<", { metaKey: true }), "Foo"]], ["b", [mk("a", { metaKey: true }), "b"]], ["b", [mk("Escape", { shiftKey: true }), "b"]], ["b", [mk("Tab"), "b"]], ["<>b", [mk("<"), ">b"]], ["", [mk("<"), "tag >"]], ]) testAllObject(ks.mapstrMapToKeyMap, [ [ new Map([["j", "scrollline 10"], ["gg", "scrolltop"]]), new Map([ [[mk("j")], "scrollline 10"], [[mk("g"), mk("g")], "scrolltop"], ]), ], [ new Map([["j", "scrollline 10"], ["gg", "scrolltop"]]), new Map([ [[mk("u", { ctrlKey: true }), mk("j")], "scrollline 10"], [[mk("g"), mk("g")], "scrolltop"], ]), ], ]) testAllObject(ks.mapstrToKeyseq, [ [ "Some string", [ { altKey: false, ctrlKey: false, key: "S", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "o", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "m", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "e", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: " ", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "s", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "t", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "r", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "i", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "n", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "g", metaKey: false, shiftKey: false, }, ], ], [ "hithere", [ { altKey: false, ctrlKey: false, key: "h", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "i", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: true, key: "u", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "t", metaKey: false, shiftKey: false, }, { altKey: true, ctrlKey: false, key: "Enter", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "h", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "e", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "r", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "e", metaKey: false, shiftKey: false, }, ], ], [ "wat's up ", [ { altKey: false, ctrlKey: false, key: "w", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "a", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "t", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "'", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "s", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: " ", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "u", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "p", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: " ", metaKey: false, shiftKey: false, }, { altKey: false, ctrlKey: false, key: "Escape", metaKey: false, shiftKey: true, }, ], ], ["wat's up ", mks("wat's up ")], ]) // Check order of modifiers doesn't matter // Check aliases testAllObject(mks, [ ["", mks("")], ["", mks("")], ]) // }}}