mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-07-17 05:43:36 +00:00
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import { afterEach, describe, expect, it } from "vitest";
|
|
import { Terminal } from "@xterm/xterm";
|
|
|
|
const tick = () => new Promise((resolve) => setTimeout(resolve, 0));
|
|
|
|
describe("Android IME composition", () => {
|
|
let terminal: Terminal | undefined;
|
|
let container: HTMLDivElement | undefined;
|
|
|
|
afterEach(() => {
|
|
terminal?.dispose();
|
|
container?.remove();
|
|
terminal = undefined;
|
|
container = undefined;
|
|
});
|
|
|
|
it("forwards a shorter Vietnamese replacement to the shell", async () => {
|
|
container = document.createElement("div");
|
|
document.body.appendChild(container);
|
|
terminal = new Terminal();
|
|
terminal.open(container);
|
|
|
|
const input: string[] = [];
|
|
terminal.onData((data) => input.push(data));
|
|
|
|
const textarea = terminal.textarea!;
|
|
textarea.value = "Hoar";
|
|
textarea.selectionStart = textarea.value.length;
|
|
textarea.selectionEnd = textarea.value.length;
|
|
textarea.dispatchEvent(new CompositionEvent("compositionstart"));
|
|
textarea.dispatchEvent(
|
|
new CompositionEvent("compositionupdate", { data: "Hoar" }),
|
|
);
|
|
await tick();
|
|
|
|
textarea.value = "Hỏa";
|
|
textarea.selectionStart = textarea.value.length;
|
|
textarea.selectionEnd = textarea.value.length;
|
|
textarea.dispatchEvent(
|
|
new CompositionEvent("compositionupdate", { data: "Hỏa" }),
|
|
);
|
|
await tick();
|
|
textarea.dispatchEvent(new CompositionEvent("compositionend"));
|
|
await tick();
|
|
|
|
expect(input.join("")).toBe("\x7f\x7f\x7fỏa");
|
|
});
|
|
});
|