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) 2002-2010, International Business Machines 7aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin* Corporation and others. All Rights Reserved. 8aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin********************************************************************** 9aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin* Author: Alan Liu 10aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin* Created: November 5 2002 11aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin* Since: ICU 2.4 12aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin********************************************************************** 13aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin*/ 14aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpackage android.icu.dev.test.lang; 15aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 16f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubertimport org.junit.Test; 1705fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport org.junit.runner.RunWith; 1805fa7802d0874812c234a29745586677ee5837eaFredrik Roubertimport org.junit.runners.JUnit4; 19f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert 20aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.dev.test.TestFmwk; 21aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.lang.UCharacter; 22aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.lang.UProperty; 232e13a2bdade5cd0a635f0bd89805931a6fd710daPete Gillinimport android.icu.testsharding.MainTestShard; 24aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 252e13a2bdade5cd0a635f0bd89805931a6fd710daPete Gillin@MainTestShard 2605fa7802d0874812c234a29745586677ee5837eaFredrik Roubert@RunWith(JUnit4.class) 27aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpublic class UPropertyAliasesTest extends TestFmwk { 2805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 29aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public UPropertyAliasesTest() {} 3005fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 31aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /** 32aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Test the property names and property value names API. 33aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 34f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 35aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestPropertyNames() { 36aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int p, v, choice, rev; 37aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (p=0; ; ++p) { 38aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin boolean sawProp = false; 39aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (choice=0; ; ++choice) { 40aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String name = null; 41aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 42aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin name = UCharacter.getPropertyName(p, choice); 43aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!sawProp) log("prop " + p + ":"); 44aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String n = (name != null) ? ("\"" + name + '"') : "null"; 45aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin log(" " + choice + "=" + n); 46aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin sawProp = true; 47aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 48aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (choice > 0) break; 49aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 50aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (name != null) { 51aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /* test reverse mapping */ 52aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin rev = UCharacter.getPropertyEnum(name); 53aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (rev != p) { 54aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Property round-trip failure: " + p + " -> " + 55aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin name + " -> " + rev); 56aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 57aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 58aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 59aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (sawProp) { 60aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /* looks like a valid property; check the values */ 61aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String pname = UCharacter.getPropertyName(p, UProperty.NameChoice.LONG); 62aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int max = 0; 63aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p == UProperty.CANONICAL_COMBINING_CLASS) { 64aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin max = 255; 65aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (p == UProperty.GENERAL_CATEGORY_MASK) { 66aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /* it's far too slow to iterate all the way up to 67aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin the real max, U_GC_P_MASK */ 68aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin max = 0x1000; // U_GC_NL_MASK; 69aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (p == UProperty.BLOCK) { 70aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /* UBlockCodes, unlike other values, start at 1 */ 71aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin max = 1; 72aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 73aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(""); 74aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (v=-1; ; ++v) { 75aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin boolean sawValue = false; 76aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (choice=0; ; ++choice) { 77aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String vname = null; 78aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 79aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin vname = UCharacter.getPropertyValueName(p, v, choice); 80aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String n = (vname != null) ? ("\"" + vname + '"') : "null"; 81aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!sawValue) log(" " + pname + ", value " + v + ":"); 82aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin log(" " + choice + "=" + n); 83aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin sawValue = true; 84aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 85aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin catch (IllegalArgumentException e) { 86aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (choice>0) break; 87aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 88aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (vname != null) { 89aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /* test reverse mapping */ 90aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin rev = UCharacter.getPropertyValueEnum(p, vname); 91aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (rev != v) { 92aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Value round-trip failure (" + pname + 93aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "): " + v + " -> " + 94aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin vname + " -> " + rev); 95aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 96aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 97aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 98aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (sawValue) { 99aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(""); 100aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 101aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!sawValue && v>=max) break; 102aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 103aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 104aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!sawProp) { 105aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (p>=UProperty.STRING_LIMIT) { 106aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin break; 107aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (p>=UProperty.DOUBLE_LIMIT) { 108aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = UProperty.STRING_START - 1; 109aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (p>=UProperty.MASK_LIMIT) { 110aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = UProperty.DOUBLE_START - 1; 111aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (p>=UProperty.INT_LIMIT) { 112aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = UProperty.MASK_START - 1; 113aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (p>=UProperty.BINARY_LIMIT) { 114aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin p = UProperty.INT_START - 1; 115aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 116aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 117aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 11805fa7802d0874812c234a29745586677ee5837eaFredrik Roubert 119aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int i = UCharacter.getIntPropertyMinValue( 120aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UProperty.CANONICAL_COMBINING_CLASS); 121aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 122aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (; i <= UCharacter.getIntPropertyMaxValue( 123aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UProperty.CANONICAL_COMBINING_CLASS); 12405fa7802d0874812c234a29745586677ee5837eaFredrik Roubert i ++) { 125aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UCharacter.getPropertyValueName( 126aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UProperty.CANONICAL_COMBINING_CLASS, 127aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin i, UProperty.NameChoice.LONG); 128aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 12905fa7802d0874812c234a29745586677ee5837eaFredrik Roubert } 130aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin catch (IllegalArgumentException e) { 13105fa7802d0874812c234a29745586677ee5837eaFredrik Roubert errln("0x" + Integer.toHexString(i) 132aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin + " should have a null property value name"); 133aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 134aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 135aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 136f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert @Test 137aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestUnknownPropertyNames() { 138aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 139aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int p = UCharacter.getPropertyEnum("??"); 140aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("UCharacter.getPropertyEnum(??) returned " + p + 141aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin " rather than throwing an exception"); 142aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 143aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // ok 144aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 145aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 146aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int p = UCharacter.getPropertyValueEnum(UProperty.LINE_BREAK, "?!"); 147aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("UCharacter.getPropertyValueEnum(UProperty.LINE_BREAK, ?!) returned " + p + 148aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin " rather than throwing an exception"); 149aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 150aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // ok 151aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 152aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 153aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin} 154