1aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* GENERATED SOURCE. DO NOT MODIFY. */ 2f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// © 2016 and later: Unicode, Inc. and others. 3f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 4aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* 5aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin******************************************************************************* 6aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin* Copyright (C) 2007-2011, International Business Machines 7aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin* Corporation and others. All Rights Reserved. 8aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin******************************************************************************* 9aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin*/ 10aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 11aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpackage android.icu.dev.test.bidi; 12aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 13f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertimport org.junit.Test; 14f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 15aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.Bidi; 162e13a2bdade5cd0a635f0bd89805931a6fd710daPete Gillinimport android.icu.testsharding.MainTestShard; 17aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 18aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/** 19aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Regression test for doing transformations in context 20aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * 21aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * @author Matitiahu Allouche 22aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 23aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 242e13a2bdade5cd0a635f0bd89805931a6fd710daPete Gillin@MainTestShard 25f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertpublic class TestContext extends BidiFmwk { 26aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 27aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin private class ContextCase { 28aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String prologue; 29aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String source; 30aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String epilogue; 31aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String expected; 32aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin byte paraLevel; 33aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 34aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ContextCase(String pro, String src, String epi, String exp, byte lev) { 35aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin prologue = pro; 36aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin source = src; 37aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin epilogue = epi; 38aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin expected = exp; 39aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin paraLevel = lev; 40aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 41aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }; 42aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 43aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin private final ContextCase[] contextData = { 44aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*00*/ new ContextCase("", "", "", "", Bidi.LTR), 45aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*01*/ new ContextCase("", ".-=JKL-+*", "", ".-=LKJ-+*", Bidi.LTR), 46aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*02*/ new ContextCase(" ", ".-=JKL-+*", " ", ".-=LKJ-+*", Bidi.LTR), 47aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*03*/ new ContextCase("a", ".-=JKL-+*", "b", ".-=LKJ-+*", Bidi.LTR), 48aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*04*/ new ContextCase("D", ".-=JKL-+*", "", "LKJ=-.-+*", Bidi.LTR), 49aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*05*/ new ContextCase("", ".-=JKL-+*", " D", ".-=*+-LKJ", Bidi.LTR), 50aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*06*/ new ContextCase("", ".-=JKL-+*", " 2", ".-=*+-LKJ", Bidi.LTR), 51aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*07*/ new ContextCase("", ".-=JKL-+*", " 7", ".-=*+-LKJ", Bidi.LTR), 52aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*08*/ new ContextCase(" G 1", ".-=JKL-+*", " H", "*+-LKJ=-.", Bidi.LTR), 53aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*09*/ new ContextCase("7", ".-=JKL-+*", " H", ".-=*+-LKJ", Bidi.LTR), 54aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*10*/ new ContextCase("", ".-=abc-+*", "", "*+-abc=-.", Bidi.RTL), 55aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*11*/ new ContextCase(" ", ".-=abc-+*", " ", "*+-abc=-.", Bidi.RTL), 56aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*12*/ new ContextCase("D", ".-=abc-+*", "G", "*+-abc=-.", Bidi.RTL), 57aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*13*/ new ContextCase("x", ".-=abc-+*", "", "*+-.-=abc", Bidi.RTL), 58aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*14*/ new ContextCase("", ".-=abc-+*", " y", "abc-+*=-.", Bidi.RTL), 59aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*15*/ new ContextCase("", ".-=abc-+*", " 2", "abc-+*=-.", Bidi.RTL), 60aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*16*/ new ContextCase(" x 1", ".-=abc-+*", " 2", ".-=abc-+*", Bidi.RTL), 61aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*17*/ new ContextCase(" x 7", ".-=abc-+*", " 8", "*+-.-=abc", Bidi.RTL), 62aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*18*/ new ContextCase("x|", ".-=abc-+*", " 8", "*+-abc=-.", Bidi.RTL), 63aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*19*/ new ContextCase("G|y", ".-=abc-+*", " 8", "*+-.-=abc", Bidi.RTL), 64aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*20*/ new ContextCase("", ".-=", "", ".-=", Bidi.LEVEL_DEFAULT_LTR), 65aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*21*/ new ContextCase("D", ".-=", "", "=-.", Bidi.LEVEL_DEFAULT_LTR), 66aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*22*/ new ContextCase("G", ".-=", "", "=-.", Bidi.LEVEL_DEFAULT_LTR), 67aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*23*/ new ContextCase("xG", ".-=", "", ".-=", Bidi.LEVEL_DEFAULT_LTR), 68aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*24*/ new ContextCase("x|G", ".-=", "", "=-.", Bidi.LEVEL_DEFAULT_LTR), 69aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /*25*/ new ContextCase("x|G", ".-=|-+*", "", "=-.|-+*", Bidi.LEVEL_DEFAULT_LTR), 70aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }; 71aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin private final int CONTEXT_COUNT = contextData.length; 72aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 73f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 74aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void testContext() 75aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin { 76aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String prologue, epilogue, src, dest; 77aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Bidi bidi = new Bidi(); 78aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int tc; 79aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ContextCase cc; 80aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 81aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("\nEntering TestContext\n"); 82aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 83aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.orderParagraphsLTR(true); 84aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 85aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (tc = 0; tc < CONTEXT_COUNT; tc++) { 86aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin cc = contextData[tc]; 87aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin prologue = pseudoToU16(cc.prologue); 88aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin epilogue = pseudoToU16(cc.epilogue); 89aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /* in the call below, prologue and epilogue are swapped to show 90aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin that the next call will override this call */ 91aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.setContext(epilogue, prologue); 92aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.setContext(prologue, epilogue); 93aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin src = pseudoToU16(cc.source); 94aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.setPara(src, cc.paraLevel, null); 95aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin dest = bidi.writeReordered(Bidi.DO_MIRRORING); 96aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin dest = u16ToPseudo(dest); 97aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("\nActual and expected output mismatch on case "+tc+"." + 98aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "\nPrologue: " + cc.prologue + 99aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "\nInput: " + cc.source + 100aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "\nEpilogue: " + cc.epilogue + 101aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "\nParagraph level: " + Byte.toString(bidi.getParaLevel()) + "\n", 102aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin cc.expected, dest); 103aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 104aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 105aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("\nExiting TestContext\n"); 106aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 107aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin} 108