1 // 2016 and later: Unicode, Inc. and others. 2 // License & terms of use: http://www.unicode.org/copyright.html#License 3 /* 4 ******************************************************************************* 5 * Copyright (C) 2012, International Business Machines Corporation and * 6 * others. All Rights Reserved. * 7 ******************************************************************************* 8 */ 9 package com.ibm.icu.dev.test.bidi; 10 11 import org.junit.Test; 12 13 import com.ibm.icu.text.Bidi; 14 15 16 /** 17 * Regression test for the Arabic Mathematical Alphabetic Symbols. 18 * 19 * Ported from C by Ramy Said 20 */ 21 22 public class TestReorderArabicMathSymbols extends BidiFmwk { 23 24 private static final String[] logicalOrder = { 25 /* Arabic mathematical Symbols "\u1EE00 - "\u1EE1B */ 26 "\uD83B\uDE00\uD83B\uDE01\uD83B\uDE02\uD83B\uDE03\u0020" + 27 "\uD83B\uDE24\uD83B\uDE05\uD83B\uDE06\u0020" + 28 "\uD83B\uDE07\uD83B\uDE08\uD83B\uDE09\u0020" + 29 "\uD83B\uDE0A\uD83B\uDE0B\uD83B\uDE0C\uD83B\uDE0D\u0020" + 30 "\uD83B\uDE0E\uD83B\uDE0F\uD83B\uDE10\uD83B\uDE11\u0020" + 31 "\uD83B\uDE12\uD83B\uDE13\uD83B\uDE14\uD83B\uDE15\u0020" + 32 "\uD83B\uDE16\uD83B\uDE17\uD83B\uDE18\u0020" + 33 "\uD83B\uDE19\uD83B\uDE1A\uD83B\uDE1B", 34 /* Arabic mathematical Symbols - Looped Symbols\u1EE80 - "\u1EE9B */ 35 "\uD83B\uDE80\uD83B\uDE81\uD83B\uDE82\uD83B\uDE83\u0020" + 36 "\uD83B\uDE84\uD83B\uDE85\uD83B\uDE86\u0020" + 37 "\uD83B\uDE87\uD83B\uDE88\uD83B\uDE89\u0020" + 38 "\uD83B\uDE8B\uD83B\uDE8C\uD83B\uDE8D\u0020" + 39 "\uD83B\uDE8E\uD83B\uDE8F\uD83B\uDE90\uD83B\uDE91\u0020" + 40 "\uD83B\uDE92\uD83B\uDE93\uD83B\uDE94\uD83B\uDE95\u0020" + 41 "\uD83B\uDE96\uD83B\uDE97\uD83B\uDE98\u0020" + 42 "\uD83B\uDE99\uD83B\uDE9A\uD83B\uDE9B", 43 /* Arabic mathematical Symbols - Double-struck Symbols\u1EEA1 - "\u1EEBB */ 44 "\uD83B\uDEA1\uD83B\uDEA2\uD83B\uDEA3\u0020" + 45 "\uD83B\uDEA5\uD83B\uDEA6\u0020" + 46 "\uD83B\uDEA7\uD83B\uDEA8\uD83B\uDEA9\u0020" + 47 "\uD83B\uDEAB\uD83B\uDEAC\uD83B\uDEAD\u0020" + 48 "\uD83B\uDEAE\uD83B\uDEAF\uD83B\uDEB0\uD83B\uDEB1\u0020" + 49 "\uD83B\uDEB2\uD83B\uDEB3\uD83B\uDEB4\uD83B\uDEB5\u0020" + 50 "\uD83B\uDEB6\uD83B\uDEB7\uD83B\uDEB8\u0020" + 51 "\uD83B\uDEB9\uD83B\uDEBA\uD83B\uDEBB", 52 /* Arabic mathematical Symbols - Initial Symbols\u1EE21 - "\u1EE3B */ 53 "\uD83B\uDE21\uD83B\uDE22\u0020" + 54 "\uD83B\uDE27\uD83B\uDE29\u0020" + 55 "\uD83B\uDE2A\uD83B\uDE2B\uD83B\uDE2C\uD83B\uDE2D\u0020" + 56 "\uD83B\uDE2E\uD83B\uDE2F\uD83B\uDE30\uD83B\uDE31\u0020" + 57 "\uD83B\uDE32\uD83B\uDE34\uD83B\uDE35\u0020" + 58 "\uD83B\uDE36\uD83B\uDE37\u0020" + 59 "\uD83B\uDE39\uD83B\uDE3B", 60 /* Arabic mathematical Symbols - Tailed Symbols */ 61 "\uD83B\uDE42\uD83B\uDE47\uD83B\uDE49\uD83B\uDE4B\u0020" + 62 "\uD83B\uDE4D\uD83B\uDE4E\uD83B\uDE4F\u0020" + 63 "\uD83B\uDE51\uD83B\uDE52\uD83B\uDE54\uD83B\uDE57\u0020" + 64 "\uD83B\uDE59\uD83B\uDE5B\uD83B\uDE5D\uD83B\uDE5F" 65 }; 66 67 private static final String[] visualOrder = { 68 /* Arabic mathematical Symbols "\u1EE00 - "\u1EE1B */ 69 "\uD83B\uDE1B\uD83B\uDE1A\uD83B\uDE19\u0020" + 70 "\uD83B\uDE18\uD83B\uDE17\uD83B\uDE16\u0020" + 71 "\uD83B\uDE15\uD83B\uDE14\uD83B\uDE13\uD83B\uDE12\u0020" + 72 "\uD83B\uDE11\uD83B\uDE10\uD83B\uDE0F\uD83B\uDE0E\u0020" + 73 "\uD83B\uDE0D\uD83B\uDE0C\uD83B\uDE0B\uD83B\uDE0A\u0020" + 74 "\uD83B\uDE09\uD83B\uDE08\uD83B\uDE07\u0020" + 75 "\uD83B\uDE06\uD83B\uDE05\uD83B\uDE24\u0020" + 76 "\uD83B\uDE03\uD83B\uDE02\uD83B\uDE01\uD83B\uDE00", 77 /* Arabic mathematical Symbols - Looped Symbols\u1EE80 - "\u1EE9B */ 78 "\uD83B\uDE9B\uD83B\uDE9A\uD83B\uDE99\u0020" + 79 "\uD83B\uDE98\uD83B\uDE97\uD83B\uDE96\u0020" + 80 "\uD83B\uDE95\uD83B\uDE94\uD83B\uDE93\uD83B\uDE92\u0020" + 81 "\uD83B\uDE91\uD83B\uDE90\uD83B\uDE8F\uD83B\uDE8E\u0020" + 82 "\uD83B\uDE8D\uD83B\uDE8C\uD83B\uDE8B\u0020" + 83 "\uD83B\uDE89\uD83B\uDE88\uD83B\uDE87\u0020" + 84 "\uD83B\uDE86\uD83B\uDE85\uD83B\uDE84\u0020" + 85 "\uD83B\uDE83\uD83B\uDE82\uD83B\uDE81\uD83B\uDE80", 86 /* Arabic mathematical Symbols - Double-struck Symbols\u1EEA1 - "\u1EEBB */ 87 "\uD83B\uDEBB\uD83B\uDEBA\uD83B\uDEB9\u0020" + 88 "\uD83B\uDEB8\uD83B\uDEB7\uD83B\uDEB6\u0020" + 89 "\uD83B\uDEB5\uD83B\uDEB4\uD83B\uDEB3\uD83B\uDEB2\u0020" + 90 "\uD83B\uDEB1\uD83B\uDEB0\uD83B\uDEAF\uD83B\uDEAE\u0020" + 91 "\uD83B\uDEAD\uD83B\uDEAC\uD83B\uDEAB\u0020" + 92 "\uD83B\uDEA9\uD83B\uDEA8\uD83B\uDEA7\u0020" + 93 "\uD83B\uDEA6\uD83B\uDEA5\u0020" + 94 "\uD83B\uDEA3\uD83B\uDEA2\uD83B\uDEA1", 95 /* Arabic mathematical Symbols - Initial Symbols\u1EE21 - "\u1EE3B */ 96 "\uD83B\uDE3B\uD83B\uDE39\u0020" + 97 "\uD83B\uDE37\uD83B\uDE36\u0020" + 98 "\uD83B\uDE35\uD83B\uDE34\uD83B\uDE32\u0020" + 99 "\uD83B\uDE31\uD83B\uDE30\uD83B\uDE2F\uD83B\uDE2E\u0020" + 100 "\uD83B\uDE2D\uD83B\uDE2C\uD83B\uDE2B\uD83B\uDE2A\u0020" + 101 "\uD83B\uDE29\uD83B\uDE27\u0020" + 102 "\uD83B\uDE22\uD83B\uDE21", 103 /* Arabic mathematical Symbols - Tailed Symbols */ 104 "\uD83B\uDE5F\uD83B\uDE5D\uD83B\uDE5B\uD83B\uDE59\u0020" + 105 "\uD83B\uDE57\uD83B\uDE54\uD83B\uDE52\uD83B\uDE51\u0020" + 106 "\uD83B\uDE4F\uD83B\uDE4E\uD83B\uDE4D\u0020" + 107 "\uD83B\uDE4B\uD83B\uDE49\uD83B\uDE47\uD83B\uDE42" 108 }; 109 110 @Test 111 public void testReorderArabicMathSymbols() { 112 Bidi bidi = new Bidi(); 113 int testNumber; 114 int nTests = logicalOrder.length; 115 String srcU16, dest = ""; 116 117 logln("\nEntering TestReorderArabicMathSymbols\n"); 118 119 for (testNumber = 0; testNumber < nTests; testNumber++) { 120 logln("Testing L2V #1 for case " + testNumber); 121 srcU16 = logicalOrder[testNumber]; 122 try { 123 bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, null); 124 } catch (Exception e) { 125 errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " + 126 Bidi.LEVEL_DEFAULT_LTR + " failed."); 127 } 128 try { 129 dest = bidi.writeReordered(Bidi.DO_MIRRORING); 130 } catch (Exception e) { 131 errln("Bidi.writeReordered(tests[" + testNumber + "], paraLevel " + 132 Bidi.LEVEL_DEFAULT_LTR + " failed."); 133 } 134 if (!visualOrder[testNumber].equals(dest)) { 135 assertEquals("Failure #1 in Bidi.writeReordered(), test number " + 136 testNumber, visualOrder[testNumber], dest, srcU16, null, 137 "Bidi.DO_MIRRORING", "Bidi.LEVEL_DEFAULT_LTR"); 138 } 139 } 140 141 logln("\nExiting TestReorderArabicMathSymbols\n"); 142 } 143 } 144