mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GP-3938: Several improvements to the Terminal.
This commit is contained in:
@@ -56,6 +56,48 @@ public class TerminalProviderTest extends AbstractGhidraHeadedDebuggerTest {
|
||||
TerminalService terminalService;
|
||||
ClipboardService clipboardService;
|
||||
|
||||
@Test
|
||||
public void testDecodeUnicode() throws Exception {
|
||||
// Two non-supplemental characters
|
||||
char[] c = new char[] {
|
||||
0x274c,
|
||||
0x277c
|
||||
};
|
||||
byte[] b = new String(c).getBytes("utf8");
|
||||
|
||||
terminalService = addPlugin(tool, TerminalPlugin.class);
|
||||
clipboardService = addPlugin(tool, ClipboardPlugin.class);
|
||||
env.showFrontEndTool();
|
||||
|
||||
try (Terminal term = terminalService.createNullTerminal(Charset.forName("utf8"), out -> {
|
||||
out.reset();
|
||||
})) {
|
||||
term.injectDisplayOutput(b);
|
||||
term.injectDisplayOutput("\u001b[1D".getBytes("utf8"));
|
||||
|
||||
assertEquals(1, term.getCursorColumn());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDecodeUnicode24Bit() throws Exception {
|
||||
byte[] b = bytes(0xf0, 0x93, 0x90, 0xb3); // A supplemental character
|
||||
|
||||
terminalService = addPlugin(tool, TerminalPlugin.class);
|
||||
clipboardService = addPlugin(tool, ClipboardPlugin.class);
|
||||
env.showFrontEndTool();
|
||||
|
||||
try (Terminal term = terminalService.createNullTerminal(Charset.forName("utf8"), out -> {
|
||||
out.reset();
|
||||
})) {
|
||||
term.injectDisplayOutput(b);
|
||||
term.injectDisplayOutput(b);
|
||||
term.injectDisplayOutput("\u001b[1D".getBytes("utf8"));
|
||||
|
||||
assertEquals(1, term.getCursorColumn());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("resource")
|
||||
public void testBash() throws Exception {
|
||||
@@ -80,7 +122,7 @@ public class TerminalProviderTest extends AbstractGhidraHeadedDebuggerTest {
|
||||
term.addTerminalListener(new TerminalListener() {
|
||||
@Override
|
||||
public void resized(short cols, short rows) {
|
||||
System.err.println("resized: " + cols + "x" + rows);
|
||||
// System.err.println("resized: " + cols + "x" + rows);
|
||||
child.setWindowSize(cols, rows);
|
||||
}
|
||||
});
|
||||
@@ -115,7 +157,7 @@ public class TerminalProviderTest extends AbstractGhidraHeadedDebuggerTest {
|
||||
term.addTerminalListener(new TerminalListener() {
|
||||
@Override
|
||||
public void resized(short cols, short rows) {
|
||||
System.err.println("resized: " + cols + "x" + rows);
|
||||
// System.err.println("resized: " + cols + "x" + rows);
|
||||
child.setWindowSize(cols, rows);
|
||||
}
|
||||
});
|
||||
@@ -147,7 +189,7 @@ public class TerminalProviderTest extends AbstractGhidraHeadedDebuggerTest {
|
||||
term.addTerminalListener(new TerminalListener() {
|
||||
@Override
|
||||
public void resized(short cols, short rows) {
|
||||
System.err.println("resized: " + cols + "x" + rows);
|
||||
// System.err.println("resized: " + cols + "x" + rows);
|
||||
child.setWindowSize(cols, rows);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user