term_test.v

1.5 KB · raw

1module view23fn test_arrow_keys_are_decoded() {4	assert decode([u8(0x1b), u8(`[`), u8(`A`)]).kind == .up5	assert decode([u8(0x1b), u8(`[`), u8(`B`)]).kind == .down6	assert decode([u8(0x1b), u8(`[`), u8(`C`)]).kind == .right7	assert decode([u8(0x1b), u8(`[`), u8(`D`)]).kind == .left8	assert decode([u8(0x1b), u8(`[`), u8(`5`), u8(`~`)]).kind == .page_up9	assert decode([u8(0x1b), u8(`[`), u8(`6`), u8(`~`)]).kind == .page_down10}1112fn test_single_keys_are_decoded() {13	assert decode([u8(0x0d)]).kind == .enter14	assert decode([u8(0x7f)]).kind == .backspace15	assert decode([u8(0x09)]).kind == .tab16	assert decode([u8(0x03)]).kind == .interrupt17	assert decode([u8(0x04)]).kind == .eof18	assert decode([u8(0x1b)]).kind == .escape19	assert decode([u8(`q`)]).kind == .rune20	assert decode([u8(`q`)]).text == 'q'21	assert decode([u8(`/`)]).text == '/'22}2324fn test_typed_text_keeps_its_bytes() {25	// A pasted run arrives in one read and must stay together, and a multi-byte26	// character must not be split into mojibake.27	assert decode('search'.bytes()).text == 'search'28	assert decode('✦'.bytes()).text == '✦'29}3031// Now that Esc leaves the view, only a lone Esc may count as one: shift-tab,32// function keys and focus reports must not close it.33fn test_unknown_escape_sequences_are_not_esc() {34	assert decode([u8(0x1b), u8(`[`), u8(`Z`)]).kind == .backtab35	assert decode([u8(0x1b), u8(`O`), u8(`P`)]).kind == .unknown36	assert decode([u8(0x1b), u8(`[`), u8(`I`)]).kind == .unknown37	assert decode([u8(0x1b), u8(`x`)]).kind == .unknown38}