| /* |
| ******************************************************************************* |
| * Copyright (C) 2007-2011, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| ******************************************************************************* |
| */ |
| |
| package com.ibm.icu.dev.test.bidi; |
| |
| import com.ibm.icu.text.Bidi; |
| |
| /** |
| * Regression test for doing transformations in context |
| * |
| * @author Matitiahu Allouche |
| */ |
| |
| public class TestContext extends BidiTest { |
| |
| private class ContextCase { |
| String prologue; |
| String source; |
| String epilogue; |
| String expected; |
| byte paraLevel; |
| |
| ContextCase(String pro, String src, String epi, String exp, byte lev) { |
| prologue = pro; |
| source = src; |
| epilogue = epi; |
| expected = exp; |
| paraLevel = lev; |
| } |
| }; |
| |
| private final ContextCase[] contextData = { |
| /*00*/ new ContextCase("", "", "", "", Bidi.LTR), |
| /*01*/ new ContextCase("", ".-=JKL-+*", "", ".-=LKJ-+*", Bidi.LTR), |
| /*02*/ new ContextCase(" ", ".-=JKL-+*", " ", ".-=LKJ-+*", Bidi.LTR), |
| /*03*/ new ContextCase("a", ".-=JKL-+*", "b", ".-=LKJ-+*", Bidi.LTR), |
| /*04*/ new ContextCase("D", ".-=JKL-+*", "", "LKJ=-.-+*", Bidi.LTR), |
| /*05*/ new ContextCase("", ".-=JKL-+*", " D", ".-=*+-LKJ", Bidi.LTR), |
| /*06*/ new ContextCase("", ".-=JKL-+*", " 2", ".-=*+-LKJ", Bidi.LTR), |
| /*07*/ new ContextCase("", ".-=JKL-+*", " 7", ".-=*+-LKJ", Bidi.LTR), |
| /*08*/ new ContextCase(" G 1", ".-=JKL-+*", " H", "*+-LKJ=-.", Bidi.LTR), |
| /*09*/ new ContextCase("7", ".-=JKL-+*", " H", ".-=*+-LKJ", Bidi.LTR), |
| /*10*/ new ContextCase("", ".-=abc-+*", "", "*+-abc=-.", Bidi.RTL), |
| /*11*/ new ContextCase(" ", ".-=abc-+*", " ", "*+-abc=-.", Bidi.RTL), |
| /*12*/ new ContextCase("D", ".-=abc-+*", "G", "*+-abc=-.", Bidi.RTL), |
| /*13*/ new ContextCase("x", ".-=abc-+*", "", "*+-.-=abc", Bidi.RTL), |
| /*14*/ new ContextCase("", ".-=abc-+*", " y", "abc-+*=-.", Bidi.RTL), |
| /*15*/ new ContextCase("", ".-=abc-+*", " 2", "abc-+*=-.", Bidi.RTL), |
| /*16*/ new ContextCase(" x 1", ".-=abc-+*", " 2", ".-=abc-+*", Bidi.RTL), |
| /*17*/ new ContextCase(" x 7", ".-=abc-+*", " 8", "*+-.-=abc", Bidi.RTL), |
| /*18*/ new ContextCase("x|", ".-=abc-+*", " 8", "*+-abc=-.", Bidi.RTL), |
| /*19*/ new ContextCase("G|y", ".-=abc-+*", " 8", "*+-.-=abc", Bidi.RTL), |
| /*20*/ new ContextCase("", ".-=", "", ".-=", Bidi.LEVEL_DEFAULT_LTR), |
| /*21*/ new ContextCase("D", ".-=", "", "=-.", Bidi.LEVEL_DEFAULT_LTR), |
| /*22*/ new ContextCase("G", ".-=", "", "=-.", Bidi.LEVEL_DEFAULT_LTR), |
| /*23*/ new ContextCase("xG", ".-=", "", ".-=", Bidi.LEVEL_DEFAULT_LTR), |
| /*24*/ new ContextCase("x|G", ".-=", "", "=-.", Bidi.LEVEL_DEFAULT_LTR), |
| /*25*/ new ContextCase("x|G", ".-=|-+*", "", "=-.|-+*", Bidi.LEVEL_DEFAULT_LTR), |
| }; |
| private final int CONTEXT_COUNT = contextData.length; |
| |
| public void testContext() |
| { |
| String prologue, epilogue, src, dest; |
| Bidi bidi = new Bidi(); |
| int tc; |
| ContextCase cc; |
| |
| logln("\nEntering TestContext\n"); |
| |
| bidi.orderParagraphsLTR(true); |
| |
| for (tc = 0; tc < CONTEXT_COUNT; tc++) { |
| cc = contextData[tc]; |
| prologue = pseudoToU16(cc.prologue); |
| epilogue = pseudoToU16(cc.epilogue); |
| /* in the call below, prologue and epilogue are swapped to show |
| that the next call will override this call */ |
| bidi.setContext(epilogue, prologue); |
| bidi.setContext(prologue, epilogue); |
| src = pseudoToU16(cc.source); |
| bidi.setPara(src, cc.paraLevel, null); |
| dest = bidi.writeReordered(Bidi.DO_MIRRORING); |
| dest = u16ToPseudo(dest); |
| assertEquals("\nActual and expected output mismatch on case "+tc+"." + |
| "\nPrologue: " + cc.prologue + |
| "\nInput: " + cc.source + |
| "\nEpilogue: " + cc.epilogue + |
| "\nParagraph level: " + Byte.toString(bidi.getParaLevel()) + "\n", |
| cc.expected, dest); |
| } |
| |
| logln("\nExiting TestContext\n"); |
| } |
| |
| public static void main(String[] args) { |
| try { |
| new TestContext().run(args); |
| } |
| catch (Exception e) { |
| System.out.println(e); |
| } |
| } |
| } |