### Eclipse Workspace Patch 1.0
#P org.eclipse.equinox.bidi.tests
Index: plugin.xml
===================================================================
RCS file: /cvsroot/rt/org.eclipse.equinox/components/bundles/org.eclipse.equinox.bidi.tests/plugin.xml,v
retrieving revision 1.2
diff -u -r1.2 plugin.xml
--- plugin.xml 9 Feb 2011 21:28:56 -0000 1.2
+++ plugin.xml 25 May 2011 16:25:00 -0000
@@ -5,7 +5,7 @@
id="id2"
point="org.eclipse.equinox.bidi.bidiTypes">
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexExtensibilityTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexExtensibilityTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexExtensibilityTest.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexExtensibilityTest.java 27 Apr 2011 14:53:08 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.internal.tests;
-
-import org.eclipse.equinox.bidi.BidiComplexEngine;
-import org.eclipse.equinox.bidi.custom.BidiComplexStringProcessor;
-import org.eclipse.equinox.bidi.custom.IBidiComplexProcessor;
-
-/**
- * Tests contribution of BiDi processors.
- */
-public class BidiComplexExtensibilityTest extends BidiComplexTestBase {
-
- public void testBaseContributions() {
- String[] types = BidiComplexStringProcessor.getKnownTypes();
- assertNotNull(types);
- assertTrue(types.length > 0);
-
- // check one of the types that we know should be there
- assertTrue(isTypePresent(types, "regex"));
-
- IBidiComplexProcessor processor = BidiComplexStringProcessor.getProcessor("regex");
- assertNotNull(processor);
- }
-
- public void testOtherContributions() {
- String[] types = BidiComplexStringProcessor.getKnownTypes();
- assertNotNull(types);
- assertTrue(types.length > 0);
-
- // check the type added by the test bundle
- assertTrue(isTypePresent(types, "test"));
-
- IBidiComplexProcessor processor = BidiComplexStringProcessor.getProcessor("test");
- assertNotNull(processor);
-
- processor = BidiComplexStringProcessor.getProcessor("badtest");
- assertNull(processor);
-
- String data, lean, full, model;
- data = "ABC.DEF:HOST-COM=HELLO";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText("test", null, null, lean, null);
- model = "ABC@.DEF@:HOST@-COM@=HELLO";
- assertEquals("Test 'test' plugin", model, toPseudo(full));
- }
-
- private boolean isTypePresent(String[] types, String type) {
- for (int i = 0; i < types.length; i++) {
- if (type.equalsIgnoreCase(types[i]))
- return true;
- }
- return false;
- }
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexExtensionsTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexExtensionsTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexExtensionsTest.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexExtensionsTest.java 17 May 2011 19:56:16 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.internal.tests;
-
-import org.eclipse.equinox.bidi.BidiComplexEngine;
-import org.eclipse.equinox.bidi.IBidiComplexExpressionTypes;
-import org.eclipse.equinox.bidi.custom.*;
-
-/**
- * Tests all plug-in extensions
- */
-
-public class BidiComplexExtensionsTest extends BidiComplexTestBase {
-
- IBidiComplexProcessor processor;
- BidiComplexFeatures f1, f2;
- int[] state = new int[1];
- String type;
-
- private void doTest1(String label, String data, String result) {
- String full;
- full = BidiComplexEngine.leanToFullText(type, null, null, toUT16(data), state);
- assertEquals(label + " data = " + data, result, toPseudo(full));
- }
-
- private void doTest2(String label, String data, String result) {
- String full;
- full = BidiComplexEngine.leanToFullText(type, null, null, data, state);
- assertEquals(label + " data = " + data, result, toPseudo(full));
- }
-
- private void doTest3(String label, String data, String result) {
- String full;
- full = BidiComplexEngine.leanToFullText(processor, f2, null, toUT16(data), state);
- assertEquals(label + " data = " + data, result, toPseudo(full));
- }
-
- public void testExtensions() {
-
- type = IBidiComplexExpressionTypes.COMMA_DELIMITED;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- doTest1("Comma #1", "ab,cd, AB, CD, EFG", "ab,cd, AB@, CD@, EFG");
-
- type = IBidiComplexExpressionTypes.EMAIL;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- doTest1("Email #1", "abc.DEF:GHI", "abc.DEF@:GHI");
- doTest1("Email #2", "DEF.GHI \"A.B\":JK ", "DEF@.GHI @\"A.B\"@:JK ");
- doTest1("Email #3", "DEF,GHI (A,B);JK ", "DEF@,GHI @(A,B)@;JK ");
- doTest1("Email #4", "DEF.GHI (A.B :JK ", "DEF@.GHI @(A.B :JK ");
-
- type = IBidiComplexExpressionTypes.FILE;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- doTest1("File #1", "c:\\A\\B\\FILE.EXT", "c:\\A@\\B@\\FILE@.EXT");
-
- type = IBidiComplexExpressionTypes.JAVA;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- doTest1("Java #1", "A = B + C;", "A@ = B@ + C;");
- doTest1("Java #2", "A = B + C;", "A@ = B@ + C;");
- doTest1("Java #3", "A = \"B+C\"+D;", "A@ = \"B+C\"@+D;");
- doTest1("Java #4", "A = \"B+C+D;", "A@ = \"B+C+D;");
- doTest1("Java #5", "A = \"B\\\"C\"+D;", "A@ = \"B\\\"C\"@+D;");
- doTest1("Java #6", "A = /*B+C*/ D;", "A@ = /*B+C@*/ D;");
- doTest1("Java #7", "A = /*B+C* D;", "A@ = /*B+C* D;");
- doTest1("Java #8", "X+Y+Z */ B; ", "X+Y+Z @*/ B; ");
- doTest1("Java #9", "A = //B+C* D;", "A@ = //B+C* D;");
- doTest1("Java #10", "A = //B+C`|D+E;", "A@ = //B+C`|D@+E;");
-
- type = IBidiComplexExpressionTypes.PROPERTY;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- doTest1("Property #0", "NAME,VAL1,VAL2", "NAME,VAL1,VAL2");
- doTest1("Property #1", "NAME=VAL1,VAL2", "NAME@=VAL1,VAL2");
- doTest1("Property #2", "NAME=VAL1,VAL2=VAL3", "NAME@=VAL1,VAL2=VAL3");
-
- String data;
- type = IBidiComplexExpressionTypes.REGEXP;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- data = toUT16("ABC(?") + "#" + toUT16("DEF)GHI");
- doTest2("Regex #0.0", data, "A@B@C@(?#DEF)@G@H@I");
- data = toUT16("ABC(?") + "#" + toUT16("DEF");
- doTest2("Regex #0.1", data, "A@B@C@(?#DEF");
- doTest1("Regex #0.2", "GHI)JKL", "GHI)@J@K@L");
- data = toUT16("ABC(?") + "<" + toUT16("DEF") + ">" + toUT16("GHI");
- doTest2("Regex #1", data, "A@B@C@(?@G@H@I");
- doTest1("Regex #2.0", "ABC(?'DEF'GHI", "A@B@C@(?'DEF'@G@H@I");
- doTest1("Regex #2.1", "ABC(?'DEFGHI", "A@B@C@(?'DEFGHI");
- data = toUT16("ABC(?(") + "<" + toUT16("DEF") + ">" + toUT16(")GHI");
- doTest2("Regex #3", data, "A@B@C@(?()@G@H@I");
- doTest1("Regex #4", "ABC(?('DEF')GHI", "A@B@C@(?('DEF')@G@H@I");
- doTest1("Regex #5", "ABC(?(DEF)GHI", "A@B@C@(?(DEF)@G@H@I");
- data = toUT16("ABC(?") + "&" + toUT16("DEF)GHI");
- doTest2("Regex #6", data, "A@B@C@(?&DEF)@G@H@I");
- data = toUT16("ABC(?") + "P<" + toUT16("DEF") + ">" + toUT16("GHI");
- doTest2("Regex #7", data, "A@B@C(?p@G@H@I");
- data = toUT16("ABC\\k") + "<" + toUT16("DEF") + ">" + toUT16("GHI");
- doTest2("Regex #8", data, "A@B@C\\k@G@H@I");
- doTest1("Regex #9", "ABC\\k'DEF'GHI", "A@B@C\\k'DEF'@G@H@I");
- doTest1("Regex #10", "ABC\\k{DEF}GHI", "A@B@C\\k{DEF}@G@H@I");
- data = toUT16("ABC(?") + "P=" + toUT16("DEF)GHI");
- doTest2("Regex #11", data, "A@B@C(?p=DEF)@G@H@I");
- doTest1("Regex #12", "ABC\\g{DEF}GHI", "A@B@C\\g{DEF}@G@H@I");
- data = toUT16("ABC\\g") + "<" + toUT16("DEF") + ">" + toUT16("GHI");
- doTest2("Regex #13", data, "A@B@C\\g@G@H@I");
- doTest1("Regex #14", "ABC\\g'DEF'GHI", "A@B@C\\g'DEF'@G@H@I");
- data = toUT16("ABC(?(") + "R&" + toUT16("DEF)GHI");
- doTest2("Regex #15", data, "A@B@C(?(r&DEF)@G@H@I");
- data = toUT16("ABC") + "\\Q" + toUT16("DEF") + "\\E" + toUT16("GHI");
- doTest2("Regex #16.0", data, "A@B@C\\qDEF\\eG@H@I");
- data = toUT16("ABC") + "\\Q" + toUT16("DEF");
- doTest2("Regex #16.1", data, "A@B@C\\qDEF");
- data = toUT16("GHI") + "\\E" + toUT16("JKL");
- doTest2("Regex #16.2", data, "GHI\\eJ@K@L");
- doTest1("Regex #17.0", "abc[d-h]ijk", "abc[d-h]ijk");
- doTest1("Regex #17.1", "aBc[d-H]iJk", "aBc[d-H]iJk");
- doTest1("Regex #17.2", "aB*[!-H]iJ2", "aB*[!-@H]iJ@2");
- doTest1("Regex #17.3", "aB*[1-2]J3", "aB*[@1-2]J@3");
- doTest1("Regex #17.4", "aB*[5-6]J3", "aB*[@5-@6]@J@3");
- doTest1("Regex #17.5", "a*[5-6]J3", "a*[5-@6]@J@3");
- doTest1("Regex #17.6", "aB*123", "aB*@123");
- doTest1("Regex #17.7", "aB*567", "aB*@567");
-
- type = IBidiComplexExpressionTypes.SQL;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- doTest1("SQL #0", "abc GHI", "abc GHI");
- doTest1("SQL #1", "abc DEF GHI", "abc DEF@ GHI");
- doTest1("SQL #2", "ABC, DEF, GHI", "ABC@, DEF@, GHI");
- doTest1("SQL #3", "ABC'DEF GHI' JKL,MN", "ABC@'DEF GHI'@ JKL@,MN");
- doTest1("SQL #4.0", "ABC'DEF GHI JKL", "ABC@'DEF GHI JKL");
- doTest1("SQL #4.1", "MNO PQ' RS,TUV", "MNO PQ'@ RS@,TUV");
- doTest1("SQL #5", "ABC\"DEF GHI\" JKL,MN", "ABC@\"DEF GHI\"@ JKL@,MN");
- doTest1("SQL #6", "ABC\"DEF GHI JKL", "ABC@\"DEF GHI JKL");
- doTest1("SQL #7", "ABC/*DEF GHI*/ JKL,MN", "ABC@/*DEF GHI@*/ JKL@,MN");
- doTest1("SQL #8.0", "ABC/*DEF GHI JKL", "ABC@/*DEF GHI JKL");
- doTest1("SQL #8.1", "MNO PQ*/RS,TUV", "MNO PQ@*/RS@,TUV");
- doTest1("SQL #9", "ABC--DEF GHI JKL", "ABC@--DEF GHI JKL");
- doTest1("SQL #10", "ABC--DEF--GHI,JKL", "ABC@--DEF--GHI,JKL");
- doTest1("SQL #11", "ABC'DEF '' G I' JKL,MN", "ABC@'DEF '' G I'@ JKL@,MN");
- doTest1("SQL #12", "ABC\"DEF \"\" G I\" JKL,MN", "ABC@\"DEF \"\" G I\"@ JKL@,MN");
- doTest1("SQL #13", "ABC--DEF GHI`|JKL MN", "ABC@--DEF GHI`|JKL@ MN");
-
- type = IBidiComplexExpressionTypes.SYSTEM_USER;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- doTest1("System #1", "HOST(JACK)", "HOST@(JACK)");
-
- type = IBidiComplexExpressionTypes.UNDERSCORE;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- doTest1("Underscore #1", "A_B_C_d_e_F_G", "A@_B@_C_d_e_F@_G");
-
- type = IBidiComplexExpressionTypes.URL;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- doTest1("URL #1", "WWW.DOMAIN.COM/DIR1/DIR2/dir3/DIR4", "WWW@.DOMAIN@.COM@/DIR1@/DIR2/dir3/DIR4");
-
- type = IBidiComplexExpressionTypes.XPATH;
- state[0] = BidiComplexEngine.STATE_INITIAL;
- doTest1("Xpath #1", "abc(DEF)GHI", "abc(DEF@)GHI");
- doTest1("Xpath #2", "DEF.GHI \"A.B\":JK ", "DEF@.GHI@ \"A.B\"@:JK ");
- doTest1("Xpath #3", "DEF!GHI 'A!B'=JK ", "DEF@!GHI@ 'A!B'@=JK ");
- doTest1("Xpath #4", "DEF.GHI 'A.B :JK ", "DEF@.GHI@ 'A.B :JK ");
-
- type = IBidiComplexExpressionTypes.EMAIL;
- processor = BidiComplexStringProcessor.getProcessor(type);
- state[0] = BidiComplexEngine.STATE_INITIAL;
- f1 = processor.getFeatures(null);
- assertEquals("<>.:,;@", f1.getSeparators());
- f2 = new BidiComplexFeatures("+-*/", f1.getSpecialsCount(), f1.getDirArabic(), f1.getDirHebrew(), f1.getIgnoreArabic(), f1.getIgnoreHebrew());
- doTest3("DelimsEsc #1", "abc+DEF-GHI", "abc+DEF@-GHI");
- doTest3("DelimsEsc #2", "DEF-GHI (A*B)/JK ", "DEF@-GHI @(A*B)@/JK ");
- doTest3("DelimsEsc #3", "DEF-GHI (A*B)/JK ", "DEF@-GHI @(A*B)@/JK ");
- doTest3("DelimsEsc #4", "DEF-GHI (A*B\\)*C) /JK ", "DEF@-GHI @(A*B\\)*C) @/JK ");
- doTest3("DelimsEsc #5", "DEF-GHI (A\\\\\\)*C) /JK ", "DEF@-GHI @(A\\\\\\)*C) @/JK ");
- doTest3("DelimsEsc #6", "DEF-GHI (A\\\\)*C /JK ", "DEF@-GHI @(A\\\\)@*C @/JK ");
- doTest3("DelimsEsc #7", "DEF-GHI (A\\)*C /JK ", "DEF@-GHI @(A\\)*C /JK ");
- }
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexFullToLeanTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexFullToLeanTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexFullToLeanTest.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexFullToLeanTest.java 27 Apr 2011 14:53:08 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,247 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.internal.tests;
-
-import org.eclipse.equinox.bidi.*;
-
-/**
- * Tests fullToLean method
- */
-
-public class BidiComplexFullToLeanTest extends BidiComplexTestBase {
-
- static final BidiComplexEnvironment envLTR = new BidiComplexEnvironment(null, false, BidiComplexEnvironment.ORIENT_LTR);
- static final BidiComplexEnvironment envRTL = new BidiComplexEnvironment(null, false, BidiComplexEnvironment.ORIENT_RTL);
-
- String type;
-
- private void doTest1(String msg, String data, String leanLTR, String fullLTR, int[] l2fMapLTR, int[] f2lMapLTR, String leanRTL, String fullRTL, int[] l2fMapRTL, int[] f2lMapRTL) {
- String text, full, lean, label;
- int[] map;
-
- text = toUT16(data);
- lean = BidiComplexEngine.fullToLeanText(type, null, envLTR, text, null);
- assertEquals(msg + "LTR lean", leanLTR, toPseudo(lean));
- full = BidiComplexEngine.leanToFullText(type, null, envLTR, lean, null);
- assertEquals(msg + "LTR full", fullLTR, toPseudo(full));
- map = BidiComplexEngine.leanToFullMap(type, null, envLTR, lean, null);
- label = msg + "leanToFullMap() LTR";
- assertEquals(label, array_display(l2fMapLTR), array_display(map));
- map = BidiComplexEngine.fullToLeanMap(type, null, envLTR, text, null);
- label = msg + "fullToLeanMap() LTR";
- assertEquals(label, array_display(f2lMapLTR), array_display(map));
-
- lean = BidiComplexEngine.fullToLeanText(type, null, envRTL, text, null);
- assertEquals(msg + "RTL lean", leanRTL, toPseudo(lean));
- full = BidiComplexEngine.leanToFullText(type, null, envRTL, lean, null);
- assertEquals(msg + "RTL full", fullRTL, toPseudo(full));
- map = BidiComplexEngine.leanToFullMap(type, null, envRTL, lean, null);
- label = msg + "leanToFullMap() RTL";
- assertEquals(label, array_display(l2fMapRTL), array_display(map));
- map = BidiComplexEngine.fullToLeanMap(type, null, envRTL, text, null);
- label = msg + "fullToLeanMap() RTL";
- assertEquals(label, array_display(f2lMapRTL), array_display(map));
- }
-
- private void doTest2(String msg) {
- String text, data, full, lean, model;
- int[] state = new int[1];
- int state1, state2, state3;
-
- data = "update \"AB_CDE\" set \"COL1\"@='01', \"COL2\"@='02' /* GH IJK";
- text = toUT16(data);
- state[0] = -1;
- lean = BidiComplexEngine.fullToLeanText(type, null, envLTR, text, state);
- state1 = state[0];
- model = "update \"AB_CDE\" set \"COL1\"='01', \"COL2\"='02' /* GH IJK";
- assertEquals(msg + "LTR lean", model, toPseudo(lean));
- state[0] = -1;
- full = BidiComplexEngine.leanToFullText(type, null, envLTR, lean, state);
- assertEquals(msg + "LTR full", data, toPseudo(full));
- assertEquals(msg + "state from leanToFullText", state1, state[0]);
- data = "THIS IS A COMMENT LINE";
- text = toUT16(data);
- state[0] = state1;
- lean = BidiComplexEngine.fullToLeanText(type, null, envLTR, text, state);
- state2 = state[0];
- model = "THIS IS A COMMENT LINE";
- assertEquals(msg + "LTR lean2", model, toPseudo(lean));
- state[0] = state1;
- full = BidiComplexEngine.leanToFullText(type, null, envLTR, lean, state);
- assertEquals(msg + "LTR full2", data, toPseudo(full));
- assertEquals(msg + "state from leanToFullText2", state2, state[0]);
- data = "SOME MORE */ where \"COL3\"@=123";
- text = toUT16(data);
- state[0] = state2;
- lean = BidiComplexEngine.fullToLeanText(type, null, envLTR, text, state);
- state3 = state[0];
- model = "SOME MORE */ where \"COL3\"=123";
- assertEquals(msg + "LTR lean3", model, toPseudo(lean));
- state[0] = state2;
- full = BidiComplexEngine.leanToFullText(type, null, envLTR, lean, state);
- assertEquals(msg + "LTR full3", data, toPseudo(full));
- assertEquals(msg + "state from leanToFullText3", state3, state[0]);
- }
-
- public void testFullToLean() {
-
- type = IBidiComplexExpressionTypes.COMMA_DELIMITED;
- doTest1("testFullToLean #1 - ", "", "", "", new int[0], new int[0], "", "", new int[0], new int[0]);
- int[] map1 = new int[] {0, 1, 2, 3, 4};
- int[] map2 = new int[] {2, 3, 4, 5, 6};
- int[] map3;
- doTest1("testFullToLean #01 - ", "1.abc", "1.abc", "1.abc", map1, map1, "1.abc", ">@1.abc@^", map2, map1);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
- map2 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
- doTest1("testFullToLean #02 - ", "2.abc,def", "2.abc,def", "2.abc,def", map1, map1, "2.abc,def", ">@2.abc,def@^", map2, map1);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- map2 = new int[] {-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
- doTest1("testFullToLean #03 - ", "@a.3.bc,def", "a.3.bc,def", "a.3.bc,def", map1, map2, "a.3.bc,def", ">@a.3.bc,def@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
- doTest1("testFullToLean #04 - ", "@@a.4.bc,def", "a.4.bc,def", "a.4.bc,def", map1, map2, "a.4.bc,def", ">@a.4.bc,def@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
- map2 = new int[] {-1, 0, 1, 2, 3, 4, 5, 6, 7, 8};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
- doTest1("testFullToLean #05 - ", "@5.abc,def", "5.abc,def", "5.abc,def", map1, map2, "5.abc,def", ">@5.abc,def@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
- map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
- doTest1("testFullToLean #06 - ", "@@6.abc,def", "6.abc,def", "6.abc,def", map1, map2, "6.abc,def", ">@6.abc,def@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
- map2 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
- doTest1("testFullToLean #07 - ", "7abc,@def", "7abc,@def", "7abc,@def", map1, map1, "7abc,@def", ">@7abc,@def@^", map2, map1);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
- map2 = new int[] {0, 1, 2, 3, 4, 5, -1, 6, 7, 8};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
- doTest1("testFullToLean #08 - ", "8abc,@@def", "8abc,@def", "8abc,@def", map1, map2, "8abc,@def", ">@8abc,@def@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7};
- map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9};
- doTest1("testFullToLean #09 - ", "9abc,def@", "9abc,def", "9abc,def", map1, map2, "9abc,def", ">@9abc,def@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
- map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, -1, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
- doTest1("testFullToLean #10 - ", "10abc,def@@", "10abc,def", "10abc,def", map1, map2, "10abc,def", ">@10abc,def@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
- map2 = new int[] {-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
- doTest1("testFullToLean #11 - ", "@a.11.bc,@def@", "a.11.bc,@def", "a.11.bc,@def", map1, map2, "a.11.bc,@def", ">@a.11.bc,@def@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
- map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -1, 9, 10, 11, -1, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
- doTest1("testFullToLean #12 - ", "@@a.12.bc,@@def@@", "a.12.bc,@def", "a.12.bc,@def", map1, map2, "a.12.bc,@def", ">@a.12.bc,@def@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4};
- map2 = new int[] {2, 3, 4, 5, 6};
- doTest1("testFullToLean #13 - ", "13ABC", "13ABC", "13ABC", map1, map1, "13ABC", ">@13ABC@^", map2, map1);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8};
- map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10};
- doTest1("testFullToLean #14 - ", "14ABC,DE", "14ABC,DE", "14ABC@,DE", map1, map2, "14ABC,DE", ">@14ABC@,DE@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8};
- map2 = new int[] {0, 1, 2, 3, 4, -1, 5, 6, 7};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10};
- doTest1("testFullToLean #15 - ", "15ABC@,DE", "15ABC,DE", "15ABC@,DE", map1, map2, "15ABC,DE", ">@15ABC@,DE@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8};
- map2 = new int[] {0, 1, 2, 3, 4, -1, -1, 5, 6, 7};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10};
- doTest1("testFullToLean #16 - ", "16ABC@@,DE", "16ABC,DE", "16ABC@,DE", map1, map2, "16ABC,DE", ">@16ABC@,DE@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
- map2 = new int[] {0, 1, 2, 3, 4, 5, 6, -1, 7, 8};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
- doTest1("testFullToLean #17 - ", "17ABC,@@DE", "17ABC,@DE", "17ABC,@DE", map1, map2, "17ABC,@DE", ">@17ABC,@DE@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
- map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
- doTest1("testFullToLean #18 - ", "18ABC,DE,FGH", "18ABC,DE,FGH", "18ABC@,DE@,FGH", map1, map2, "18ABC,DE,FGH", ">@18ABC@,DE@,FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
- map2 = new int[] {0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
- doTest1("testFullToLean #19 - ", "19ABC@,DE@,FGH", "19ABC,DE,FGH", "19ABC@,DE@,FGH", map1, map2, "19ABC,DE,FGH", ">@19ABC@,DE@,FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
- map2 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
- doTest1("testFullToLean #20 - ", "20ABC,@DE,@FGH", "20ABC,@DE,@FGH", "20ABC,@DE,@FGH", map1, map1, "20ABC,@DE,@FGH", ">@20ABC,@DE,@FGH@^", map2, map1);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
- map2 = new int[] {0, 1, 2, 3, 4, -1, -1, 5, 6, 7, -1, -1, 8, 9, 10, 11};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
- doTest1("testFullToLean #21 - ", "21ABC@@,DE@@,FGH", "21ABC,DE,FGH", "21ABC@,DE@,FGH", map1, map2, "21ABC,DE,FGH", ">@21ABC@,DE@,FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
- map2 = new int[] {0, 1, 2, 3, 4, 5, 6, -1, 7, 8, 9, 10, -1, 11, 12, 13};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
- doTest1("testFullToLean #22 - ", "22ABC,@@DE,@@FGH", "22ABC,@DE,@FGH", "22ABC,@DE,@FGH", map1, map2, "22ABC,@DE,@FGH", ">@22ABC,@DE,@FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4};
- map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, -1, -1};
- map3 = new int[] {2, 3, 4, 5, 6};
- doTest1("testFullToLean #23 - ", ">@23abc@^", "23abc", "23abc", map1, map2, "23abc", ">@23abc@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4};
- map2 = new int[] {0, 1, 2, 3, 4, -1, -1};
- map3 = new int[] {2, 3, 4, 5, 6};
- doTest1("testFullToLean #24 - ", "24abc@^", "24abc", "24abc", map1, map2, "24abc", ">@24abc@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4};
- map2 = new int[] {-1, -1, 0, 1, 2, 3, 4};
- map3 = new int[] {2, 3, 4, 5, 6};
- doTest1("testFullToLean #25 - ", ">@25abc", "25abc", "25abc", map1, map2, "25abc", ">@25abc@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15};
- map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
- map3 = new int[] {2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17};
- doTest1("testFullToLean #26 - ", "26AB,CD@EF,GHI", "26AB,CD@EF,GHI", "26AB@,CD@EF@,GHI", map1, map2, "26AB,CD@EF,GHI", ">@26AB@,CD@EF@,GHI@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
- map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
- map3 = new int[] {2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
- doTest1("testFullToLean #27 - ", "27AB,CD@123ef,GHI", "27AB,CD@123ef,GHI", "27AB@,CD@123ef,GHI", map1, map2, "27AB,CD@123ef,GHI", ">@27AB@,CD@123ef,GHI@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
- map2 = new int[] {-1, 0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
- doTest1("testFullToLean #28 - ", ">28ABC@,DE@,FGH^", "28ABC,DE,FGH", "28ABC@,DE@,FGH", map1, map2, "28ABC,DE,FGH", ">@28ABC@,DE@,FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
- map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11, -1, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
- doTest1("testFullToLean #29 - ", ">>29ABC@,DE@,FGH^^", "29ABC,DE,FGH", "29ABC@,DE@,FGH", map1, map2, "29ABC,DE,FGH", ">@29ABC@,DE@,FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
- map2 = new int[] {-1, 0, 1, 2, 3, 4, 5, 6, -1, 7, 8, 9, -1, 10, 11, 12, 13, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17};
- doTest1("testFullToLean #30 - ", ">30AB>C^@,DE@,FGH^", "30AB>C^,DE,FGH", "30AB>C^@,DE@,FGH", map1, map2, "30AB>C^,DE,FGH", ">@30AB>C^@,DE@,FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14};
- map2 = new int[] {-1, 0, 1, 2, 3, 4, 5, -1, 6, 7, 8, -1, 9, 10, 11, 12, -1, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 14, 15, 16};
- doTest1("testFullToLean #31 - ", ">31AB>C@,DE@,FGH^^", "31AB>C,DE,FGH", "31AB>C@,DE@,FGH", map1, map2, "31AB>C,DE,FGH", ">@31AB>C@,DE@,FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
- map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11, -1, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
- doTest1("testFullToLean #32 - ", ">@32ABC@,DE@,FGH@^", "32ABC,DE,FGH", "32ABC@,DE@,FGH", map1, map2, "32ABC,DE,FGH", ">@32ABC@,DE@,FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
- map2 = new int[] {-1, 0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11, -1, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
- doTest1("testFullToLean #33 - ", "@33ABC@,DE@,FGH@^", "33ABC,DE,FGH", "33ABC@,DE@,FGH", map1, map2, "33ABC,DE,FGH", ">@33ABC@,DE@,FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
- map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
- doTest1("testFullToLean #34 - ", ">@34ABC@,DE@,FGH@", "34ABC,DE,FGH", "34ABC@,DE@,FGH", map1, map2, "34ABC,DE,FGH", ">@34ABC@,DE@,FGH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
- map2 = new int[] {0, 1, 2, 3, 4, 5, -1, 6, 7, 8, -1, -1, 9, 10, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
- doTest1("testFullToLean #35 - ", "35ABC@@DE@@@GH@", "35ABC@DE@GH", "35ABC@DE@GH", map1, map2, "35ABC@DE@GH", ">@35ABC@DE@GH@^", map3, map2);
- map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7};
- map2 = new int[] {0, 1, 2, 3, 4, 5, -1, 6, 7, -1, -1, -1, -1, -1, -1};
- map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9};
- doTest1("testFullToLean #36 - ", "36ABC@@DE@@@@@@", "36ABC@DE", "36ABC@DE", map1, map2, "36ABC@DE", ">@36ABC@DE@^", map3, map2);
- map1 = new int[0];
- map2 = new int[] {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
- doTest1("testFullToLean #37 - ", ">>>@@@@@^^^", "", "", map1, map2, "", "", map1, map2);
-
- // test fullToLeanText with initial state
- type = IBidiComplexExpressionTypes.SQL;
- doTest2("testFullToLean #38 - ");
- }
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexMathTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexMathTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexMathTest.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexMathTest.java 27 Apr 2011 14:53:08 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.internal.tests;
-
-import org.eclipse.equinox.bidi.*;
-
-/**
- * Tests RTL arithmetic
- */
-public class BidiComplexMathTest extends BidiComplexTestBase {
-
- static final BidiComplexEnvironment envLTR = new BidiComplexEnvironment(null, false, BidiComplexEnvironment.ORIENT_LTR);
- static final BidiComplexEnvironment envRTL = new BidiComplexEnvironment(null, false, BidiComplexEnvironment.ORIENT_RTL);
-
- String type = IBidiComplexExpressionTypes.RTL_ARITHMETIC;
-
- private void verifyOneLine(String msg, String data, String resLTR, String resRTL) {
- String lean = toUT16(data);
- String fullLTR = BidiComplexEngine.leanToFullText(type, null, envLTR, lean, null);
- assertEquals(msg + " LTR - ", resLTR, toPseudo(fullLTR));
- String fullRTL = BidiComplexEngine.leanToFullText(type, null, envRTL, lean, null);
- assertEquals(msg + " RTL - ", resRTL, toPseudo(fullRTL));
- }
-
- public void testRTLarithmetic() {
- verifyOneLine("Math #0", "", "", "");
- verifyOneLine("Math #1", "1+abc", "<&1+abc&^", "1+abc");
- verifyOneLine("Math #2", "2+abc-def", "<&2+abc&-def&^", "2+abc&-def");
- verifyOneLine("Math #3", "a+3*bc/def", "<&a&+3*bc&/def&^", "a&+3*bc&/def");
- verifyOneLine("Math #4", "4+abc/def", "<&4+abc&/def&^", "4+abc&/def");
- verifyOneLine("Math #5", "13ABC", "<&13ABC&^", "13ABC");
- verifyOneLine("Math #6", "14ABC-DE", "<&14ABC-DE&^", "14ABC-DE");
- verifyOneLine("Math #7", "15ABC+DE", "<&15ABC+DE&^", "15ABC+DE");
- verifyOneLine("Math #8", "16ABC*DE", "<&16ABC*DE&^", "16ABC*DE");
- verifyOneLine("Math #9", "17ABC/DE", "<&17ABC/DE&^", "17ABC/DE");
- }
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexMethodsTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexMethodsTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexMethodsTest.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexMethodsTest.java 17 May 2011 19:56:16 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,315 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.internal.tests;
-
-import org.eclipse.equinox.bidi.*;
-import org.eclipse.equinox.bidi.custom.*;
-
-/**
- * Tests most public methods of BidiComplexEngine
- */
-
-public class BidiComplexMethodsTest extends BidiComplexTestBase {
-
- final static int LTR = BidiComplexFeatures.DIR_LTR;
- final static int RTL = BidiComplexFeatures.DIR_RTL;
- final static BidiComplexEnvironment envLTR = new BidiComplexEnvironment(null, false, BidiComplexEnvironment.ORIENT_LTR);
- final static BidiComplexEnvironment envRTL = new BidiComplexEnvironment(null, false, BidiComplexEnvironment.ORIENT_RTL);
- final static BidiComplexEnvironment envRTLMIR = new BidiComplexEnvironment(null, true, BidiComplexEnvironment.ORIENT_RTL);
- final static BidiComplexEnvironment envIGN = new BidiComplexEnvironment(null, false, BidiComplexEnvironment.ORIENT_IGNORE);
- final static BidiComplexEnvironment envCLR = new BidiComplexEnvironment(null, false, BidiComplexEnvironment.ORIENT_CONTEXTUAL_LTR);
- final static BidiComplexEnvironment envCRL = new BidiComplexEnvironment(null, false, BidiComplexEnvironment.ORIENT_CONTEXTUAL_RTL);
- final static BidiComplexEnvironment envERR = new BidiComplexEnvironment(null, false, 9999);
-
- private void doTestTools() {
-
- // This method tests utility methods used by the JUnits
- String data = "56789ABCDEFGHIJKLMNOPQRSTUVWXYZ~#@&><^|`";
- String text = toUT16(data);
- String dat2 = toPseudo(text);
- assertEquals(data, dat2);
-
- text = toPseudo(data);
- assertEquals("56789abcdefghijklmnopqrstuvwxyz~#@&><^|`", text);
-
- text = array_display(null);
- assertEquals("null", text);
- }
-
- private void doTestState() {
- String data, lean, full, model;
- int[] state = new int[1];
- state[0] = -1;
- String type = IBidiComplexExpressionTypes.JAVA;
- data = "A=B+C;/* D=E+F;";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(type, null, null, lean, state);
- model = "A@=B@+C@;/* D=E+F;";
- assertEquals("full1", model, toPseudo(full));
- data = "A=B+C; D=E+F;";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(type, null, null, lean, state);
- model = "A=B+C; D=E+F;";
- assertEquals("full2", model, toPseudo(full));
- data = "A=B+C;*/ D=E+F;";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(type, null, null, lean, state);
- model = "A=B+C;@*/ D@=E@+F;";
- assertEquals("full3", model, toPseudo(full));
- }
-
- private void doTestOrientation() {
- int orient;
- orient = BidiComplexEnvironment.DEFAULT.getOrientation();
- assertEquals("orient #1", BidiComplexEnvironment.ORIENT_LTR, orient);
-
- orient = envIGN.getOrientation();
- assertEquals("orient #2", BidiComplexEnvironment.ORIENT_IGNORE, orient);
-
- orient = envCRL.getOrientation();
- assertEquals("orient #3", BidiComplexEnvironment.ORIENT_CONTEXTUAL_RTL, orient);
-
- orient = envERR.getOrientation();
- assertEquals("orient #4", BidiComplexEnvironment.ORIENT_UNKNOWN, orient);
- }
-
- private void doTestOrient(BidiComplexFeatures f, String label, String data, String resLTR, String resRTL, String resCon) {
- String full, lean;
- String type = IBidiComplexExpressionTypes.COMMA_DELIMITED;
-
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(type, f, envLTR, lean, null);
- assertEquals(label + "LTR full", resLTR, toPseudo(full));
- full = BidiComplexEngine.leanToFullText(type, f, envRTL, lean, null);
- assertEquals("label + RTL full", resRTL, toPseudo(full));
- full = BidiComplexEngine.leanToFullText(type, f, envCRL, lean, null);
- assertEquals(label + "CON full", resCon, toPseudo(full));
- }
-
- private void doTestScripts(BidiComplexFeatures f1) {
- BidiComplexFeatures f2;
- boolean flag;
- flag = f1.getIgnoreArabic();
- assertFalse("Ignores Arabic 1", flag);
- flag = f1.getIgnoreHebrew();
- assertFalse("Ignores Hebrew 1", flag);
-
- f2 = new BidiComplexFeatures(f1.getSeparators(), 0, -1, -1, true, true);
- flag = f2.getIgnoreArabic();
- assertTrue("Ignores Arabic 2", flag);
- flag = f2.getIgnoreHebrew();
- assertTrue("Ignores Hebrew 2", flag);
- doTestOrient(f2, "Scripts #1 ", "BCD,EF", "BCD,EF", ">@BCD,EF@^", "@BCD,EF");
- f2 = new BidiComplexFeatures(f1.getSeparators(), 0, -1, -1, false, true);
- flag = f2.getIgnoreArabic();
- assertFalse("Ignores Arabic 3", flag);
- flag = f2.getIgnoreHebrew();
- assertTrue("Ignores Hebrew 3", flag);
- doTestOrient(f2, "Scripts #2 ", "d,EF", "d,EF", ">@d,EF@^", "d,EF");
- doTestOrient(f2, "Scripts #3 ", "#,eF", "#,eF", ">@#,eF@^", "@#,eF");
- doTestOrient(f2, "Scripts #4 ", "#,12", "#@,12", ">@#@,12@^", "@#@,12");
- doTestOrient(f2, "Scripts #5 ", "#,##", "#@,##", ">@#@,##@^", "@#@,##");
- doTestOrient(f2, "Scripts #6 ", "#,89", "#@,89", ">@#@,89@^", "@#@,89");
- doTestOrient(f2, "Scripts #7 ", "#,ef", "#,ef", ">@#,ef@^", "@#,ef");
- doTestOrient(f2, "Scripts #8 ", "#,", "#,", ">@#,@^", "@#,");
- doTestOrient(f2, "Scripts #9 ", "9,ef", "9,ef", ">@9,ef@^", "9,ef");
- doTestOrient(f2, "Scripts #10 ", "9,##", "9@,##", ">@9@,##@^", "9@,##");
- doTestOrient(f2, "Scripts #11 ", "7,89", "7@,89", ">@7@,89@^", "7@,89");
- doTestOrient(f2, "Scripts #12 ", "7,EF", "7,EF", ">@7,EF@^", "@7,EF");
- doTestOrient(f2, "Scripts #13 ", "BCD,EF", "BCD,EF", ">@BCD,EF@^", "@BCD,EF");
-
- f2 = new BidiComplexFeatures(f1.getSeparators(), 0, -1, -1, true, false);
- flag = f2.getIgnoreArabic();
- assertTrue("Ignores Arabic 4", flag);
- flag = f2.getIgnoreHebrew();
- assertFalse("Ignores Hebrew 4", flag);
- doTestOrient(f2, "Scripts #14 ", "BCd,EF", "BCd,EF", ">@BCd,EF@^", "@BCd,EF");
- doTestOrient(f2, "Scripts #15 ", "BCD,eF", "BCD,eF", ">@BCD,eF@^", "@BCD,eF");
- doTestOrient(f2, "Scripts #16 ", "BCD,EF", "BCD@,EF", ">@BCD@,EF@^", "@BCD@,EF");
- doTestOrient(f2, "Scripts #17 ", "BCD,12", "BCD@,12", ">@BCD@,12@^", "@BCD@,12");
- doTestOrient(f2, "Scripts #18 ", "BCD,", "BCD,", ">@BCD,@^", "@BCD,");
-
- f2 = new BidiComplexFeatures(f1.getSeparators(), 0, -1, -1, false, false);
- doTestOrient(f2, "Scripts #19 ", "123,45|67", "123,45|67", ">@123,45|67@^", "@123,45|67");
- doTestOrient(f2, "Scripts #20 ", "5,e", "5,e", ">@5,e@^", "5,e");
- doTestOrient(f2, "Scripts #21 ", "5,#", "5@,#", ">@5@,#@^", "5@,#");
- doTestOrient(f2, "Scripts #22 ", "5,6", "5@,6", ">@5@,6@^", "5@,6");
- doTestOrient(f2, "Scripts #23 ", "5,D", "5@,D", ">@5@,D@^", "5@,D");
- doTestOrient(f2, "Scripts #24 ", "5,--", "5,--", ">@5,--@^", "@5,--");
- }
-
- private void doTestLeanOffsets() {
- String lean, data, label;
- int[] state = new int[1];
- String type = IBidiComplexExpressionTypes.JAVA;
- int[] offsets;
- int[] model;
-
- data = "A=B+C;/* D=E+F;";
- lean = toUT16(data);
- state[0] = -1;
- offsets = BidiComplexEngine.leanBidiCharOffsets(type, null, null, lean, state);
- model = new int[] {1, 3, 5};
- label = "leanBidiCharOffsets() #1 ";
- assertEquals(label, array_display(model), array_display(offsets));
- data = "A=B+C;*/ D=E+F;";
- lean = toUT16(data);
- offsets = BidiComplexEngine.leanBidiCharOffsets(type, null, null, lean, state);
- model = new int[] {6, 10, 12};
- label = "leanBidiCharOffsets() #2 ";
- assertEquals(label, array_display(model), array_display(offsets));
- }
-
- private void doTestFullOffsets(String label, String data, int[] resLTR, int[] resRTL, int[] resCon) {
- String full, lean, msg;
- int[] offsets;
- String type = IBidiComplexExpressionTypes.COMMA_DELIMITED;
-
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(type, null, envLTR, lean, null);
- offsets = BidiComplexEngine.fullBidiCharOffsets(type, null, envLTR, full, null);
- msg = label + "LTR ";
- assertEquals(msg, array_display(resLTR), array_display(offsets));
- full = BidiComplexEngine.leanToFullText(type, null, envRTL, lean, null);
- offsets = BidiComplexEngine.fullBidiCharOffsets(type, null, envRTL, full, null);
- msg = label + "RTL ";
- assertEquals(msg, array_display(resRTL), array_display(offsets));
- full = BidiComplexEngine.leanToFullText(type, null, envCLR, lean, null);
- offsets = BidiComplexEngine.fullBidiCharOffsets(type, null, envCLR, full, null);
- msg = label + "CON ";
- assertEquals(msg, array_display(resCon), array_display(offsets));
- }
-
- private void doTestMirrored() {
- boolean mirrored;
- mirrored = BidiComplexEnvironment.DEFAULT.getMirrored();
- assertFalse("mirrored #1", mirrored);
- BidiComplexEnvironment env = new BidiComplexEnvironment(null, true, BidiComplexEnvironment.ORIENT_LTR);
- mirrored = env.getMirrored();
- assertTrue("mirrored #2", mirrored);
- }
-
- private void doTestDirection() {
- String data, lean, full, model, msg;
- IBidiComplexProcessor processor = BidiComplexStringProcessor.getProcessor(IBidiComplexExpressionTypes.COMMA_DELIMITED);
- BidiComplexFeatures f1 = processor.getFeatures(null);
- msg = "TestDirection #1";
- assertTrue(msg, f1.getDirArabic() == LTR && f1.getDirHebrew() == LTR);
-
- BidiComplexFeatures f2 = new BidiComplexFeatures(f1.getSeparators(), 0, RTL, RTL, false, false);
- f1 = f2;
- msg = "TestDirection #2";
- assertTrue(msg, f1.getDirArabic() == RTL && f1.getDirHebrew() == RTL);
-
- BidiComplexEnvironment environment = new BidiComplexEnvironment(null, false, BidiComplexEnvironment.ORIENT_LTR);
- processor = BidiComplexStringProcessor.getProcessor(IBidiComplexExpressionTypes.EMAIL);
- f1 = processor.getFeatures(environment);
- msg = "TestDirection #3";
- assertTrue(msg, f1.getDirArabic() == LTR && f1.getDirHebrew() == LTR);
- data = "#ABC.#DEF:HOST.com";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(processor, null, environment, lean, null);
- model = "#ABC@.#DEF@:HOST.com";
- assertEquals("TestDirection #9 full", model, toPseudo(full));
-
- data = "ABC.DEF:HOST.com";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(processor, null, environment, lean, null);
- model = "ABC@.DEF@:HOST.com";
- assertEquals("TestDirection #10 full", model, toPseudo(full));
-
- environment = new BidiComplexEnvironment(null, true, BidiComplexEnvironment.ORIENT_LTR);
- f1 = processor.getFeatures(environment);
- msg = "TestDirection #10.5";
- assertTrue(msg, f1.getDirArabic() == RTL && f1.getDirHebrew() == LTR);
- data = "#ABC.#DEF:HOST.com";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(processor, null, environment, lean, null);
- model = "<ABC.#DEF:HOST.com&^";
- assertEquals("TestDirection #11 full", model, toPseudo(full));
-
- data = "#ABc.#DEF:HOSt.COM";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(processor, null, environment, lean, null);
- model = "<ABc.#DEF:HOSt.COM&^";
- assertEquals("TestDirection #12 full", model, toPseudo(full));
-
- data = "#ABc.#DEF:HOSt.";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(processor, null, environment, lean, null);
- model = "<ABc.#DEF:HOSt.&^";
- assertEquals("TestDirection #13 full", model, toPseudo(full));
-
- data = "ABC.DEF:HOST.com";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(processor, null, environment, lean, null);
- model = "ABC@.DEF@:HOST.com";
- assertEquals("TestDirection #14 full", model, toPseudo(full));
-
- data = "--.---:----";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(processor, null, environment, lean, null);
- model = "--.---:----";
- assertEquals("TestDirection #15 full", model, toPseudo(full));
-
- data = "ABC.|DEF:HOST.com";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(processor, null, environment, lean, null);
- model = "ABC.|DEF@:HOST.com";
- assertEquals("TestDirection #16 full", model, toPseudo(full));
-
- data = "#ABc.|#DEF:HOST.com";
- lean = toUT16(data);
- full = BidiComplexEngine.leanToFullText(processor, null, envRTLMIR, lean, null);
- model = "#ABc.|#DEF:HOST.com";
- assertEquals("TestDirection #17 full", model, toPseudo(full));
- assertEquals("Test curDirection", RTL, BidiComplexEngine.getCurDirection(processor, null, envRTLMIR, lean));
- }
-
- public void testMethods() {
-
- doTestTools();
-
- doTestState();
-
- doTestOrientation();
-
- IBidiComplexProcessor processor = BidiComplexStringProcessor.getProcessor(IBidiComplexExpressionTypes.COMMA_DELIMITED);
- BidiComplexFeatures f = processor.getFeatures(null);
- doTestOrient(f, "Methods #1 ", "", "", "", "");
- doTestOrient(f, "Methods #2 ", "abc", "abc", ">@abc@^", "abc");
- doTestOrient(f, "Methods #3 ", "ABC", "ABC", ">@ABC@^", "@ABC");
- doTestOrient(f, "Methods #4 ", "bcd,ef", "bcd,ef", ">@bcd,ef@^", "bcd,ef");
- doTestOrient(f, "Methods #5 ", "BCD,EF", "BCD@,EF", ">@BCD@,EF@^", "@BCD@,EF");
- doTestOrient(f, "Methods #6 ", "cde,FG", "cde,FG", ">@cde,FG@^", "cde,FG");
- doTestOrient(f, "Methods #7 ", "CDE,fg", "CDE,fg", ">@CDE,fg@^", "@CDE,fg");
- doTestOrient(f, "Methods #8 ", "12..def,GH", "12..def,GH", ">@12..def,GH@^", "12..def,GH");
- doTestOrient(f, "Methods #9 ", "34..DEF,gh", "34..DEF,gh", ">@34..DEF,gh@^", "@34..DEF,gh");
-
- doTestScripts(f);
-
- doTestLeanOffsets();
-
- doTestFullOffsets("TestFullOffsets ", "BCD,EF,G", new int[] {3, 7}, new int[] {0, 1, 5, 9, 12, 13}, new int[] {0, 4, 8});
-
- doTestMirrored();
-
- doTestDirection();
-
- String type = IBidiComplexExpressionTypes.COMMA_DELIMITED;
- String data = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
- String lean = toUT16(data);
- String full = BidiComplexEngine.leanToFullText(type, null, null, lean, null);
- String model = "A@,B@,C@,D@,E@,F@,G@,H@,I@,J@,K@,L@,M@,N@,O@,P@,Q@,R@,S@,T@,U@,V@,W@,X@,Y@,Z";
- assertEquals("many inserts", model, toPseudo(full));
- }
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexNullProcessorTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexNullProcessorTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexNullProcessorTest.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexNullProcessorTest.java 27 Apr 2011 14:53:08 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.internal.tests;
-
-import org.eclipse.equinox.bidi.BidiComplexEngine;
-import org.eclipse.equinox.bidi.custom.BidiComplexFeatures;
-
-/**
- * Tests RTL arithmetic
- */
-public class BidiComplexNullProcessorTest extends BidiComplexTestBase {
-
- static final int[] EMPTY_INT_ARRAY = new int[0];
-
- public void testNullProcessor() {
- String full = BidiComplexEngine.leanToFullText(null, null, null, "abc", null);
- assertEquals("leanToFullText", "abc", full);
- int[] state = new int[1];
- state[0] = 3;
- full = BidiComplexEngine.leanToFullText(null, null, null, "abc", state);
- assertEquals("leanToFullText with state", "abc", full);
- int[] offsets = BidiComplexEngine.leanBidiCharOffsets(null, null, null, "abc", null);
- assertEquals("leanBidiCharOffsets", 0, offsets.length);
- offsets = BidiComplexEngine.fullBidiCharOffsets(null, null, null, "abc", null);
- assertEquals("fullBidiCharOffsets", 0, offsets.length);
- String lean = BidiComplexEngine.fullToLeanText(null, null, null, "abc", null);
- assertEquals("fullToLeanText", "abc", lean);
- lean = BidiComplexEngine.fullToLeanText(null, null, null, "abc", state);
- assertEquals("fullToLeanText with state", "abc", lean);
- int[] map = BidiComplexEngine.leanToFullMap(null, null, null, "abc", null);
- int[] model = {0, 1, 2};
- assertEquals("leanToFullMap", array_display(model), array_display(map));
- map = BidiComplexEngine.fullToLeanMap(null, null, null, "abc", null);
- assertEquals("fullToLeanMap", array_display(model), array_display(map));
- int direction = BidiComplexEngine.getCurDirection(null, null, null, "abc");
- assertEquals("getCurDirection", BidiComplexFeatures.DIR_LTR, direction);
- }
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexSomeMoreTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexSomeMoreTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexSomeMoreTest.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexSomeMoreTest.java 17 May 2011 19:56:16 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.internal.tests;
-
-import org.eclipse.equinox.bidi.BidiComplexEngine;
-import org.eclipse.equinox.bidi.BidiComplexEnvironment;
-import org.eclipse.equinox.bidi.custom.*;
-
-/**
- * Tests some weird cases
- */
-
-public class BidiComplexSomeMoreTest extends BidiComplexTestBase {
-
- final static BidiComplexEnvironment env1 = new BidiComplexEnvironment("en_US", false, BidiComplexEnvironment.ORIENT_LTR);
- final static BidiComplexEnvironment env2 = new BidiComplexEnvironment("he", false, BidiComplexEnvironment.ORIENT_LTR);
- final static BidiComplexFeatures myFeatures = new BidiComplexFeatures(null, 1, -1, -1, false, false);
-
- class Processor1 extends BidiComplexProcessor {
-
- public BidiComplexFeatures getFeatures(BidiComplexEnvironment env) {
- return myFeatures;
- }
-
- public int indexOfSpecial(BidiComplexFeatures features, String text, byte[] dirProps, int[] offsets, int caseNumber, int fromIndex) {
- return fromIndex;
- }
-
- public int processSpecial(BidiComplexFeatures features, String text, byte[] dirProps, int[] offsets, int[] state, int caseNumber, int separLocation) {
- int len = text.length();
- for (int i = len - 1; i >= 0; i--) {
- BidiComplexProcessor.insertMark(text, dirProps, offsets, i);
- BidiComplexProcessor.insertMark(text, dirProps, offsets, i);
- }
- return len;
- }
- }
-
- class Processor2 extends BidiComplexProcessor {
-
- public BidiComplexFeatures getFeatures(BidiComplexEnvironment env) {
- return myFeatures;
- }
- }
-
- class Processor3 extends BidiComplexProcessor {
-
- public BidiComplexFeatures getFeatures(BidiComplexEnvironment env) {
- return myFeatures;
- }
-
- public int indexOfSpecial(BidiComplexFeatures features, String text, byte[] dirProps, int[] offsets, int caseNumber, int fromIndex) {
- return 0;
- }
- }
-
- public void testSomeMore() {
- assertFalse(env1.isBidi());
- assertTrue(env2.isBidi());
-
- IBidiComplexProcessor processor = new Processor1();
- String full = BidiComplexEngine.leanToFullText(processor, null, env1, "abcd", null);
- assertEquals("@a@b@c@d", toPseudo(full));
-
- processor = new Processor2();
- boolean catchFlag = false;
- try {
- full = BidiComplexEngine.leanToFullText(processor, null, env1, "abcd", null);
- } catch (IllegalStateException e) {
- catchFlag = true;
- }
- assertTrue("Catch missing indexOfSpecial", catchFlag);
-
- processor = new Processor3();
- catchFlag = false;
- try {
- full = BidiComplexEngine.leanToFullText(processor, null, env1, "abcd", null);
- } catch (IllegalStateException e) {
- catchFlag = true;
- }
- assertTrue("Catch missing processSpecial", catchFlag);
- }
-
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexStringRecordTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexStringRecordTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexStringRecordTest.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexStringRecordTest.java 27 Apr 2011 14:53:08 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.internal.tests;
-
-import org.eclipse.equinox.bidi.BidiComplexStringRecord;
-import org.eclipse.equinox.bidi.custom.BidiComplexStringProcessor;
-
-/**
- * Tests the StringRecord class
- */
-public class BidiComplexStringRecordTest extends BidiComplexTestBase {
- public void testStringRecord() {
- BidiComplexStringRecord sr;
- boolean catchFlag;
- short[] badTriplet1 = new short[] {0, 0};
- short[] badTriplet2 = new short[] {0, 0, -1};
- short[] badTriplet3 = new short[] {0, 0, 999};
- short[] goodTriplet = new short[] {0, 3, 2};
- short[] triplets;
- short type;
- String strType;
- // check handling of invalid arguments
- catchFlag = false;
- try {
- sr = new BidiComplexStringRecord(null, badTriplet1);
- } catch (IllegalArgumentException e) {
- catchFlag = true;
- }
- assertTrue("Catch null string argument", catchFlag);
- catchFlag = false;
- try {
- sr = new BidiComplexStringRecord("xxx", null);
- } catch (IllegalArgumentException e) {
- catchFlag = true;
- }
- assertTrue("Catch null triplets argument", catchFlag);
- catchFlag = false;
- try {
- sr = new BidiComplexStringRecord("xxx", badTriplet1);
- } catch (IllegalArgumentException e) {
- catchFlag = true;
- }
- assertTrue("Catch bad triplet #1 argument", catchFlag);
- catchFlag = false;
- try {
- sr = new BidiComplexStringRecord("xxx", badTriplet2);
- } catch (IllegalArgumentException e) {
- catchFlag = true;
- }
- assertTrue("Catch bad triplet #2 argument", catchFlag);
- catchFlag = false;
- try {
- sr = new BidiComplexStringRecord("xxx", badTriplet3);
- } catch (IllegalArgumentException e) {
- catchFlag = true;
- }
- assertTrue("Catch bad triplet #3 argument", catchFlag);
-
- String[] types = BidiComplexStringProcessor.getKnownTypes();
- for (int i = 0; i < types.length; i++) {
- type = BidiComplexStringRecord.typeStringToShort(types[i]);
- assertFalse(type == -1);
- strType = BidiComplexStringRecord.typeShortToString(type);
- assertEquals(types[i], strType);
- }
- type = BidiComplexStringRecord.typeStringToShort("dummy");
- assertEquals(-1, type);
- strType = BidiComplexStringRecord.typeShortToString((short) 999);
- assertEquals(null, strType);
- int poolSize = BidiComplexStringRecord.POOLSIZE;
- int lim = poolSize / 2;
- triplets = BidiComplexStringRecord.getTriplets("xxx");
- assertEquals(null, triplets);
- for (int i = 0; i < lim; i++) {
- String str = Integer.toString(i);
- sr = new BidiComplexStringRecord(str, goodTriplet);
- BidiComplexStringRecord.add(sr);
- }
- triplets = BidiComplexStringRecord.getTriplets(null);
- assertEquals(null, triplets);
- triplets = BidiComplexStringRecord.getTriplets("");
- assertEquals(null, triplets);
- for (int i = 0; i < poolSize; i++) {
- String str = Integer.toString(i);
- triplets = BidiComplexStringRecord.getTriplets(str);
- if (i < lim)
- assertFalse(null == triplets);
- else
- assertTrue(null == triplets);
- }
- for (int i = lim; i <= poolSize; i++) {
- String str = Integer.toString(i);
- sr = new BidiComplexStringRecord(str, goodTriplet);
- BidiComplexStringRecord.add(sr);
- }
- for (int i = 1; i <= poolSize; i++) {
- String str = Integer.toString(i);
- triplets = BidiComplexStringRecord.getTriplets(str);
- assertFalse(null == triplets);
- }
- triplets = BidiComplexStringRecord.getTriplets("0");
- assertEquals(null, triplets);
- BidiComplexStringRecord.clear();
- for (int i = 0; i <= poolSize; i++) {
- String str = Integer.toString(i);
- triplets = BidiComplexStringRecord.getTriplets(str);
- assertEquals(null, triplets);
- }
- }
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexTest.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexTest.java 17 May 2011 19:56:16 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.equinox.bidi.internal.tests;
-
-import org.eclipse.equinox.bidi.BidiComplexEnvironment;
-import org.eclipse.equinox.bidi.custom.BidiComplexFeatures;
-import org.eclipse.equinox.bidi.custom.IBidiComplexProcessor;
-
-public class BidiComplexTest implements IBidiComplexProcessor {
-
- static final BidiComplexFeatures FEATURES = new BidiComplexFeatures("-=.:", 0, -1, -1, false, false);
-
- public BidiComplexFeatures getFeatures(BidiComplexEnvironment env) {
- return FEATURES;
- }
-
- public int indexOfSpecial(BidiComplexFeatures features, String text, byte[] dirProps, int[] offsets, int caseNumber, int fromIndex) {
- throw new IllegalStateException();
- }
-
- public int processSpecial(BidiComplexFeatures features, String text, byte[] dirProps, int[] offsets, int[] state, int caseNumber, int separLocation) {
- throw new IllegalStateException();
- }
-
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexTestBase.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexTestBase.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexTestBase.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexTestBase.java 27 Apr 2011 14:53:08 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.internal.tests;
-
-import junit.framework.TestCase;
-
-/**
- * Base functionality for the processor tests.
- */
-public class BidiComplexTestBase extends TestCase {
-
- static final private char LRM = 0x200E;
-
- static final private char RLM = 0x200F;
-
- static final private char LRE = 0x202A;
-
- static final private char RLE = 0x202B;
-
- static final private char PDF = 0x202C;
-
- public static String toPseudo(String text) {
- char[] chars = text.toCharArray();
- int len = chars.length;
-
- for (int i = 0; i < len; i++) {
- char c = chars[i];
- if (c >= 'A' && c <= 'Z')
- chars[i] = (char) (c + 'a' - 'A');
- else if (c >= 0x05D0 && c < 0x05EA)
- chars[i] = (char) (c + 'A' - 0x05D0);
- else if (c == 0x05EA)
- chars[i] = '~';
- else if (c == 0x0644)
- chars[i] = '#';
- else if (c >= 0x0665 && c <= 0x0669)
- chars[i] = (char) (c + '5' - 0x0665);
- else if (c == LRM)
- chars[i] = '@';
- else if (c == RLM)
- chars[i] = '&';
- else if (c == LRE)
- chars[i] = '>';
- else if (c == RLE)
- chars[i] = '<';
- else if (c == PDF)
- chars[i] = '^';
- else if (c == '\n')
- chars[i] = '|';
- else if (c == '\r')
- chars[i] = '`';
- }
- return new String(chars);
- }
-
- public static String toUT16(String text) {
- char[] chars = text.toCharArray();
- int len = chars.length;
-
- for (int i = 0; i < len; i++) {
- char c = chars[i];
- if (c >= '5' && c <= '9')
- chars[i] = (char) (0x0665 + c - '5');
- else if (c >= 'A' && c <= 'Z')
- chars[i] = (char) (0x05D0 + c - 'A');
- else if (c == '~')
- chars[i] = (char) (0x05EA);
- else if (c == '#')
- chars[i] = (char) (0x0644);
- else if (c == '@')
- chars[i] = LRM;
- else if (c == '&')
- chars[i] = RLM;
- else if (c == '>')
- chars[i] = LRE;
- else if (c == '<')
- chars[i] = RLE;
- else if (c == '^')
- chars[i] = PDF;
- else if (c == '|')
- chars[i] = '\n';
- else if (c == '`')
- chars[i] = '\r';
- }
- return new String(chars);
- }
-
- static String array_display(int[] array) {
- if (array == null) {
- return "null";
- }
- StringBuffer sb = new StringBuffer(50);
- int len = array.length;
- for (int i = 0; i < len; i++) {
- sb.append(array[i]);
- sb.append(' ');
- }
- return sb.toString();
- }
-
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexUtilTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/BidiComplexUtilTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/BidiComplexUtilTest.java
--- src/org/eclipse/equinox/bidi/internal/tests/BidiComplexUtilTest.java 9 Feb 2011 21:28:56 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.internal.tests;
-
-import java.util.Locale;
-import org.eclipse.equinox.bidi.BidiComplexUtil;
-import org.eclipse.equinox.bidi.IBidiComplexExpressionTypes;
-
-/**
- * Tests methods in BidiComplexUtil
- */
-
-public class BidiComplexUtilTest extends BidiComplexTestBase {
-
- private static final String HEBREW = "iw";
-
- private static final String HEBREW2 = "he";
-
- private static final String ARABIC = "ar";
-
- private static final String FARSI = "fa";
-
- private static final String URDU = "ur";
-
- private Locale locale;
-
- protected void setUp() throws Exception {
- super.setUp();
- locale = Locale.getDefault();
- }
-
- protected void tearDown() {
- Locale.setDefault(locale);
- }
-
- private void doTest1(String data, String result) {
- Locale.setDefault(Locale.ENGLISH);
- String full = BidiComplexUtil.process(toUT16(data));
- assertEquals("Util #1 full EN - ", data, toPseudo(full));
- Locale.setDefault(new Locale(HEBREW2));
- full = BidiComplexUtil.process(toUT16(data));
- assertEquals("Util #1 full HE - ", result, toPseudo(full));
- Locale.setDefault(new Locale(ARABIC));
- full = BidiComplexUtil.process(toUT16(data));
- assertEquals("Util #1 full AR - ", result, toPseudo(full));
- Locale.setDefault(new Locale(FARSI));
- full = BidiComplexUtil.process(toUT16(data));
- assertEquals("Util #1 full FA - ", result, toPseudo(full));
- Locale.setDefault(new Locale(URDU));
- full = BidiComplexUtil.process(toUT16(data));
- assertEquals("Util #1 full UR - ", result, toPseudo(full));
- Locale.setDefault(new Locale(HEBREW));
- full = BidiComplexUtil.process(toUT16(data));
- String ful2 = BidiComplexUtil.process(toUT16(data), null);
- assertEquals("Util #1 full - ", result, toPseudo(full));
- assertEquals("Util #1 ful2 - ", result, toPseudo(ful2));
- String lean = BidiComplexUtil.deprocess(full);
- assertEquals("Util #1 lean - ", data, toPseudo(lean));
- }
-
- private void doTest2(String msg, String data, String result) {
- doTest2(msg, data, result, data);
- }
-
- private void doTest2(String msg, String data, String result, String resLean) {
- String full = BidiComplexUtil.process(toUT16(data), "*");
- assertEquals(msg + "full", result, toPseudo(full));
- String lean = BidiComplexUtil.deprocess(full);
- assertEquals(msg + "lean", resLean, toPseudo(lean));
- }
-
- private void doTest3(String msg, String data, String result) {
- doTest3(msg, data, result, data);
- }
-
- private void doTest3(String msg, String data, String result, String resLean) {
- String full = BidiComplexUtil.processTyped(toUT16(data), IBidiComplexExpressionTypes.COMMA_DELIMITED);
- assertEquals(msg + "full", result, toPseudo(full));
- String lean = BidiComplexUtil.deprocess(full, IBidiComplexExpressionTypes.COMMA_DELIMITED);
- assertEquals(msg + "lean", resLean, toPseudo(lean));
- }
-
- private void doTest4(String msg, String data, int[] offsets, int direction, boolean affix, String result) {
- String txt = msg + "text=" + data + "\n offsets=" + array_display(offsets) + "\n direction=" + direction + "\n affix=" + affix;
- String lean = toUT16(data);
- String full = BidiComplexUtil.insertMarks(lean, offsets, direction, affix);
- assertEquals(txt, result, toPseudo(full));
- }
-
- public void testBidiComplexUtil() {
-
- // Test process() and deprocess() with default delimiters
- doTest1("ABC/DEF/G", ">@ABC@/DEF@/G@^");
- // Test process() and deprocess() with specified delimiters
- doTest2("Util #2.1 - ", "", "");
- doTest2("Util #2.2 - ", ">@ABC@^", ">@ABC@^", "ABC");
- doTest2("Util #2.3 - ", "abc", "abc");
- doTest2("Util #2.4 - ", "!abc", ">@!abc@^");
- doTest2("Util #2.5 - ", "abc!", ">@abc!@^");
- doTest2("Util #2.6 - ", "ABC*DEF*G", ">@ABC@*DEF@*G@^");
- // Test process() and deprocess() with specified expression type
- doTest3("Util #3.1 - ", "ABC,DEF,G", ">@ABC@,DEF@,G@^");
- doTest3("Util #3.2 - ", "", "");
- doTest3("Util #3.3 - ", ">@DEF@^", ">@DEF@^", "DEF");
- boolean catchFlag = false;
- try {
- BidiComplexUtil.deprocess(toUT16("ABC,DE"), "wrong_type");
- } catch (IllegalArgumentException e) {
- catchFlag = true;
- }
- assertTrue("Catch invalid type on deprocess", catchFlag);
- catchFlag = false;
- try {
- BidiComplexUtil.processTyped("abc", "wrong_type");
- } catch (IllegalArgumentException e) {
- catchFlag = true;
- }
- assertTrue("Catch invalid type on process", catchFlag);
- // Test insertMarks()
- doTest4("Util #4.1 - ", "ABCDEFG", new int[] {3, 6}, 0, false, "ABC@DEF@G");
- doTest4("Util #4.2 - ", "ABCDEFG", new int[] {3, 6}, 0, true, ">@ABC@DEF@G@^");
- doTest4("Util #4.3 - ", "ABCDEFG", new int[] {3, 6}, 1, false, "ABC&DEF&G");
- doTest4("Util #4.4 - ", "ABCDEFG", new int[] {3, 6}, 1, true, "<&ABC&DEF&G&^");
- doTest4("Util #4.5 - ", "", new int[] {3, 6}, 0, false, "");
- doTest4("Util #4.6 - ", "", new int[] {3, 6}, 0, true, "");
- doTest4("Util #4.7 - ", "ABCDEFG", null, 1, false, "ABCDEFG");
- doTest4("Util #4.8 - ", "ABCDEFG", null, 1, true, "<&ABCDEFG&^");
- }
-}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextExtensibilityTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextExtensibilityTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextExtensibilityTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextExtensibilityTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.internal.tests;
+
+import org.eclipse.equinox.bidi.STextEngine;
+import org.eclipse.equinox.bidi.custom.STextStringProcessor;
+import org.eclipse.equinox.bidi.custom.ISTextProcessor;
+
+/**
+ * Tests contribution of BiDi processors.
+ */
+public class STextExtensibilityTest extends STextTestBase {
+
+ public void testBaseContributions() {
+ String[] types = STextStringProcessor.getKnownTypes();
+ assertNotNull(types);
+ assertTrue(types.length > 0);
+
+ // check one of the types that we know should be there
+ assertTrue(isTypePresent(types, "regex"));
+
+ ISTextProcessor processor = STextStringProcessor.getProcessor("regex");
+ assertNotNull(processor);
+ }
+
+ public void testOtherContributions() {
+ String[] types = STextStringProcessor.getKnownTypes();
+ assertNotNull(types);
+ assertTrue(types.length > 0);
+
+ // check the type added by the test bundle
+ assertTrue(isTypePresent(types, "test"));
+
+ ISTextProcessor processor = STextStringProcessor.getProcessor("test");
+ assertNotNull(processor);
+
+ processor = STextStringProcessor.getProcessor("badtest");
+ assertNull(processor);
+
+ String data, lean, full, model;
+ data = "ABC.DEF:HOST-COM=HELLO";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText("test", null, null, lean, null);
+ model = "ABC@.DEF@:HOST@-COM@=HELLO";
+ assertEquals("Test 'test' plugin", model, toPseudo(full));
+ }
+
+ private boolean isTypePresent(String[] types, String type) {
+ for (int i = 0; i < types.length; i++) {
+ if (type.equalsIgnoreCase(types[i]))
+ return true;
+ }
+ return false;
+ }
+}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextExtensionsTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextExtensionsTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextExtensionsTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextExtensionsTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.internal.tests;
+
+import org.eclipse.equinox.bidi.STextEngine;
+import org.eclipse.equinox.bidi.ISTextTypes;
+import org.eclipse.equinox.bidi.custom.*;
+
+/**
+ * Tests all plug-in extensions
+ */
+
+public class STextExtensionsTest extends STextTestBase {
+
+ ISTextProcessor processor;
+ STextFeatures f1, f2;
+ int[] state = new int[1];
+ String type;
+
+ private void doTest1(String label, String data, String result) {
+ String full;
+ full = STextEngine.leanToFullText(type, null, null, toUT16(data), state);
+ assertEquals(label + " data = " + data, result, toPseudo(full));
+ }
+
+ private void doTest2(String label, String data, String result) {
+ String full;
+ full = STextEngine.leanToFullText(type, null, null, data, state);
+ assertEquals(label + " data = " + data, result, toPseudo(full));
+ }
+
+ private void doTest3(String label, String data, String result) {
+ String full;
+ full = STextEngine.leanToFullText(processor, f2, null, toUT16(data), state);
+ assertEquals(label + " data = " + data, result, toPseudo(full));
+ }
+
+ public void testExtensions() {
+
+ type = ISTextTypes.COMMA_DELIMITED;
+ state[0] = STextEngine.STATE_INITIAL;
+ doTest1("Comma #1", "ab,cd, AB, CD, EFG", "ab,cd, AB@, CD@, EFG");
+
+ type = ISTextTypes.EMAIL;
+ state[0] = STextEngine.STATE_INITIAL;
+ doTest1("Email #1", "abc.DEF:GHI", "abc.DEF@:GHI");
+ doTest1("Email #2", "DEF.GHI \"A.B\":JK ", "DEF@.GHI @\"A.B\"@:JK ");
+ doTest1("Email #3", "DEF,GHI (A,B);JK ", "DEF@,GHI @(A,B)@;JK ");
+ doTest1("Email #4", "DEF.GHI (A.B :JK ", "DEF@.GHI @(A.B :JK ");
+
+ type = ISTextTypes.FILE;
+ state[0] = STextEngine.STATE_INITIAL;
+ doTest1("File #1", "c:\\A\\B\\FILE.EXT", "c:\\A@\\B@\\FILE@.EXT");
+
+ type = ISTextTypes.JAVA;
+ state[0] = STextEngine.STATE_INITIAL;
+ doTest1("Java #1", "A = B + C;", "A@ = B@ + C;");
+ doTest1("Java #2", "A = B + C;", "A@ = B@ + C;");
+ doTest1("Java #3", "A = \"B+C\"+D;", "A@ = \"B+C\"@+D;");
+ doTest1("Java #4", "A = \"B+C+D;", "A@ = \"B+C+D;");
+ doTest1("Java #5", "A = \"B\\\"C\"+D;", "A@ = \"B\\\"C\"@+D;");
+ doTest1("Java #6", "A = /*B+C*/ D;", "A@ = /*B+C@*/ D;");
+ doTest1("Java #7", "A = /*B+C* D;", "A@ = /*B+C* D;");
+ doTest1("Java #8", "X+Y+Z */ B; ", "X+Y+Z @*/ B; ");
+ doTest1("Java #9", "A = //B+C* D;", "A@ = //B+C* D;");
+ doTest1("Java #10", "A = //B+C`|D+E;", "A@ = //B+C`|D@+E;");
+
+ type = ISTextTypes.PROPERTY;
+ state[0] = STextEngine.STATE_INITIAL;
+ doTest1("Property #0", "NAME,VAL1,VAL2", "NAME,VAL1,VAL2");
+ doTest1("Property #1", "NAME=VAL1,VAL2", "NAME@=VAL1,VAL2");
+ doTest1("Property #2", "NAME=VAL1,VAL2=VAL3", "NAME@=VAL1,VAL2=VAL3");
+
+ String data;
+ type = ISTextTypes.REGEXP;
+ state[0] = STextEngine.STATE_INITIAL;
+ data = toUT16("ABC(?") + "#" + toUT16("DEF)GHI");
+ doTest2("Regex #0.0", data, "A@B@C@(?#DEF)@G@H@I");
+ data = toUT16("ABC(?") + "#" + toUT16("DEF");
+ doTest2("Regex #0.1", data, "A@B@C@(?#DEF");
+ doTest1("Regex #0.2", "GHI)JKL", "GHI)@J@K@L");
+ data = toUT16("ABC(?") + "<" + toUT16("DEF") + ">" + toUT16("GHI");
+ doTest2("Regex #1", data, "A@B@C@(?@G@H@I");
+ doTest1("Regex #2.0", "ABC(?'DEF'GHI", "A@B@C@(?'DEF'@G@H@I");
+ doTest1("Regex #2.1", "ABC(?'DEFGHI", "A@B@C@(?'DEFGHI");
+ data = toUT16("ABC(?(") + "<" + toUT16("DEF") + ">" + toUT16(")GHI");
+ doTest2("Regex #3", data, "A@B@C@(?()@G@H@I");
+ doTest1("Regex #4", "ABC(?('DEF')GHI", "A@B@C@(?('DEF')@G@H@I");
+ doTest1("Regex #5", "ABC(?(DEF)GHI", "A@B@C@(?(DEF)@G@H@I");
+ data = toUT16("ABC(?") + "&" + toUT16("DEF)GHI");
+ doTest2("Regex #6", data, "A@B@C@(?&DEF)@G@H@I");
+ data = toUT16("ABC(?") + "P<" + toUT16("DEF") + ">" + toUT16("GHI");
+ doTest2("Regex #7", data, "A@B@C(?p@G@H@I");
+ data = toUT16("ABC\\k") + "<" + toUT16("DEF") + ">" + toUT16("GHI");
+ doTest2("Regex #8", data, "A@B@C\\k@G@H@I");
+ doTest1("Regex #9", "ABC\\k'DEF'GHI", "A@B@C\\k'DEF'@G@H@I");
+ doTest1("Regex #10", "ABC\\k{DEF}GHI", "A@B@C\\k{DEF}@G@H@I");
+ data = toUT16("ABC(?") + "P=" + toUT16("DEF)GHI");
+ doTest2("Regex #11", data, "A@B@C(?p=DEF)@G@H@I");
+ doTest1("Regex #12", "ABC\\g{DEF}GHI", "A@B@C\\g{DEF}@G@H@I");
+ data = toUT16("ABC\\g") + "<" + toUT16("DEF") + ">" + toUT16("GHI");
+ doTest2("Regex #13", data, "A@B@C\\g@G@H@I");
+ doTest1("Regex #14", "ABC\\g'DEF'GHI", "A@B@C\\g'DEF'@G@H@I");
+ data = toUT16("ABC(?(") + "R&" + toUT16("DEF)GHI");
+ doTest2("Regex #15", data, "A@B@C(?(r&DEF)@G@H@I");
+ data = toUT16("ABC") + "\\Q" + toUT16("DEF") + "\\E" + toUT16("GHI");
+ doTest2("Regex #16.0", data, "A@B@C\\qDEF\\eG@H@I");
+ data = toUT16("ABC") + "\\Q" + toUT16("DEF");
+ doTest2("Regex #16.1", data, "A@B@C\\qDEF");
+ data = toUT16("GHI") + "\\E" + toUT16("JKL");
+ doTest2("Regex #16.2", data, "GHI\\eJ@K@L");
+ doTest1("Regex #17.0", "abc[d-h]ijk", "abc[d-h]ijk");
+ doTest1("Regex #17.1", "aBc[d-H]iJk", "aBc[d-H]iJk");
+ doTest1("Regex #17.2", "aB*[!-H]iJ2", "aB*[!-@H]iJ@2");
+ doTest1("Regex #17.3", "aB*[1-2]J3", "aB*[@1-2]J@3");
+ doTest1("Regex #17.4", "aB*[5-6]J3", "aB*[@5-@6]@J@3");
+ doTest1("Regex #17.5", "a*[5-6]J3", "a*[5-@6]@J@3");
+ doTest1("Regex #17.6", "aB*123", "aB*@123");
+ doTest1("Regex #17.7", "aB*567", "aB*@567");
+
+ type = ISTextTypes.SQL;
+ state[0] = STextEngine.STATE_INITIAL;
+ doTest1("SQL #0", "abc GHI", "abc GHI");
+ doTest1("SQL #1", "abc DEF GHI", "abc DEF@ GHI");
+ doTest1("SQL #2", "ABC, DEF, GHI", "ABC@, DEF@, GHI");
+ doTest1("SQL #3", "ABC'DEF GHI' JKL,MN", "ABC@'DEF GHI'@ JKL@,MN");
+ doTest1("SQL #4.0", "ABC'DEF GHI JKL", "ABC@'DEF GHI JKL");
+ doTest1("SQL #4.1", "MNO PQ' RS,TUV", "MNO PQ'@ RS@,TUV");
+ doTest1("SQL #5", "ABC\"DEF GHI\" JKL,MN", "ABC@\"DEF GHI\"@ JKL@,MN");
+ doTest1("SQL #6", "ABC\"DEF GHI JKL", "ABC@\"DEF GHI JKL");
+ doTest1("SQL #7", "ABC/*DEF GHI*/ JKL,MN", "ABC@/*DEF GHI@*/ JKL@,MN");
+ doTest1("SQL #8.0", "ABC/*DEF GHI JKL", "ABC@/*DEF GHI JKL");
+ doTest1("SQL #8.1", "MNO PQ*/RS,TUV", "MNO PQ@*/RS@,TUV");
+ doTest1("SQL #9", "ABC--DEF GHI JKL", "ABC@--DEF GHI JKL");
+ doTest1("SQL #10", "ABC--DEF--GHI,JKL", "ABC@--DEF--GHI,JKL");
+ doTest1("SQL #11", "ABC'DEF '' G I' JKL,MN", "ABC@'DEF '' G I'@ JKL@,MN");
+ doTest1("SQL #12", "ABC\"DEF \"\" G I\" JKL,MN", "ABC@\"DEF \"\" G I\"@ JKL@,MN");
+ doTest1("SQL #13", "ABC--DEF GHI`|JKL MN", "ABC@--DEF GHI`|JKL@ MN");
+
+ type = ISTextTypes.SYSTEM_USER;
+ state[0] = STextEngine.STATE_INITIAL;
+ doTest1("System #1", "HOST(JACK)", "HOST@(JACK)");
+
+ type = ISTextTypes.UNDERSCORE;
+ state[0] = STextEngine.STATE_INITIAL;
+ doTest1("Underscore #1", "A_B_C_d_e_F_G", "A@_B@_C_d_e_F@_G");
+
+ type = ISTextTypes.URL;
+ state[0] = STextEngine.STATE_INITIAL;
+ doTest1("URL #1", "WWW.DOMAIN.COM/DIR1/DIR2/dir3/DIR4", "WWW@.DOMAIN@.COM@/DIR1@/DIR2/dir3/DIR4");
+
+ type = ISTextTypes.XPATH;
+ state[0] = STextEngine.STATE_INITIAL;
+ doTest1("Xpath #1", "abc(DEF)GHI", "abc(DEF@)GHI");
+ doTest1("Xpath #2", "DEF.GHI \"A.B\":JK ", "DEF@.GHI@ \"A.B\"@:JK ");
+ doTest1("Xpath #3", "DEF!GHI 'A!B'=JK ", "DEF@!GHI@ 'A!B'@=JK ");
+ doTest1("Xpath #4", "DEF.GHI 'A.B :JK ", "DEF@.GHI@ 'A.B :JK ");
+
+ type = ISTextTypes.EMAIL;
+ processor = STextStringProcessor.getProcessor(type);
+ state[0] = STextEngine.STATE_INITIAL;
+ f1 = processor.getFeatures(null);
+ assertEquals("<>.:,;@", f1.getSeparators());
+ f2 = new STextFeatures("+-*/", f1.getSpecialsCount(), f1.getDirArabic(), f1.getDirHebrew(), f1.getIgnoreArabic(), f1.getIgnoreHebrew());
+ doTest3("DelimsEsc #1", "abc+DEF-GHI", "abc+DEF@-GHI");
+ doTest3("DelimsEsc #2", "DEF-GHI (A*B)/JK ", "DEF@-GHI @(A*B)@/JK ");
+ doTest3("DelimsEsc #3", "DEF-GHI (A*B)/JK ", "DEF@-GHI @(A*B)@/JK ");
+ doTest3("DelimsEsc #4", "DEF-GHI (A*B\\)*C) /JK ", "DEF@-GHI @(A*B\\)*C) @/JK ");
+ doTest3("DelimsEsc #5", "DEF-GHI (A\\\\\\)*C) /JK ", "DEF@-GHI @(A\\\\\\)*C) @/JK ");
+ doTest3("DelimsEsc #6", "DEF-GHI (A\\\\)*C /JK ", "DEF@-GHI @(A\\\\)@*C @/JK ");
+ doTest3("DelimsEsc #7", "DEF-GHI (A\\)*C /JK ", "DEF@-GHI @(A\\)*C /JK ");
+ }
+}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextFullToLeanTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextFullToLeanTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextFullToLeanTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextFullToLeanTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.internal.tests;
+
+import org.eclipse.equinox.bidi.*;
+
+/**
+ * Tests fullToLean method
+ */
+
+public class STextFullToLeanTest extends STextTestBase {
+
+ static final STextEnvironment envLTR = new STextEnvironment(null, false, STextEnvironment.ORIENT_LTR);
+ static final STextEnvironment envRTL = new STextEnvironment(null, false, STextEnvironment.ORIENT_RTL);
+
+ String type;
+
+ private void doTest1(String msg, String data, String leanLTR, String fullLTR, int[] l2fMapLTR, int[] f2lMapLTR, String leanRTL, String fullRTL, int[] l2fMapRTL, int[] f2lMapRTL) {
+ String text, full, lean, label;
+ int[] map;
+
+ text = toUT16(data);
+ lean = STextEngine.fullToLeanText(type, null, envLTR, text, null);
+ assertEquals(msg + "LTR lean", leanLTR, toPseudo(lean));
+ full = STextEngine.leanToFullText(type, null, envLTR, lean, null);
+ assertEquals(msg + "LTR full", fullLTR, toPseudo(full));
+ map = STextEngine.leanToFullMap(type, null, envLTR, lean, null);
+ label = msg + "leanToFullMap() LTR";
+ assertEquals(label, array_display(l2fMapLTR), array_display(map));
+ map = STextEngine.fullToLeanMap(type, null, envLTR, text, null);
+ label = msg + "fullToLeanMap() LTR";
+ assertEquals(label, array_display(f2lMapLTR), array_display(map));
+
+ lean = STextEngine.fullToLeanText(type, null, envRTL, text, null);
+ assertEquals(msg + "RTL lean", leanRTL, toPseudo(lean));
+ full = STextEngine.leanToFullText(type, null, envRTL, lean, null);
+ assertEquals(msg + "RTL full", fullRTL, toPseudo(full));
+ map = STextEngine.leanToFullMap(type, null, envRTL, lean, null);
+ label = msg + "leanToFullMap() RTL";
+ assertEquals(label, array_display(l2fMapRTL), array_display(map));
+ map = STextEngine.fullToLeanMap(type, null, envRTL, text, null);
+ label = msg + "fullToLeanMap() RTL";
+ assertEquals(label, array_display(f2lMapRTL), array_display(map));
+ }
+
+ private void doTest2(String msg) {
+ String text, data, full, lean, model;
+ int[] state = new int[1];
+ int state1, state2, state3;
+
+ data = "update \"AB_CDE\" set \"COL1\"@='01', \"COL2\"@='02' /* GH IJK";
+ text = toUT16(data);
+ state[0] = -1;
+ lean = STextEngine.fullToLeanText(type, null, envLTR, text, state);
+ state1 = state[0];
+ model = "update \"AB_CDE\" set \"COL1\"='01', \"COL2\"='02' /* GH IJK";
+ assertEquals(msg + "LTR lean", model, toPseudo(lean));
+ state[0] = -1;
+ full = STextEngine.leanToFullText(type, null, envLTR, lean, state);
+ assertEquals(msg + "LTR full", data, toPseudo(full));
+ assertEquals(msg + "state from leanToFullText", state1, state[0]);
+ data = "THIS IS A COMMENT LINE";
+ text = toUT16(data);
+ state[0] = state1;
+ lean = STextEngine.fullToLeanText(type, null, envLTR, text, state);
+ state2 = state[0];
+ model = "THIS IS A COMMENT LINE";
+ assertEquals(msg + "LTR lean2", model, toPseudo(lean));
+ state[0] = state1;
+ full = STextEngine.leanToFullText(type, null, envLTR, lean, state);
+ assertEquals(msg + "LTR full2", data, toPseudo(full));
+ assertEquals(msg + "state from leanToFullText2", state2, state[0]);
+ data = "SOME MORE */ where \"COL3\"@=123";
+ text = toUT16(data);
+ state[0] = state2;
+ lean = STextEngine.fullToLeanText(type, null, envLTR, text, state);
+ state3 = state[0];
+ model = "SOME MORE */ where \"COL3\"=123";
+ assertEquals(msg + "LTR lean3", model, toPseudo(lean));
+ state[0] = state2;
+ full = STextEngine.leanToFullText(type, null, envLTR, lean, state);
+ assertEquals(msg + "LTR full3", data, toPseudo(full));
+ assertEquals(msg + "state from leanToFullText3", state3, state[0]);
+ }
+
+ public void testFullToLean() {
+
+ type = ISTextTypes.COMMA_DELIMITED;
+ doTest1("testFullToLean #1 - ", "", "", "", new int[0], new int[0], "", "", new int[0], new int[0]);
+ int[] map1 = new int[] {0, 1, 2, 3, 4};
+ int[] map2 = new int[] {2, 3, 4, 5, 6};
+ int[] map3;
+ doTest1("testFullToLean #01 - ", "1.abc", "1.abc", "1.abc", map1, map1, "1.abc", ">@1.abc@^", map2, map1);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
+ map2 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
+ doTest1("testFullToLean #02 - ", "2.abc,def", "2.abc,def", "2.abc,def", map1, map1, "2.abc,def", ">@2.abc,def@^", map2, map1);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+ map2 = new int[] {-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
+ doTest1("testFullToLean #03 - ", "@a.3.bc,def", "a.3.bc,def", "a.3.bc,def", map1, map2, "a.3.bc,def", ">@a.3.bc,def@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+ map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
+ doTest1("testFullToLean #04 - ", "@@a.4.bc,def", "a.4.bc,def", "a.4.bc,def", map1, map2, "a.4.bc,def", ">@a.4.bc,def@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
+ map2 = new int[] {-1, 0, 1, 2, 3, 4, 5, 6, 7, 8};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
+ doTest1("testFullToLean #05 - ", "@5.abc,def", "5.abc,def", "5.abc,def", map1, map2, "5.abc,def", ">@5.abc,def@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
+ map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
+ doTest1("testFullToLean #06 - ", "@@6.abc,def", "6.abc,def", "6.abc,def", map1, map2, "6.abc,def", ">@6.abc,def@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
+ map2 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
+ doTest1("testFullToLean #07 - ", "7abc,@def", "7abc,@def", "7abc,@def", map1, map1, "7abc,@def", ">@7abc,@def@^", map2, map1);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, -1, 6, 7, 8};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
+ doTest1("testFullToLean #08 - ", "8abc,@@def", "8abc,@def", "8abc,@def", map1, map2, "8abc,@def", ">@8abc,@def@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9};
+ doTest1("testFullToLean #09 - ", "9abc,def@", "9abc,def", "9abc,def", map1, map2, "9abc,def", ">@9abc,def@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, -1, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
+ doTest1("testFullToLean #10 - ", "10abc,def@@", "10abc,def", "10abc,def", map1, map2, "10abc,def", ">@10abc,def@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
+ map2 = new int[] {-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
+ doTest1("testFullToLean #11 - ", "@a.11.bc,@def@", "a.11.bc,@def", "a.11.bc,@def", map1, map2, "a.11.bc,@def", ">@a.11.bc,@def@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
+ map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -1, 9, 10, 11, -1, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
+ doTest1("testFullToLean #12 - ", "@@a.12.bc,@@def@@", "a.12.bc,@def", "a.12.bc,@def", map1, map2, "a.12.bc,@def", ">@a.12.bc,@def@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4};
+ map2 = new int[] {2, 3, 4, 5, 6};
+ doTest1("testFullToLean #13 - ", "13ABC", "13ABC", "13ABC", map1, map1, "13ABC", ">@13ABC@^", map2, map1);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10};
+ doTest1("testFullToLean #14 - ", "14ABC,DE", "14ABC,DE", "14ABC@,DE", map1, map2, "14ABC,DE", ">@14ABC@,DE@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8};
+ map2 = new int[] {0, 1, 2, 3, 4, -1, 5, 6, 7};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10};
+ doTest1("testFullToLean #15 - ", "15ABC@,DE", "15ABC,DE", "15ABC@,DE", map1, map2, "15ABC,DE", ">@15ABC@,DE@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8};
+ map2 = new int[] {0, 1, 2, 3, 4, -1, -1, 5, 6, 7};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10};
+ doTest1("testFullToLean #16 - ", "16ABC@@,DE", "16ABC,DE", "16ABC@,DE", map1, map2, "16ABC,DE", ">@16ABC@,DE@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, 6, -1, 7, 8};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10};
+ doTest1("testFullToLean #17 - ", "17ABC,@@DE", "17ABC,@DE", "17ABC,@DE", map1, map2, "17ABC,@DE", ">@17ABC,@DE@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
+ doTest1("testFullToLean #18 - ", "18ABC,DE,FGH", "18ABC,DE,FGH", "18ABC@,DE@,FGH", map1, map2, "18ABC,DE,FGH", ">@18ABC@,DE@,FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
+ map2 = new int[] {0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
+ doTest1("testFullToLean #19 - ", "19ABC@,DE@,FGH", "19ABC,DE,FGH", "19ABC@,DE@,FGH", map1, map2, "19ABC,DE,FGH", ">@19ABC@,DE@,FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
+ map2 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
+ doTest1("testFullToLean #20 - ", "20ABC,@DE,@FGH", "20ABC,@DE,@FGH", "20ABC,@DE,@FGH", map1, map1, "20ABC,@DE,@FGH", ">@20ABC,@DE,@FGH@^", map2, map1);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
+ map2 = new int[] {0, 1, 2, 3, 4, -1, -1, 5, 6, 7, -1, -1, 8, 9, 10, 11};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
+ doTest1("testFullToLean #21 - ", "21ABC@@,DE@@,FGH", "21ABC,DE,FGH", "21ABC@,DE@,FGH", map1, map2, "21ABC,DE,FGH", ">@21ABC@,DE@,FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, 6, -1, 7, 8, 9, 10, -1, 11, 12, 13};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
+ doTest1("testFullToLean #22 - ", "22ABC,@@DE,@@FGH", "22ABC,@DE,@FGH", "22ABC,@DE,@FGH", map1, map2, "22ABC,@DE,@FGH", ">@22ABC,@DE,@FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4};
+ map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, -1, -1};
+ map3 = new int[] {2, 3, 4, 5, 6};
+ doTest1("testFullToLean #23 - ", ">@23abc@^", "23abc", "23abc", map1, map2, "23abc", ">@23abc@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4};
+ map2 = new int[] {0, 1, 2, 3, 4, -1, -1};
+ map3 = new int[] {2, 3, 4, 5, 6};
+ doTest1("testFullToLean #24 - ", "24abc@^", "24abc", "24abc", map1, map2, "24abc", ">@24abc@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4};
+ map2 = new int[] {-1, -1, 0, 1, 2, 3, 4};
+ map3 = new int[] {2, 3, 4, 5, 6};
+ doTest1("testFullToLean #25 - ", ">@25abc", "25abc", "25abc", map1, map2, "25abc", ">@25abc@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
+ map3 = new int[] {2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17};
+ doTest1("testFullToLean #26 - ", "26AB,CD@EF,GHI", "26AB,CD@EF,GHI", "26AB@,CD@EF@,GHI", map1, map2, "26AB,CD@EF,GHI", ">@26AB@,CD@EF@,GHI@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
+ map3 = new int[] {2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
+ doTest1("testFullToLean #27 - ", "27AB,CD@123ef,GHI", "27AB,CD@123ef,GHI", "27AB@,CD@123ef,GHI", map1, map2, "27AB,CD@123ef,GHI", ">@27AB@,CD@123ef,GHI@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
+ map2 = new int[] {-1, 0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
+ doTest1("testFullToLean #28 - ", ">28ABC@,DE@,FGH^", "28ABC,DE,FGH", "28ABC@,DE@,FGH", map1, map2, "28ABC,DE,FGH", ">@28ABC@,DE@,FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
+ map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11, -1, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
+ doTest1("testFullToLean #29 - ", ">>29ABC@,DE@,FGH^^", "29ABC,DE,FGH", "29ABC@,DE@,FGH", map1, map2, "29ABC,DE,FGH", ">@29ABC@,DE@,FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
+ map2 = new int[] {-1, 0, 1, 2, 3, 4, 5, 6, -1, 7, 8, 9, -1, 10, 11, 12, 13, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17};
+ doTest1("testFullToLean #30 - ", ">30AB>C^@,DE@,FGH^", "30AB>C^,DE,FGH", "30AB>C^@,DE@,FGH", map1, map2, "30AB>C^,DE,FGH", ">@30AB>C^@,DE@,FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14};
+ map2 = new int[] {-1, 0, 1, 2, 3, 4, 5, -1, 6, 7, 8, -1, 9, 10, 11, 12, -1, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 14, 15, 16};
+ doTest1("testFullToLean #31 - ", ">31AB>C@,DE@,FGH^^", "31AB>C,DE,FGH", "31AB>C@,DE@,FGH", map1, map2, "31AB>C,DE,FGH", ">@31AB>C@,DE@,FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
+ map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11, -1, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
+ doTest1("testFullToLean #32 - ", ">@32ABC@,DE@,FGH@^", "32ABC,DE,FGH", "32ABC@,DE@,FGH", map1, map2, "32ABC,DE,FGH", ">@32ABC@,DE@,FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
+ map2 = new int[] {-1, 0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11, -1, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
+ doTest1("testFullToLean #33 - ", "@33ABC@,DE@,FGH@^", "33ABC,DE,FGH", "33ABC@,DE@,FGH", map1, map2, "33ABC,DE,FGH", ">@33ABC@,DE@,FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13};
+ map2 = new int[] {-1, -1, 0, 1, 2, 3, 4, -1, 5, 6, 7, -1, 8, 9, 10, 11, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15};
+ doTest1("testFullToLean #34 - ", ">@34ABC@,DE@,FGH@", "34ABC,DE,FGH", "34ABC@,DE@,FGH", map1, map2, "34ABC,DE,FGH", ">@34ABC@,DE@,FGH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, -1, 6, 7, 8, -1, -1, 9, 10, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
+ doTest1("testFullToLean #35 - ", "35ABC@@DE@@@GH@", "35ABC@DE@GH", "35ABC@DE@GH", map1, map2, "35ABC@DE@GH", ">@35ABC@DE@GH@^", map3, map2);
+ map1 = new int[] {0, 1, 2, 3, 4, 5, 6, 7};
+ map2 = new int[] {0, 1, 2, 3, 4, 5, -1, 6, 7, -1, -1, -1, -1, -1, -1};
+ map3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9};
+ doTest1("testFullToLean #36 - ", "36ABC@@DE@@@@@@", "36ABC@DE", "36ABC@DE", map1, map2, "36ABC@DE", ">@36ABC@DE@^", map3, map2);
+ map1 = new int[0];
+ map2 = new int[] {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
+ doTest1("testFullToLean #37 - ", ">>>@@@@@^^^", "", "", map1, map2, "", "", map1, map2);
+
+ // test fullToLeanText with initial state
+ type = ISTextTypes.SQL;
+ doTest2("testFullToLean #38 - ");
+ }
+}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextMathTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextMathTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextMathTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextMathTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.internal.tests;
+
+import org.eclipse.equinox.bidi.*;
+
+/**
+ * Tests RTL arithmetic
+ */
+public class STextMathTest extends STextTestBase {
+
+ static final STextEnvironment envLTR = new STextEnvironment(null, false, STextEnvironment.ORIENT_LTR);
+ static final STextEnvironment envRTL = new STextEnvironment(null, false, STextEnvironment.ORIENT_RTL);
+
+ String type = ISTextTypes.RTL_ARITHMETIC;
+
+ private void verifyOneLine(String msg, String data, String resLTR, String resRTL) {
+ String lean = toUT16(data);
+ String fullLTR = STextEngine.leanToFullText(type, null, envLTR, lean, null);
+ assertEquals(msg + " LTR - ", resLTR, toPseudo(fullLTR));
+ String fullRTL = STextEngine.leanToFullText(type, null, envRTL, lean, null);
+ assertEquals(msg + " RTL - ", resRTL, toPseudo(fullRTL));
+ }
+
+ public void testRTLarithmetic() {
+ verifyOneLine("Math #0", "", "", "");
+ verifyOneLine("Math #1", "1+abc", "<&1+abc&^", "1+abc");
+ verifyOneLine("Math #2", "2+abc-def", "<&2+abc&-def&^", "2+abc&-def");
+ verifyOneLine("Math #3", "a+3*bc/def", "<&a&+3*bc&/def&^", "a&+3*bc&/def");
+ verifyOneLine("Math #4", "4+abc/def", "<&4+abc&/def&^", "4+abc&/def");
+ verifyOneLine("Math #5", "13ABC", "<&13ABC&^", "13ABC");
+ verifyOneLine("Math #6", "14ABC-DE", "<&14ABC-DE&^", "14ABC-DE");
+ verifyOneLine("Math #7", "15ABC+DE", "<&15ABC+DE&^", "15ABC+DE");
+ verifyOneLine("Math #8", "16ABC*DE", "<&16ABC*DE&^", "16ABC*DE");
+ verifyOneLine("Math #9", "17ABC/DE", "<&17ABC/DE&^", "17ABC/DE");
+ }
+}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextMethodsTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextMethodsTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextMethodsTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextMethodsTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,315 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.internal.tests;
+
+import org.eclipse.equinox.bidi.*;
+import org.eclipse.equinox.bidi.custom.*;
+
+/**
+ * Tests most public methods of BidiComplexEngine
+ */
+
+public class STextMethodsTest extends STextTestBase {
+
+ final static int LTR = STextFeatures.DIR_LTR;
+ final static int RTL = STextFeatures.DIR_RTL;
+ final static STextEnvironment envLTR = new STextEnvironment(null, false, STextEnvironment.ORIENT_LTR);
+ final static STextEnvironment envRTL = new STextEnvironment(null, false, STextEnvironment.ORIENT_RTL);
+ final static STextEnvironment envRTLMIR = new STextEnvironment(null, true, STextEnvironment.ORIENT_RTL);
+ final static STextEnvironment envIGN = new STextEnvironment(null, false, STextEnvironment.ORIENT_IGNORE);
+ final static STextEnvironment envCLR = new STextEnvironment(null, false, STextEnvironment.ORIENT_CONTEXTUAL_LTR);
+ final static STextEnvironment envCRL = new STextEnvironment(null, false, STextEnvironment.ORIENT_CONTEXTUAL_RTL);
+ final static STextEnvironment envERR = new STextEnvironment(null, false, 9999);
+
+ private void doTestTools() {
+
+ // This method tests utility methods used by the JUnits
+ String data = "56789ABCDEFGHIJKLMNOPQRSTUVWXYZ~#@&><^|`";
+ String text = toUT16(data);
+ String dat2 = toPseudo(text);
+ assertEquals(data, dat2);
+
+ text = toPseudo(data);
+ assertEquals("56789abcdefghijklmnopqrstuvwxyz~#@&><^|`", text);
+
+ text = array_display(null);
+ assertEquals("null", text);
+ }
+
+ private void doTestState() {
+ String data, lean, full, model;
+ int[] state = new int[1];
+ state[0] = -1;
+ String type = ISTextTypes.JAVA;
+ data = "A=B+C;/* D=E+F;";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(type, null, null, lean, state);
+ model = "A@=B@+C@;/* D=E+F;";
+ assertEquals("full1", model, toPseudo(full));
+ data = "A=B+C; D=E+F;";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(type, null, null, lean, state);
+ model = "A=B+C; D=E+F;";
+ assertEquals("full2", model, toPseudo(full));
+ data = "A=B+C;*/ D=E+F;";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(type, null, null, lean, state);
+ model = "A=B+C;@*/ D@=E@+F;";
+ assertEquals("full3", model, toPseudo(full));
+ }
+
+ private void doTestOrientation() {
+ int orient;
+ orient = STextEnvironment.DEFAULT.getOrientation();
+ assertEquals("orient #1", STextEnvironment.ORIENT_LTR, orient);
+
+ orient = envIGN.getOrientation();
+ assertEquals("orient #2", STextEnvironment.ORIENT_IGNORE, orient);
+
+ orient = envCRL.getOrientation();
+ assertEquals("orient #3", STextEnvironment.ORIENT_CONTEXTUAL_RTL, orient);
+
+ orient = envERR.getOrientation();
+ assertEquals("orient #4", STextEnvironment.ORIENT_UNKNOWN, orient);
+ }
+
+ private void doTestOrient(STextFeatures f, String label, String data, String resLTR, String resRTL, String resCon) {
+ String full, lean;
+ String type = ISTextTypes.COMMA_DELIMITED;
+
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(type, f, envLTR, lean, null);
+ assertEquals(label + "LTR full", resLTR, toPseudo(full));
+ full = STextEngine.leanToFullText(type, f, envRTL, lean, null);
+ assertEquals("label + RTL full", resRTL, toPseudo(full));
+ full = STextEngine.leanToFullText(type, f, envCRL, lean, null);
+ assertEquals(label + "CON full", resCon, toPseudo(full));
+ }
+
+ private void doTestScripts(STextFeatures f1) {
+ STextFeatures f2;
+ boolean flag;
+ flag = f1.getIgnoreArabic();
+ assertFalse("Ignores Arabic 1", flag);
+ flag = f1.getIgnoreHebrew();
+ assertFalse("Ignores Hebrew 1", flag);
+
+ f2 = new STextFeatures(f1.getSeparators(), 0, -1, -1, true, true);
+ flag = f2.getIgnoreArabic();
+ assertTrue("Ignores Arabic 2", flag);
+ flag = f2.getIgnoreHebrew();
+ assertTrue("Ignores Hebrew 2", flag);
+ doTestOrient(f2, "Scripts #1 ", "BCD,EF", "BCD,EF", ">@BCD,EF@^", "@BCD,EF");
+ f2 = new STextFeatures(f1.getSeparators(), 0, -1, -1, false, true);
+ flag = f2.getIgnoreArabic();
+ assertFalse("Ignores Arabic 3", flag);
+ flag = f2.getIgnoreHebrew();
+ assertTrue("Ignores Hebrew 3", flag);
+ doTestOrient(f2, "Scripts #2 ", "d,EF", "d,EF", ">@d,EF@^", "d,EF");
+ doTestOrient(f2, "Scripts #3 ", "#,eF", "#,eF", ">@#,eF@^", "@#,eF");
+ doTestOrient(f2, "Scripts #4 ", "#,12", "#@,12", ">@#@,12@^", "@#@,12");
+ doTestOrient(f2, "Scripts #5 ", "#,##", "#@,##", ">@#@,##@^", "@#@,##");
+ doTestOrient(f2, "Scripts #6 ", "#,89", "#@,89", ">@#@,89@^", "@#@,89");
+ doTestOrient(f2, "Scripts #7 ", "#,ef", "#,ef", ">@#,ef@^", "@#,ef");
+ doTestOrient(f2, "Scripts #8 ", "#,", "#,", ">@#,@^", "@#,");
+ doTestOrient(f2, "Scripts #9 ", "9,ef", "9,ef", ">@9,ef@^", "9,ef");
+ doTestOrient(f2, "Scripts #10 ", "9,##", "9@,##", ">@9@,##@^", "9@,##");
+ doTestOrient(f2, "Scripts #11 ", "7,89", "7@,89", ">@7@,89@^", "7@,89");
+ doTestOrient(f2, "Scripts #12 ", "7,EF", "7,EF", ">@7,EF@^", "@7,EF");
+ doTestOrient(f2, "Scripts #13 ", "BCD,EF", "BCD,EF", ">@BCD,EF@^", "@BCD,EF");
+
+ f2 = new STextFeatures(f1.getSeparators(), 0, -1, -1, true, false);
+ flag = f2.getIgnoreArabic();
+ assertTrue("Ignores Arabic 4", flag);
+ flag = f2.getIgnoreHebrew();
+ assertFalse("Ignores Hebrew 4", flag);
+ doTestOrient(f2, "Scripts #14 ", "BCd,EF", "BCd,EF", ">@BCd,EF@^", "@BCd,EF");
+ doTestOrient(f2, "Scripts #15 ", "BCD,eF", "BCD,eF", ">@BCD,eF@^", "@BCD,eF");
+ doTestOrient(f2, "Scripts #16 ", "BCD,EF", "BCD@,EF", ">@BCD@,EF@^", "@BCD@,EF");
+ doTestOrient(f2, "Scripts #17 ", "BCD,12", "BCD@,12", ">@BCD@,12@^", "@BCD@,12");
+ doTestOrient(f2, "Scripts #18 ", "BCD,", "BCD,", ">@BCD,@^", "@BCD,");
+
+ f2 = new STextFeatures(f1.getSeparators(), 0, -1, -1, false, false);
+ doTestOrient(f2, "Scripts #19 ", "123,45|67", "123,45|67", ">@123,45|67@^", "@123,45|67");
+ doTestOrient(f2, "Scripts #20 ", "5,e", "5,e", ">@5,e@^", "5,e");
+ doTestOrient(f2, "Scripts #21 ", "5,#", "5@,#", ">@5@,#@^", "5@,#");
+ doTestOrient(f2, "Scripts #22 ", "5,6", "5@,6", ">@5@,6@^", "5@,6");
+ doTestOrient(f2, "Scripts #23 ", "5,D", "5@,D", ">@5@,D@^", "5@,D");
+ doTestOrient(f2, "Scripts #24 ", "5,--", "5,--", ">@5,--@^", "@5,--");
+ }
+
+ private void doTestLeanOffsets() {
+ String lean, data, label;
+ int[] state = new int[1];
+ String type = ISTextTypes.JAVA;
+ int[] offsets;
+ int[] model;
+
+ data = "A=B+C;/* D=E+F;";
+ lean = toUT16(data);
+ state[0] = -1;
+ offsets = STextEngine.leanBidiCharOffsets(type, null, null, lean, state);
+ model = new int[] {1, 3, 5};
+ label = "leanBidiCharOffsets() #1 ";
+ assertEquals(label, array_display(model), array_display(offsets));
+ data = "A=B+C;*/ D=E+F;";
+ lean = toUT16(data);
+ offsets = STextEngine.leanBidiCharOffsets(type, null, null, lean, state);
+ model = new int[] {6, 10, 12};
+ label = "leanBidiCharOffsets() #2 ";
+ assertEquals(label, array_display(model), array_display(offsets));
+ }
+
+ private void doTestFullOffsets(String label, String data, int[] resLTR, int[] resRTL, int[] resCon) {
+ String full, lean, msg;
+ int[] offsets;
+ String type = ISTextTypes.COMMA_DELIMITED;
+
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(type, null, envLTR, lean, null);
+ offsets = STextEngine.fullBidiCharOffsets(type, null, envLTR, full, null);
+ msg = label + "LTR ";
+ assertEquals(msg, array_display(resLTR), array_display(offsets));
+ full = STextEngine.leanToFullText(type, null, envRTL, lean, null);
+ offsets = STextEngine.fullBidiCharOffsets(type, null, envRTL, full, null);
+ msg = label + "RTL ";
+ assertEquals(msg, array_display(resRTL), array_display(offsets));
+ full = STextEngine.leanToFullText(type, null, envCLR, lean, null);
+ offsets = STextEngine.fullBidiCharOffsets(type, null, envCLR, full, null);
+ msg = label + "CON ";
+ assertEquals(msg, array_display(resCon), array_display(offsets));
+ }
+
+ private void doTestMirrored() {
+ boolean mirrored;
+ mirrored = STextEnvironment.DEFAULT.getMirrored();
+ assertFalse("mirrored #1", mirrored);
+ STextEnvironment env = new STextEnvironment(null, true, STextEnvironment.ORIENT_LTR);
+ mirrored = env.getMirrored();
+ assertTrue("mirrored #2", mirrored);
+ }
+
+ private void doTestDirection() {
+ String data, lean, full, model, msg;
+ ISTextProcessor processor = STextStringProcessor.getProcessor(ISTextTypes.COMMA_DELIMITED);
+ STextFeatures f1 = processor.getFeatures(null);
+ msg = "TestDirection #1";
+ assertTrue(msg, f1.getDirArabic() == LTR && f1.getDirHebrew() == LTR);
+
+ STextFeatures f2 = new STextFeatures(f1.getSeparators(), 0, RTL, RTL, false, false);
+ f1 = f2;
+ msg = "TestDirection #2";
+ assertTrue(msg, f1.getDirArabic() == RTL && f1.getDirHebrew() == RTL);
+
+ STextEnvironment environment = new STextEnvironment(null, false, STextEnvironment.ORIENT_LTR);
+ processor = STextStringProcessor.getProcessor(ISTextTypes.EMAIL);
+ f1 = processor.getFeatures(environment);
+ msg = "TestDirection #3";
+ assertTrue(msg, f1.getDirArabic() == LTR && f1.getDirHebrew() == LTR);
+ data = "#ABC.#DEF:HOST.com";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(processor, null, environment, lean, null);
+ model = "#ABC@.#DEF@:HOST.com";
+ assertEquals("TestDirection #9 full", model, toPseudo(full));
+
+ data = "ABC.DEF:HOST.com";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(processor, null, environment, lean, null);
+ model = "ABC@.DEF@:HOST.com";
+ assertEquals("TestDirection #10 full", model, toPseudo(full));
+
+ environment = new STextEnvironment(null, true, STextEnvironment.ORIENT_LTR);
+ f1 = processor.getFeatures(environment);
+ msg = "TestDirection #10.5";
+ assertTrue(msg, f1.getDirArabic() == RTL && f1.getDirHebrew() == LTR);
+ data = "#ABC.#DEF:HOST.com";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(processor, null, environment, lean, null);
+ model = "<ABC.#DEF:HOST.com&^";
+ assertEquals("TestDirection #11 full", model, toPseudo(full));
+
+ data = "#ABc.#DEF:HOSt.COM";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(processor, null, environment, lean, null);
+ model = "<ABc.#DEF:HOSt.COM&^";
+ assertEquals("TestDirection #12 full", model, toPseudo(full));
+
+ data = "#ABc.#DEF:HOSt.";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(processor, null, environment, lean, null);
+ model = "<ABc.#DEF:HOSt.&^";
+ assertEquals("TestDirection #13 full", model, toPseudo(full));
+
+ data = "ABC.DEF:HOST.com";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(processor, null, environment, lean, null);
+ model = "ABC@.DEF@:HOST.com";
+ assertEquals("TestDirection #14 full", model, toPseudo(full));
+
+ data = "--.---:----";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(processor, null, environment, lean, null);
+ model = "--.---:----";
+ assertEquals("TestDirection #15 full", model, toPseudo(full));
+
+ data = "ABC.|DEF:HOST.com";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(processor, null, environment, lean, null);
+ model = "ABC.|DEF@:HOST.com";
+ assertEquals("TestDirection #16 full", model, toPseudo(full));
+
+ data = "#ABc.|#DEF:HOST.com";
+ lean = toUT16(data);
+ full = STextEngine.leanToFullText(processor, null, envRTLMIR, lean, null);
+ model = "#ABc.|#DEF:HOST.com";
+ assertEquals("TestDirection #17 full", model, toPseudo(full));
+ assertEquals("Test curDirection", RTL, STextEngine.getCurDirection(processor, null, envRTLMIR, lean));
+ }
+
+ public void testMethods() {
+
+ doTestTools();
+
+ doTestState();
+
+ doTestOrientation();
+
+ ISTextProcessor processor = STextStringProcessor.getProcessor(ISTextTypes.COMMA_DELIMITED);
+ STextFeatures f = processor.getFeatures(null);
+ doTestOrient(f, "Methods #1 ", "", "", "", "");
+ doTestOrient(f, "Methods #2 ", "abc", "abc", ">@abc@^", "abc");
+ doTestOrient(f, "Methods #3 ", "ABC", "ABC", ">@ABC@^", "@ABC");
+ doTestOrient(f, "Methods #4 ", "bcd,ef", "bcd,ef", ">@bcd,ef@^", "bcd,ef");
+ doTestOrient(f, "Methods #5 ", "BCD,EF", "BCD@,EF", ">@BCD@,EF@^", "@BCD@,EF");
+ doTestOrient(f, "Methods #6 ", "cde,FG", "cde,FG", ">@cde,FG@^", "cde,FG");
+ doTestOrient(f, "Methods #7 ", "CDE,fg", "CDE,fg", ">@CDE,fg@^", "@CDE,fg");
+ doTestOrient(f, "Methods #8 ", "12..def,GH", "12..def,GH", ">@12..def,GH@^", "12..def,GH");
+ doTestOrient(f, "Methods #9 ", "34..DEF,gh", "34..DEF,gh", ">@34..DEF,gh@^", "@34..DEF,gh");
+
+ doTestScripts(f);
+
+ doTestLeanOffsets();
+
+ doTestFullOffsets("TestFullOffsets ", "BCD,EF,G", new int[] {3, 7}, new int[] {0, 1, 5, 9, 12, 13}, new int[] {0, 4, 8});
+
+ doTestMirrored();
+
+ doTestDirection();
+
+ String type = ISTextTypes.COMMA_DELIMITED;
+ String data = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
+ String lean = toUT16(data);
+ String full = STextEngine.leanToFullText(type, null, null, lean, null);
+ String model = "A@,B@,C@,D@,E@,F@,G@,H@,I@,J@,K@,L@,M@,N@,O@,P@,Q@,R@,S@,T@,U@,V@,W@,X@,Y@,Z";
+ assertEquals("many inserts", model, toPseudo(full));
+ }
+}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextNullProcessorTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextNullProcessorTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextNullProcessorTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextNullProcessorTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.internal.tests;
+
+import org.eclipse.equinox.bidi.STextEngine;
+import org.eclipse.equinox.bidi.custom.STextFeatures;
+
+/**
+ * Tests RTL arithmetic
+ */
+public class STextNullProcessorTest extends STextTestBase {
+
+ static final int[] EMPTY_INT_ARRAY = new int[0];
+
+ public void testNullProcessor() {
+ String full = STextEngine.leanToFullText(null, null, null, "abc", null);
+ assertEquals("leanToFullText", "abc", full);
+ int[] state = new int[1];
+ state[0] = 3;
+ full = STextEngine.leanToFullText(null, null, null, "abc", state);
+ assertEquals("leanToFullText with state", "abc", full);
+ int[] offsets = STextEngine.leanBidiCharOffsets(null, null, null, "abc", null);
+ assertEquals("leanBidiCharOffsets", 0, offsets.length);
+ offsets = STextEngine.fullBidiCharOffsets(null, null, null, "abc", null);
+ assertEquals("fullBidiCharOffsets", 0, offsets.length);
+ String lean = STextEngine.fullToLeanText(null, null, null, "abc", null);
+ assertEquals("fullToLeanText", "abc", lean);
+ lean = STextEngine.fullToLeanText(null, null, null, "abc", state);
+ assertEquals("fullToLeanText with state", "abc", lean);
+ int[] map = STextEngine.leanToFullMap(null, null, null, "abc", null);
+ int[] model = {0, 1, 2};
+ assertEquals("leanToFullMap", array_display(model), array_display(map));
+ map = STextEngine.fullToLeanMap(null, null, null, "abc", null);
+ assertEquals("fullToLeanMap", array_display(model), array_display(map));
+ int direction = STextEngine.getCurDirection(null, null, null, "abc");
+ assertEquals("getCurDirection", STextFeatures.DIR_LTR, direction);
+ }
+}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextSomeMoreTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextSomeMoreTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextSomeMoreTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextSomeMoreTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.internal.tests;
+
+import org.eclipse.equinox.bidi.STextEngine;
+import org.eclipse.equinox.bidi.STextEnvironment;
+import org.eclipse.equinox.bidi.custom.*;
+
+/**
+ * Tests some weird cases
+ */
+
+public class STextSomeMoreTest extends STextTestBase {
+
+ final static STextEnvironment env1 = new STextEnvironment("en_US", false, STextEnvironment.ORIENT_LTR);
+ final static STextEnvironment env2 = new STextEnvironment("he", false, STextEnvironment.ORIENT_LTR);
+ final static STextFeatures myFeatures = new STextFeatures(null, 1, -1, -1, false, false);
+
+ class Processor1 extends STextProcessor {
+
+ public STextFeatures getFeatures(STextEnvironment env) {
+ return myFeatures;
+ }
+
+ public int indexOfSpecial(STextFeatures features, String text, byte[] dirProps, int[] offsets, int caseNumber, int fromIndex) {
+ return fromIndex;
+ }
+
+ public int processSpecial(STextFeatures features, String text, byte[] dirProps, int[] offsets, int[] state, int caseNumber, int separLocation) {
+ int len = text.length();
+ for (int i = len - 1; i >= 0; i--) {
+ STextProcessor.insertMark(text, dirProps, offsets, i);
+ STextProcessor.insertMark(text, dirProps, offsets, i);
+ }
+ return len;
+ }
+ }
+
+ class Processor2 extends STextProcessor {
+
+ public STextFeatures getFeatures(STextEnvironment env) {
+ return myFeatures;
+ }
+ }
+
+ class Processor3 extends STextProcessor {
+
+ public STextFeatures getFeatures(STextEnvironment env) {
+ return myFeatures;
+ }
+
+ public int indexOfSpecial(STextFeatures features, String text, byte[] dirProps, int[] offsets, int caseNumber, int fromIndex) {
+ return 0;
+ }
+ }
+
+ public void testSomeMore() {
+ assertFalse(env1.isBidi());
+ assertTrue(env2.isBidi());
+
+ ISTextProcessor processor = new Processor1();
+ String full = STextEngine.leanToFullText(processor, null, env1, "abcd", null);
+ assertEquals("@a@b@c@d", toPseudo(full));
+
+ processor = new Processor2();
+ boolean catchFlag = false;
+ try {
+ full = STextEngine.leanToFullText(processor, null, env1, "abcd", null);
+ } catch (IllegalStateException e) {
+ catchFlag = true;
+ }
+ assertTrue("Catch missing indexOfSpecial", catchFlag);
+
+ processor = new Processor3();
+ catchFlag = false;
+ try {
+ full = STextEngine.leanToFullText(processor, null, env1, "abcd", null);
+ } catch (IllegalStateException e) {
+ catchFlag = true;
+ }
+ assertTrue("Catch missing processSpecial", catchFlag);
+ }
+
+}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextStringRecordTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextStringRecordTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextStringRecordTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextStringRecordTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.internal.tests;
+
+import org.eclipse.equinox.bidi.STextStringRecord;
+import org.eclipse.equinox.bidi.custom.STextStringProcessor;
+
+/**
+ * Tests the StringRecord class
+ */
+public class STextStringRecordTest extends STextTestBase {
+ public void testStringRecord() {
+ STextStringRecord sr;
+ boolean catchFlag;
+ short[] badTriplet1 = new short[] {0, 0};
+ short[] badTriplet2 = new short[] {0, 0, -1};
+ short[] badTriplet3 = new short[] {0, 0, 999};
+ short[] goodTriplet = new short[] {0, 3, 2};
+ short[] triplets;
+ short type;
+ String strType;
+ // check handling of invalid arguments
+ catchFlag = false;
+ try {
+ sr = new STextStringRecord(null, badTriplet1);
+ } catch (IllegalArgumentException e) {
+ catchFlag = true;
+ }
+ assertTrue("Catch null string argument", catchFlag);
+ catchFlag = false;
+ try {
+ sr = new STextStringRecord("xxx", null);
+ } catch (IllegalArgumentException e) {
+ catchFlag = true;
+ }
+ assertTrue("Catch null triplets argument", catchFlag);
+ catchFlag = false;
+ try {
+ sr = new STextStringRecord("xxx", badTriplet1);
+ } catch (IllegalArgumentException e) {
+ catchFlag = true;
+ }
+ assertTrue("Catch bad triplet #1 argument", catchFlag);
+ catchFlag = false;
+ try {
+ sr = new STextStringRecord("xxx", badTriplet2);
+ } catch (IllegalArgumentException e) {
+ catchFlag = true;
+ }
+ assertTrue("Catch bad triplet #2 argument", catchFlag);
+ catchFlag = false;
+ try {
+ sr = new STextStringRecord("xxx", badTriplet3);
+ } catch (IllegalArgumentException e) {
+ catchFlag = true;
+ }
+ assertTrue("Catch bad triplet #3 argument", catchFlag);
+
+ String[] types = STextStringProcessor.getKnownTypes();
+ for (int i = 0; i < types.length; i++) {
+ type = STextStringRecord.typeStringToShort(types[i]);
+ assertFalse(type == -1);
+ strType = STextStringRecord.typeShortToString(type);
+ assertEquals(types[i], strType);
+ }
+ type = STextStringRecord.typeStringToShort("dummy");
+ assertEquals(-1, type);
+ strType = STextStringRecord.typeShortToString((short) 999);
+ assertEquals(null, strType);
+ int poolSize = STextStringRecord.POOLSIZE;
+ int lim = poolSize / 2;
+ triplets = STextStringRecord.getTriplets("xxx");
+ assertEquals(null, triplets);
+ for (int i = 0; i < lim; i++) {
+ String str = Integer.toString(i);
+ sr = new STextStringRecord(str, goodTriplet);
+ STextStringRecord.add(sr);
+ }
+ triplets = STextStringRecord.getTriplets(null);
+ assertEquals(null, triplets);
+ triplets = STextStringRecord.getTriplets("");
+ assertEquals(null, triplets);
+ for (int i = 0; i < poolSize; i++) {
+ String str = Integer.toString(i);
+ triplets = STextStringRecord.getTriplets(str);
+ if (i < lim)
+ assertFalse(null == triplets);
+ else
+ assertTrue(null == triplets);
+ }
+ for (int i = lim; i <= poolSize; i++) {
+ String str = Integer.toString(i);
+ sr = new STextStringRecord(str, goodTriplet);
+ STextStringRecord.add(sr);
+ }
+ for (int i = 1; i <= poolSize; i++) {
+ String str = Integer.toString(i);
+ triplets = STextStringRecord.getTriplets(str);
+ assertFalse(null == triplets);
+ }
+ triplets = STextStringRecord.getTriplets("0");
+ assertEquals(null, triplets);
+ STextStringRecord.clear();
+ for (int i = 0; i <= poolSize; i++) {
+ String str = Integer.toString(i);
+ triplets = STextStringRecord.getTriplets(str);
+ assertEquals(null, triplets);
+ }
+ }
+}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.equinox.bidi.internal.tests;
+
+import org.eclipse.equinox.bidi.STextEnvironment;
+import org.eclipse.equinox.bidi.custom.STextFeatures;
+import org.eclipse.equinox.bidi.custom.ISTextProcessor;
+
+public class STextTest implements ISTextProcessor {
+
+ static final STextFeatures FEATURES = new STextFeatures("-=.:", 0, -1, -1, false, false);
+
+ public STextFeatures getFeatures(STextEnvironment env) {
+ return FEATURES;
+ }
+
+ public int indexOfSpecial(STextFeatures features, String text, byte[] dirProps, int[] offsets, int caseNumber, int fromIndex) {
+ throw new IllegalStateException();
+ }
+
+ public int processSpecial(STextFeatures features, String text, byte[] dirProps, int[] offsets, int[] state, int caseNumber, int separLocation) {
+ throw new IllegalStateException();
+ }
+
+}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextTestBase.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextTestBase.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextTestBase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextTestBase.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.internal.tests;
+
+import junit.framework.TestCase;
+
+/**
+ * Base functionality for the processor tests.
+ */
+public class STextTestBase extends TestCase {
+
+ static final private char LRM = 0x200E;
+
+ static final private char RLM = 0x200F;
+
+ static final private char LRE = 0x202A;
+
+ static final private char RLE = 0x202B;
+
+ static final private char PDF = 0x202C;
+
+ public static String toPseudo(String text) {
+ char[] chars = text.toCharArray();
+ int len = chars.length;
+
+ for (int i = 0; i < len; i++) {
+ char c = chars[i];
+ if (c >= 'A' && c <= 'Z')
+ chars[i] = (char) (c + 'a' - 'A');
+ else if (c >= 0x05D0 && c < 0x05EA)
+ chars[i] = (char) (c + 'A' - 0x05D0);
+ else if (c == 0x05EA)
+ chars[i] = '~';
+ else if (c == 0x0644)
+ chars[i] = '#';
+ else if (c >= 0x0665 && c <= 0x0669)
+ chars[i] = (char) (c + '5' - 0x0665);
+ else if (c == LRM)
+ chars[i] = '@';
+ else if (c == RLM)
+ chars[i] = '&';
+ else if (c == LRE)
+ chars[i] = '>';
+ else if (c == RLE)
+ chars[i] = '<';
+ else if (c == PDF)
+ chars[i] = '^';
+ else if (c == '\n')
+ chars[i] = '|';
+ else if (c == '\r')
+ chars[i] = '`';
+ }
+ return new String(chars);
+ }
+
+ public static String toUT16(String text) {
+ char[] chars = text.toCharArray();
+ int len = chars.length;
+
+ for (int i = 0; i < len; i++) {
+ char c = chars[i];
+ if (c >= '5' && c <= '9')
+ chars[i] = (char) (0x0665 + c - '5');
+ else if (c >= 'A' && c <= 'Z')
+ chars[i] = (char) (0x05D0 + c - 'A');
+ else if (c == '~')
+ chars[i] = (char) (0x05EA);
+ else if (c == '#')
+ chars[i] = (char) (0x0644);
+ else if (c == '@')
+ chars[i] = LRM;
+ else if (c == '&')
+ chars[i] = RLM;
+ else if (c == '>')
+ chars[i] = LRE;
+ else if (c == '<')
+ chars[i] = RLE;
+ else if (c == '^')
+ chars[i] = PDF;
+ else if (c == '|')
+ chars[i] = '\n';
+ else if (c == '`')
+ chars[i] = '\r';
+ }
+ return new String(chars);
+ }
+
+ static String array_display(int[] array) {
+ if (array == null) {
+ return "null";
+ }
+ StringBuffer sb = new StringBuffer(50);
+ int len = array.length;
+ for (int i = 0; i < len; i++) {
+ sb.append(array[i]);
+ sb.append(' ');
+ }
+ return sb.toString();
+ }
+
+}
Index: src/org/eclipse/equinox/bidi/internal/tests/STextUtilTest.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/internal/tests/STextUtilTest.java
diff -N src/org/eclipse/equinox/bidi/internal/tests/STextUtilTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/internal/tests/STextUtilTest.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.internal.tests;
+
+import java.util.Locale;
+import org.eclipse.equinox.bidi.STextUtil;
+import org.eclipse.equinox.bidi.ISTextTypes;
+
+/**
+ * Tests methods in BidiComplexUtil
+ */
+
+public class STextUtilTest extends STextTestBase {
+
+ private static final String HEBREW = "iw";
+
+ private static final String HEBREW2 = "he";
+
+ private static final String ARABIC = "ar";
+
+ private static final String FARSI = "fa";
+
+ private static final String URDU = "ur";
+
+ private Locale locale;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ locale = Locale.getDefault();
+ }
+
+ protected void tearDown() {
+ Locale.setDefault(locale);
+ }
+
+ private void doTest1(String data, String result) {
+ Locale.setDefault(Locale.ENGLISH);
+ String full = STextUtil.process(toUT16(data));
+ assertEquals("Util #1 full EN - ", data, toPseudo(full));
+ Locale.setDefault(new Locale(HEBREW2));
+ full = STextUtil.process(toUT16(data));
+ assertEquals("Util #1 full HE - ", result, toPseudo(full));
+ Locale.setDefault(new Locale(ARABIC));
+ full = STextUtil.process(toUT16(data));
+ assertEquals("Util #1 full AR - ", result, toPseudo(full));
+ Locale.setDefault(new Locale(FARSI));
+ full = STextUtil.process(toUT16(data));
+ assertEquals("Util #1 full FA - ", result, toPseudo(full));
+ Locale.setDefault(new Locale(URDU));
+ full = STextUtil.process(toUT16(data));
+ assertEquals("Util #1 full UR - ", result, toPseudo(full));
+ Locale.setDefault(new Locale(HEBREW));
+ full = STextUtil.process(toUT16(data));
+ String ful2 = STextUtil.process(toUT16(data), null);
+ assertEquals("Util #1 full - ", result, toPseudo(full));
+ assertEquals("Util #1 ful2 - ", result, toPseudo(ful2));
+ String lean = STextUtil.deprocess(full);
+ assertEquals("Util #1 lean - ", data, toPseudo(lean));
+ }
+
+ private void doTest2(String msg, String data, String result) {
+ doTest2(msg, data, result, data);
+ }
+
+ private void doTest2(String msg, String data, String result, String resLean) {
+ String full = STextUtil.process(toUT16(data), "*");
+ assertEquals(msg + "full", result, toPseudo(full));
+ String lean = STextUtil.deprocess(full);
+ assertEquals(msg + "lean", resLean, toPseudo(lean));
+ }
+
+ private void doTest3(String msg, String data, String result) {
+ doTest3(msg, data, result, data);
+ }
+
+ private void doTest3(String msg, String data, String result, String resLean) {
+ String full = STextUtil.processTyped(toUT16(data), ISTextTypes.COMMA_DELIMITED);
+ assertEquals(msg + "full", result, toPseudo(full));
+ String lean = STextUtil.deprocess(full, ISTextTypes.COMMA_DELIMITED);
+ assertEquals(msg + "lean", resLean, toPseudo(lean));
+ }
+
+ private void doTest4(String msg, String data, int[] offsets, int direction, boolean affix, String result) {
+ String txt = msg + "text=" + data + "\n offsets=" + array_display(offsets) + "\n direction=" + direction + "\n affix=" + affix;
+ String lean = toUT16(data);
+ String full = STextUtil.insertMarks(lean, offsets, direction, affix);
+ assertEquals(txt, result, toPseudo(full));
+ }
+
+ public void testBidiComplexUtil() {
+
+ // Test process() and deprocess() with default delimiters
+ doTest1("ABC/DEF/G", ">@ABC@/DEF@/G@^");
+ // Test process() and deprocess() with specified delimiters
+ doTest2("Util #2.1 - ", "", "");
+ doTest2("Util #2.2 - ", ">@ABC@^", ">@ABC@^", "ABC");
+ doTest2("Util #2.3 - ", "abc", "abc");
+ doTest2("Util #2.4 - ", "!abc", ">@!abc@^");
+ doTest2("Util #2.5 - ", "abc!", ">@abc!@^");
+ doTest2("Util #2.6 - ", "ABC*DEF*G", ">@ABC@*DEF@*G@^");
+ // Test process() and deprocess() with specified expression type
+ doTest3("Util #3.1 - ", "ABC,DEF,G", ">@ABC@,DEF@,G@^");
+ doTest3("Util #3.2 - ", "", "");
+ doTest3("Util #3.3 - ", ">@DEF@^", ">@DEF@^", "DEF");
+ boolean catchFlag = false;
+ try {
+ STextUtil.deprocess(toUT16("ABC,DE"), "wrong_type");
+ } catch (IllegalArgumentException e) {
+ catchFlag = true;
+ }
+ assertTrue("Catch invalid type on deprocess", catchFlag);
+ catchFlag = false;
+ try {
+ STextUtil.processTyped("abc", "wrong_type");
+ } catch (IllegalArgumentException e) {
+ catchFlag = true;
+ }
+ assertTrue("Catch invalid type on process", catchFlag);
+ // Test insertMarks()
+ doTest4("Util #4.1 - ", "ABCDEFG", new int[] {3, 6}, 0, false, "ABC@DEF@G");
+ doTest4("Util #4.2 - ", "ABCDEFG", new int[] {3, 6}, 0, true, ">@ABC@DEF@G@^");
+ doTest4("Util #4.3 - ", "ABCDEFG", new int[] {3, 6}, 1, false, "ABC&DEF&G");
+ doTest4("Util #4.4 - ", "ABCDEFG", new int[] {3, 6}, 1, true, "<&ABC&DEF&G&^");
+ doTest4("Util #4.5 - ", "", new int[] {3, 6}, 0, false, "");
+ doTest4("Util #4.6 - ", "", new int[] {3, 6}, 0, true, "");
+ doTest4("Util #4.7 - ", "ABCDEFG", null, 1, false, "ABCDEFG");
+ doTest4("Util #4.8 - ", "ABCDEFG", null, 1, true, "<&ABCDEFG&^");
+ }
+}
Index: src/org/eclipse/equinox/bidi/tests/BidiComplexTestSuite.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/tests/BidiComplexTestSuite.java
diff -N src/org/eclipse/equinox/bidi/tests/BidiComplexTestSuite.java
--- src/org/eclipse/equinox/bidi/tests/BidiComplexTestSuite.java 27 Apr 2011 14:53:08 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2011 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.equinox.bidi.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.equinox.bidi.internal.tests.*;
-
-public class BidiComplexTestSuite extends TestSuite {
- public static Test suite() {
- return new BidiComplexTestSuite();
- }
-
- public BidiComplexTestSuite() {
- addTestSuite(BidiComplexExtensibilityTest.class);
- addTestSuite(BidiComplexMethodsTest.class);
- addTestSuite(BidiComplexNullProcessorTest.class);
- addTestSuite(BidiComplexFullToLeanTest.class);
- addTestSuite(BidiComplexExtensionsTest.class);
- addTestSuite(BidiComplexMathTest.class);
- addTestSuite(BidiComplexSomeMoreTest.class);
- addTestSuite(BidiComplexUtilTest.class);
- addTestSuite(BidiComplexStringRecordTest.class);
- }
-}
\ No newline at end of file
Index: src/org/eclipse/equinox/bidi/tests/STextTestSuite.java
===================================================================
RCS file: src/org/eclipse/equinox/bidi/tests/STextTestSuite.java
diff -N src/org/eclipse/equinox/bidi/tests/STextTestSuite.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/equinox/bidi/tests/STextTestSuite.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.equinox.bidi.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.eclipse.equinox.bidi.internal.tests.*;
+
+public class STextTestSuite extends TestSuite {
+ public static Test suite() {
+ return new STextTestSuite();
+ }
+
+ public STextTestSuite() {
+ addTestSuite(STextExtensibilityTest.class);
+ addTestSuite(STextMethodsTest.class);
+ addTestSuite(STextNullProcessorTest.class);
+ addTestSuite(STextFullToLeanTest.class);
+ addTestSuite(STextExtensionsTest.class);
+ addTestSuite(STextMathTest.class);
+ addTestSuite(STextSomeMoreTest.class);
+ addTestSuite(STextUtilTest.class);
+ addTestSuite(STextStringRecordTest.class);
+ }
+}
\ No newline at end of file