1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-20 15:35:24 +02:00

[168197] Fix Terminal for CDC-1.1/Foundation-1.1

This commit is contained in:
Martin Oberhuber 2008-04-11 18:57:46 +00:00
parent 6bb3eeaebb
commit 1941a62e16
6 changed files with 126 additions and 82 deletions

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/CDC-1.1%Foundation-1.1"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>

View file

@ -1,8 +1,12 @@
#Sun Mar 16 19:48:21 CET 2008 #Fri Apr 11 20:49:09 CEST 2008
eclipse.preferences.version=1 eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.4 org.eclipse.jdt.core.compiler.compliance=1.4
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.doc.comment.support=enabled org.eclipse.jdt.core.compiler.doc.comment.support=enabled
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

View file

@ -10,7 +10,8 @@ Require-Bundle: org.junit,
org.eclipse.swt, org.eclipse.swt,
org.eclipse.jface, org.eclipse.jface,
org.eclipse.core.runtime org.eclipse.core.runtime
Bundle-RequiredExecutionEnvironment: J2SE-1.4 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
J2SE-1.4
Export-Package: org.eclipse.tm.internal.terminal.connector;x-internal:=true, Export-Package: org.eclipse.tm.internal.terminal.connector;x-internal:=true,
org.eclipse.tm.internal.terminal.emulator;x-internal:=true, org.eclipse.tm.internal.terminal.emulator;x-internal:=true,
org.eclipse.tm.internal.terminal.model;x-internal:=true, org.eclipse.tm.internal.terminal.model;x-internal:=true,

View file

@ -1,12 +1,13 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007 Wind River Systems, Inc. and others. * Copyright (c) 2007, 2008 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Michael Scharf (Wind River) - initial API and implementation * Michael Scharf (Wind River) - initial API and implementation
* Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1
*******************************************************************************/ *******************************************************************************/
package org.eclipse.tm.internal.terminal.emulator; package org.eclipse.tm.internal.terminal.emulator;
@ -34,7 +35,7 @@ public class VT100EmulatorBackendTest extends TestCase {
protected String toMultiLineText(ITerminalTextDataReadOnly term) { protected String toMultiLineText(ITerminalTextDataReadOnly term) {
return TerminalTextTestHelper.toMultiLineText(term); return TerminalTextTestHelper.toMultiLineText(term);
} }
protected void fill(ITerminalTextData term, String s) { protected void fill(ITerminalTextData term, String s) {
TerminalTextTestHelper.fill(term,s); TerminalTextTestHelper.fill(term,s);
} }
@ -50,7 +51,7 @@ public class VT100EmulatorBackendTest extends TestCase {
* @param actual * @param actual
*/ */
protected void assertEqualsTerm(String expected,String actual) { protected void assertEqualsTerm(String expected,String actual) {
assertEquals(expected.replaceAll(" ", "."), actual.replaceAll("\000", ".")); assertEquals(expected.replace(' ', '.'), actual.replace('\000', '.'));
} }
/** /**
* Used for simple text * Used for simple text
@ -91,7 +92,7 @@ public class VT100EmulatorBackendTest extends TestCase {
assertEquals(3,vt100.getLines()); assertEquals(3,vt100.getLines());
assertEquals(4,vt100.getColumns()); assertEquals(4,vt100.getColumns());
assertEqualsTerm(s,toMultiLineText(term)); assertEqualsTerm(s,toMultiLineText(term));
vt100.setCursor(0, 2); vt100.setCursor(0, 2);
vt100.setDimensions(2, 4); vt100.setDimensions(2, 4);
assertEquals(0, vt100.getCursorLine()); assertEquals(0, vt100.getCursorLine());
@ -103,7 +104,7 @@ public class VT100EmulatorBackendTest extends TestCase {
assertEquals(2, vt100.getCursorColumn()); assertEquals(2, vt100.getCursorColumn());
assertEqualsTerm(s,toMultiLineText(term)); assertEqualsTerm(s,toMultiLineText(term));
vt100.setCursor(0, 3); vt100.setCursor(0, 3);
vt100.setDimensions(5, 2); vt100.setDimensions(5, 2);
assertEquals(0, vt100.getCursorLine()); assertEquals(0, vt100.getCursorLine());
@ -126,7 +127,7 @@ public class VT100EmulatorBackendTest extends TestCase {
ITerminalTextData term=makeITerminalTextData(); ITerminalTextData term=makeITerminalTextData();
IVT100EmulatorBackend vt100=makeBakend(term); IVT100EmulatorBackend vt100=makeBakend(term);
vt100.setDimensions(3, 4); vt100.setDimensions(3, 4);
String s = String s =
"aaaa\n" + "aaaa\n" +
"bbbb\n" + "bbbb\n" +
"cccc\n" + "cccc\n" +
@ -161,7 +162,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"1234\n" + "1234\n" +
"4 56\n" + "4 56\n" +
"9012",toMultiLineText(term)); "9012",toMultiLineText(term));
fill(term, s); fill(term, s);
vt100.setCursor(1, 1); vt100.setCursor(1, 1);
vt100.insertCharacters(2); vt100.insertCharacters(2);
@ -186,7 +187,7 @@ public class VT100EmulatorBackendTest extends TestCase {
vt100.setCursor(0, 0); vt100.setCursor(0, 0);
vt100.insertCharacters(14); vt100.insertCharacters(14);
assertEqualsTerm(" ",toMultiLineText(term)); assertEqualsTerm(" ",toMultiLineText(term));
vt100.setDimensions(1, 10); vt100.setDimensions(1, 10);
fill(term, "0123456789"); fill(term, "0123456789");
vt100.setCursor(0, 3); vt100.setCursor(0, 3);
@ -210,7 +211,7 @@ public class VT100EmulatorBackendTest extends TestCase {
ITerminalTextData term=makeITerminalTextData(); ITerminalTextData term=makeITerminalTextData();
IVT100EmulatorBackend vt100=makeBakend(term); IVT100EmulatorBackend vt100=makeBakend(term);
vt100.setDimensions(3, 4); vt100.setDimensions(3, 4);
String s = String s =
"aaaa\n" + "aaaa\n" +
"bbbb\n" + "bbbb\n" +
"cccc\n" + "cccc\n" +
@ -234,7 +235,7 @@ public class VT100EmulatorBackendTest extends TestCase {
" \n" + " \n" +
" \n" + " \n" +
" ",toMultiLineText(term)); " ",toMultiLineText(term));
fill(term, s); fill(term, s);
vt100.setCursor(1, 0); vt100.setCursor(1, 0);
vt100.eraseToEndOfScreen(); vt100.eraseToEndOfScreen();
@ -264,7 +265,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"0123\n" + "0123\n" +
"4 \n" + "4 \n" +
" ",toMultiLineText(term)); " ",toMultiLineText(term));
fill(term, s); fill(term, s);
vt100.setCursor(1, 4); vt100.setCursor(1, 4);
assertEquals(1,vt100.getCursorLine()); assertEquals(1,vt100.getCursorLine());
@ -282,7 +283,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"456.\n" + "456.\n" +
" ",toMultiLineText(term)); " ",toMultiLineText(term));
fill(term, s); fill(term, s);
vt100.setCursor(1, 5); vt100.setCursor(1, 5);
vt100.eraseToEndOfScreen(); vt100.eraseToEndOfScreen();
@ -333,7 +334,7 @@ public class VT100EmulatorBackendTest extends TestCase {
ITerminalTextData term=makeITerminalTextData(); ITerminalTextData term=makeITerminalTextData();
IVT100EmulatorBackend vt100=makeBakend(term); IVT100EmulatorBackend vt100=makeBakend(term);
vt100.setDimensions(3, 4); vt100.setDimensions(3, 4);
String s = String s =
"aaaa\n" + "aaaa\n" +
"bbbb\n" + "bbbb\n" +
"cccc\n" + "cccc\n" +
@ -357,7 +358,7 @@ public class VT100EmulatorBackendTest extends TestCase {
" 123\n" + " 123\n" +
"4567\n" + "4567\n" +
"8901",toMultiLineText(term)); "8901",toMultiLineText(term));
fill(term, s); fill(term, s);
vt100.setCursor(1, 0); vt100.setCursor(1, 0);
vt100.eraseToCursor(); vt100.eraseToCursor();
@ -387,7 +388,7 @@ public class VT100EmulatorBackendTest extends TestCase {
" \n" + " \n" +
" 67\n" + " 67\n" +
"8901",toMultiLineText(term)); "8901",toMultiLineText(term));
fill(term, s); fill(term, s);
vt100.setCursor(1, 4); vt100.setCursor(1, 4);
vt100.eraseToCursor(); vt100.eraseToCursor();
@ -403,7 +404,7 @@ public class VT100EmulatorBackendTest extends TestCase {
" \n" + " \n" +
"8901",toMultiLineText(term)); "8901",toMultiLineText(term));
fill(term, s); fill(term, s);
vt100.setCursor(1, 5); vt100.setCursor(1, 5);
vt100.eraseToCursor(); vt100.eraseToCursor();
@ -470,7 +471,7 @@ public class VT100EmulatorBackendTest extends TestCase {
} }
public void testEraseLine() { public void testEraseLine() {
String s = String s =
"abcde\n" + "abcde\n" +
"fghij\n" + "fghij\n" +
"klmno\n" + "klmno\n" +
@ -496,7 +497,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"zABCD\n" + "zABCD\n" +
"EFGHI", toMultiLineText(term)); "EFGHI", toMultiLineText(term));
vt100.setDimensions(3, 5); vt100.setDimensions(3, 5);
fill(term, s); fill(term, s);
vt100.setCursor(2, 3); vt100.setCursor(2, 3);
@ -513,7 +514,7 @@ public class VT100EmulatorBackendTest extends TestCase {
} }
public void testEraseLineToEnd() { public void testEraseLineToEnd() {
String s = String s =
"abcde\n" + "abcde\n" +
"fghij\n" + "fghij\n" +
"klmno\n" + "klmno\n" +
@ -553,7 +554,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"zABCD\n" + "zABCD\n" +
"EFGHI", toMultiLineText(term)); "EFGHI", toMultiLineText(term));
vt100.setDimensions(3, 5); vt100.setDimensions(3, 5);
fill(term, s); fill(term, s);
vt100.setCursor(2, 3); vt100.setCursor(2, 3);
@ -569,7 +570,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"EFG ", toMultiLineText(term)); "EFG ", toMultiLineText(term));
vt100.setDimensions(3, 5); vt100.setDimensions(3, 5);
fill(term, s); fill(term, s);
vt100.setCursor(2, 4); vt100.setCursor(2, 4);
vt100.eraseLineToEnd(); vt100.eraseLineToEnd();
assertEquals(2,vt100.getCursorLine()); assertEquals(2,vt100.getCursorLine());
@ -597,7 +598,7 @@ public class VT100EmulatorBackendTest extends TestCase {
} }
public void testEraseLineToCursor() { public void testEraseLineToCursor() {
String s = String s =
"abcde\n" + "abcde\n" +
"fghij\n" + "fghij\n" +
"klmno\n" + "klmno\n" +
@ -637,7 +638,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"zABCD\n" + "zABCD\n" +
"EFGHI", toMultiLineText(term)); "EFGHI", toMultiLineText(term));
vt100.setDimensions(3, 5); vt100.setDimensions(3, 5);
fill(term, s); fill(term, s);
vt100.setCursor(2, 3); vt100.setCursor(2, 3);
@ -653,7 +654,7 @@ public class VT100EmulatorBackendTest extends TestCase {
" I", toMultiLineText(term)); " I", toMultiLineText(term));
vt100.setDimensions(3, 5); vt100.setDimensions(3, 5);
fill(term, s); fill(term, s);
vt100.setCursor(2, 4); vt100.setCursor(2, 4);
vt100.eraseLineToCursor(); vt100.eraseLineToCursor();
assertEquals(2,vt100.getCursorLine()); assertEquals(2,vt100.getCursorLine());
@ -789,7 +790,7 @@ public class VT100EmulatorBackendTest extends TestCase {
ITerminalTextData term=makeITerminalTextData(); ITerminalTextData term=makeITerminalTextData();
IVT100EmulatorBackend vt100=makeBakend(term); IVT100EmulatorBackend vt100=makeBakend(term);
vt100.setDimensions(3, 4); vt100.setDimensions(3, 4);
String s = String s =
"aaaa\n" + "aaaa\n" +
"bbbb\n" + "bbbb\n" +
"cccc\n" + "cccc\n" +
@ -824,7 +825,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"1234\n" + "1234\n" +
"467 \n" + "467 \n" +
"9012",toMultiLineText(term)); "9012",toMultiLineText(term));
fill(term, s); fill(term, s);
vt100.setCursor(1, 1); vt100.setCursor(1, 1);
vt100.deleteCharacters(2); vt100.deleteCharacters(2);
@ -849,7 +850,7 @@ public class VT100EmulatorBackendTest extends TestCase {
vt100.setCursor(0, 0); vt100.setCursor(0, 0);
vt100.deleteCharacters(14); vt100.deleteCharacters(14);
assertEqualsTerm(" ",toMultiLineText(term)); assertEqualsTerm(" ",toMultiLineText(term));
vt100.setDimensions(1, 10); vt100.setDimensions(1, 10);
fill(term, "0123456789"); fill(term, "0123456789");
vt100.setCursor(0, 3); vt100.setCursor(0, 3);
@ -861,7 +862,7 @@ public class VT100EmulatorBackendTest extends TestCase {
vt100.setCursor(0, 3); vt100.setCursor(0, 3);
vt100.deleteCharacters(2); vt100.deleteCharacters(2);
assertEqualsTerm("01256789 ",toMultiLineText(term)); assertEqualsTerm("01256789 ",toMultiLineText(term));
vt100.setDimensions(1, 10); vt100.setDimensions(1, 10);
fill(term, "0123456789"); fill(term, "0123456789");
vt100.setCursor(0, 3); vt100.setCursor(0, 3);
@ -1038,7 +1039,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"90a ", toMultiLineText(term)); "90a ", toMultiLineText(term));
assertEquals(2,vt100.getCursorLine()); assertEquals(2,vt100.getCursorLine());
assertEquals(3,vt100.getCursorColumn()); assertEquals(3,vt100.getCursorColumn());
vt100.appendString("b"); vt100.appendString("b");
assertEqualsTerm( assertEqualsTerm(
"0123\n" + "0123\n" +
@ -1047,7 +1048,7 @@ public class VT100EmulatorBackendTest extends TestCase {
" ", toMultiLineText(term)); " ", toMultiLineText(term));
assertEquals(2,vt100.getCursorLine()); assertEquals(2,vt100.getCursorLine());
assertEquals(0,vt100.getCursorColumn()); assertEquals(0,vt100.getCursorColumn());
vt100.appendString("cd"); vt100.appendString("cd");
assertEqualsTerm( assertEqualsTerm(
"0123\n" + "0123\n" +
@ -1056,7 +1057,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"cd ", toMultiLineText(term)); "cd ", toMultiLineText(term));
assertEquals(2,vt100.getCursorLine()); assertEquals(2,vt100.getCursorLine());
assertEquals(2,vt100.getCursorColumn()); assertEquals(2,vt100.getCursorColumn());
vt100.appendString("efgh"); vt100.appendString("efgh");
assertEqualsTerm( assertEqualsTerm(
"0123\n" + "0123\n" +
@ -1066,7 +1067,7 @@ public class VT100EmulatorBackendTest extends TestCase {
"gh ", toMultiLineText(term)); "gh ", toMultiLineText(term));
assertEquals(2,vt100.getCursorLine()); assertEquals(2,vt100.getCursorLine());
assertEquals(2,vt100.getCursorColumn()); assertEquals(2,vt100.getCursorColumn());
vt100.appendString("ijklmnopqrstuvwx"); vt100.appendString("ijklmnopqrstuvwx");
assertEqualsTerm( assertEqualsTerm(
"cdef\n" + "cdef\n" +
@ -1140,7 +1141,7 @@ public class VT100EmulatorBackendTest extends TestCase {
assertEquals(2,vt100.getCursorLine()); assertEquals(2,vt100.getCursorLine());
assertEquals(3,vt100.getCursorColumn()); assertEquals(3,vt100.getCursorColumn());
vt100.processNewline(); vt100.processNewline();
assertEqualsTerm( assertEqualsTerm(
"2222\n" + "2222\n" +

View file

@ -1,15 +1,18 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007 Wind River Systems, Inc. and others. * Copyright (c) 2007, 2008 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Michael Scharf (Wind River) - initial API and implementation * Michael Scharf (Wind River) - initial API and implementation
* Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1
*******************************************************************************/ *******************************************************************************/
package org.eclipse.tm.internal.terminal.model; package org.eclipse.tm.internal.terminal.model;
import java.util.ArrayList;
import org.eclipse.tm.terminal.model.ITerminalTextData; import org.eclipse.tm.terminal.model.ITerminalTextData;
import org.eclipse.tm.terminal.model.LineSegment; import org.eclipse.tm.terminal.model.LineSegment;
import org.eclipse.tm.terminal.model.Style; import org.eclipse.tm.terminal.model.Style;
@ -37,7 +40,26 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
} }
private String stripMultiLine(String s) { private String stripMultiLine(String s) {
StringBuffer b=new StringBuffer(); StringBuffer b=new StringBuffer();
String[] lines=s.split("\n"); // String[] lines=s.split("\n");
// <J2ME CDC-1.1 Foundation-1.1 variant>
ArrayList l = new ArrayList();
int j = 0;
for (int k = 0; k < s.length(); k++) {
if (s.charAt(k) == '\n') {
l.add(s.substring(j, k));
j = k;
}
}
j = l.size() - 1;
while (j >= 0 && "".equals(l.get(j))) {
j--;
}
String[] lines = new String[j + 1];
while (j >= 0) {
lines[j] = (String) l.get(j);
j--;
}
// </J2ME CDC-1.1 Foundation-1.1 variant>
for (int i = 0; i < lines.length; i++) { for (int i = 0; i < lines.length; i++) {
if(i>0) if(i>0)
b.append("\n"); //$NON-NLS-1$ b.append("\n"); //$NON-NLS-1$
@ -146,46 +168,46 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
ITerminalTextData term=makeITerminalTextData(); ITerminalTextData term=makeITerminalTextData();
term.setDimensions(8, 8); term.setDimensions(8, 8);
LineSegment[] segments; LineSegment[] segments;
term.setChars(2, 0,"0123".toCharArray(), s1); term.setChars(2, 0,"0123".toCharArray(), s1);
term.setChars(2, 4,"abcd".toCharArray(), null); term.setChars(2, 4,"abcd".toCharArray(), null);
segments=term.getLineSegments(2, 0, term.getWidth()); segments=term.getLineSegments(2, 0, term.getWidth());
assertEquals(2, segments.length); assertEquals(2, segments.length);
assertSegment(0, "0123", s1, segments[0]); assertSegment(0, "0123", s1, segments[0]);
assertSegment(4, "abcd", null, segments[1]); assertSegment(4, "abcd", null, segments[1]);
segments=term.getLineSegments(2, 4, term.getWidth()-4); segments=term.getLineSegments(2, 4, term.getWidth()-4);
assertEquals(1, segments.length); assertEquals(1, segments.length);
assertSegment(4, "abcd", null, segments[0]); assertSegment(4, "abcd", null, segments[0]);
segments=term.getLineSegments(2, 3, 2); segments=term.getLineSegments(2, 3, 2);
assertEquals(2, segments.length); assertEquals(2, segments.length);
assertSegment(3, "3", s1, segments[0]); assertSegment(3, "3", s1, segments[0]);
assertSegment(4, "a", null, segments[1]); assertSegment(4, "a", null, segments[1]);
segments=term.getLineSegments(2, 7, 1); segments=term.getLineSegments(2, 7, 1);
assertEquals(1, segments.length); assertEquals(1, segments.length);
assertSegment(7, "d", null, segments[0]); assertSegment(7, "d", null, segments[0]);
segments=term.getLineSegments(2, 0, 1); segments=term.getLineSegments(2, 0, 1);
assertEquals(1, segments.length); assertEquals(1, segments.length);
assertSegment(0, "0", s1, segments[0]); assertSegment(0, "0", s1, segments[0]);
// line 1 // line 1
term.setChars(1, 0,"x".toCharArray(), s1); term.setChars(1, 0,"x".toCharArray(), s1);
term.setChars(1, 1,"y".toCharArray(), s2); term.setChars(1, 1,"y".toCharArray(), s2);
term.setChars(1, 2,"z".toCharArray(), s3); term.setChars(1, 2,"z".toCharArray(), s3);
segments=term.getLineSegments(1, 0, term.getWidth()); segments=term.getLineSegments(1, 0, term.getWidth());
assertEquals(1, segments.length); assertEquals(1, segments.length);
assertSegment(0, "\000\000\000\000\000\000\000\000", null, segments[0]); assertSegment(0, "\000\000\000\000\000\000\000\000", null, segments[0]);
// line 3 // line 3
segments=term.getLineSegments(3, 0, term.getWidth()); segments=term.getLineSegments(3, 0, term.getWidth());
assertEquals(1, segments.length); assertEquals(1, segments.length);
assertSegment(0, "\000\000\000\000\000\000\000\000", null, segments[0]); assertSegment(0, "\000\000\000\000\000\000\000\000", null, segments[0]);
} }
public void testGetChar() { public void testGetChar() {
String s="12345\n" + String s="12345\n" +
@ -228,7 +250,7 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
assertSame(s, term.getStyle(line, column)); assertSame(s, term.getStyle(line, column));
} }
} }
} }
public void testSetChar() { public void testSetChar() {
ITerminalTextData term=makeITerminalTextData(); ITerminalTextData term=makeITerminalTextData();
@ -280,7 +302,7 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
+ "def\n" + "def\n"
+ "efg\n" + "efg\n"
+ "fgh", toMultiLineText(term)); + "fgh", toMultiLineText(term));
term.setChars(3, 1, new char[]{'1','2'}, null); term.setChars(3, 1, new char[]{'1','2'}, null);
assertEqualsTerm( assertEqualsTerm(
"abc\n" "abc\n"
@ -298,7 +320,7 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
+ "d12\n" + "d12\n"
+ "e12\n" + "e12\n"
+ "fgh", toMultiLineText(term)); + "fgh", toMultiLineText(term));
} }
public void testSetCharsLen() { public void testSetCharsLen() {
ITerminalTextData term=makeITerminalTextData(); ITerminalTextData term=makeITerminalTextData();
@ -332,7 +354,7 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
+ "ABCDEF", toMultiLineText(term)); + "ABCDEF", toMultiLineText(term));
fill(term, s); fill(term, s);
term.setChars(1, 2, chars, 3, 4, null); term.setChars(1, 2, chars, 3, 4, null);
assertEqualsTerm("ZYXWVU\n" assertEqualsTerm("ZYXWVU\n"
@ -356,7 +378,7 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
termCopy.copyRange(term,0,0,5); termCopy.copyRange(term,0,0,5);
assertEqualsSimple(s, toSimple(term)); assertEqualsSimple(s, toSimple(term));
assertEqualsSimple("01234", toSimple(termCopy)); assertEqualsSimple("01234", toSimple(termCopy));
fillSimple(termCopy, sCopy); fillSimple(termCopy, sCopy);
termCopy.copyRange(term,0,0,2); termCopy.copyRange(term,0,0,2);
assertEqualsSimple(s, toSimple(term)); assertEqualsSimple(s, toSimple(term));
@ -420,7 +442,7 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
fill(dest, sCopy); fill(dest, sCopy);
copySelective(dest,term,1,0,new boolean []{true,false,false,true}); copySelective(dest,term,1,0,new boolean []{true,false,false,true});
assertEqualsTerm(s, toMultiLineText(term)); assertEqualsTerm(s, toMultiLineText(term));
assertEqualsTerm( assertEqualsTerm(
"222\n" + "222\n" +
"bbb\n" + "bbb\n" +
"ccc\n" + "ccc\n" +
@ -430,7 +452,7 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
fill(dest, sCopy); fill(dest, sCopy);
copySelective(dest,term,2,0,new boolean []{true,true}); copySelective(dest,term,2,0,new boolean []{true,true});
assertEqualsTerm(s, toMultiLineText(term)); assertEqualsTerm(s, toMultiLineText(term));
assertEqualsTerm( assertEqualsTerm(
"333\n" + "333\n" +
"444\n" + "444\n" +
"ccc\n" + "ccc\n" +
@ -441,7 +463,7 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
copySelective(dest,term,0,0,new boolean []{true,true,true,true,true}); copySelective(dest,term,0,0,new boolean []{true,true,true,true,true});
assertEqualsTerm(s, toMultiLineText(term)); assertEqualsTerm(s, toMultiLineText(term));
assertEqualsTerm(s, toMultiLineText(dest)); assertEqualsTerm(s, toMultiLineText(dest));
fill(dest, sCopy); fill(dest, sCopy);
copySelective(dest,term,0,0,new boolean []{false,false,false,false,false}); copySelective(dest,term,0,0,new boolean []{false,false,false,false,false});
assertEqualsTerm(s, toMultiLineText(term)); assertEqualsTerm(s, toMultiLineText(term));
@ -453,7 +475,7 @@ public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest {
ITerminalTextData data=new TerminalTextData(); ITerminalTextData data=new TerminalTextData();
fillSimple(data,"abcd"); fillSimple(data,"abcd");
term.copy(data); term.copy(data);
} }
} }

View file

@ -1,12 +1,13 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2007 Wind River Systems, Inc. and others. * Copyright (c) 2007, 2008 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Michael Scharf (Wind River) - initial API and implementation * Michael Scharf (Wind River) - initial API and implementation
* Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1
*******************************************************************************/ *******************************************************************************/
package org.eclipse.tm.internal.terminal.model; package org.eclipse.tm.internal.terminal.model;
@ -17,8 +18,7 @@ import org.eclipse.tm.terminal.model.StyleColor;
public class TerminalTextTestHelper { public class TerminalTextTestHelper {
static public String toSimple(ITerminalTextDataReadOnly term) { static public String toSimple(ITerminalTextDataReadOnly term) {
return toMultiLineText(term).replaceAll("\000", " ").replaceAll("\n", ""); return toSimple(toMultiLineText(term));
} }
static public String toMultiLineText(ITerminalTextDataReadOnly term) { static public String toMultiLineText(ITerminalTextDataReadOnly term) {
StringBuffer buff=new StringBuffer(); StringBuffer buff=new StringBuffer();
@ -33,8 +33,24 @@ public class TerminalTextTestHelper {
return buff.toString(); return buff.toString();
} }
static public String toSimple(String str) { static public String toSimple(String str) {
return str.replaceAll("\000", " ").replaceAll("\n", ""); //return str.replaceAll("\000", " ").replaceAll("\n", "");
// <J2ME CDC-1.1 Foundation-1.1 variant>
StringBuffer buf = new StringBuffer(str.length());
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
switch (c) {
case '\000':
buf.append(' ');
break;
case '\n':
break;
default:
buf.append(c);
break;
}
}
return buf.toString();
// </J2ME CDC-1.1 Foundation-1.1 variant>
} }
/** /**
* @param term * @param term
@ -72,7 +88,7 @@ public class TerminalTextTestHelper {
term.setDimensions(height, width); term.setDimensions(height, width);
fill(term,0,0,s); fill(term,0,0,s);
} }
static public void fill(ITerminalTextData term, int column, int line, String s) { static public void fill(ITerminalTextData term, int column, int line, String s) {
int xx=column; int xx=column;
int yy=line; int yy=line;