import gleam/list import gleeunit import mpv/key.{type Key, Char, csi, esc} pub fn main() -> Nil { gleeunit.main() } type TestCase { TestCase(input: List(String), expected: Key) } pub fn key_from_list_test() { let test_cases = [ TestCase(["c"], Char("c")), TestCase([esc, csi, "D"], key.Left), TestCase([esc, csi, "C"], key.Right), TestCase([esc, csi, "A"], key.Up), TestCase([esc, csi, "B"], key.Down), TestCase([esc, csi], key.Continue([esc, csi])), TestCase([esc], key.Continue([esc])), TestCase([], key.Continue([])), TestCase(["$"], key.Continue(["$"])), TestCase(["$", "a"], key.Continue(["$", "a"])), TestCase(["$", "a", "b"], key.Continue(["$", "ab"])), TestCase(["$", "ab", "\r"], key.Input("ab")), ] list.each(test_cases, fn(tc) { assert tc.expected == key.from_list(tc.input) }) }