1 /* 2 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package test.java.time.chrono; 27 28 import android.icu.util.VersionInfo; 29 import java.time.*; 30 import java.time.chrono.*; 31 import java.time.format.*; 32 import java.util.Locale; 33 34 import org.testng.annotations.DataProvider; 35 import org.testng.annotations.Test; 36 import static org.testng.Assert.assertEquals; 37 38 /** 39 * Tests Era.getDisplayName() correctly returns the name based on each 40 * chrono implementation. 41 * Note: The exact result may depend on locale data provider's implementation. 42 * 43 * @bug 8171049 44 */ 45 @Test 46 public class TestEraDisplayName { 47 private static final Locale THAI = Locale.forLanguageTag("th-TH"); 48 private static final Locale EGYPT = Locale.forLanguageTag("ar-EG"); 49 50 @DataProvider(name="eraDisplayName") eraDisplayName()51 Object[][] eraDisplayName() { 52 return new Object[][] { 53 // Era, text style, displyay locale, expected name 54 // IsoEra 55 { IsoEra.BCE, TextStyle.FULL, Locale.US, "Before Christ" }, 56 { IsoEra.CE, TextStyle.FULL, Locale.US, "Anno Domini" }, 57 { IsoEra.BCE, TextStyle.FULL, Locale.JAPAN, "\u7d00\u5143\u524d" }, 58 { IsoEra.CE, TextStyle.FULL, Locale.JAPAN, "\u897f\u66a6" }, 59 { IsoEra.BCE, TextStyle.SHORT, Locale.US, "BC" }, 60 { IsoEra.CE, TextStyle.SHORT, Locale.US, "AD" }, 61 { IsoEra.BCE, TextStyle.SHORT, Locale.JAPAN, "\u7d00\u5143\u524d" }, 62 { IsoEra.CE, TextStyle.SHORT, Locale.JAPAN, "\u897f\u66a6" }, 63 { IsoEra.BCE, TextStyle.NARROW, Locale.US, "B" }, 64 { IsoEra.CE, TextStyle.NARROW, Locale.US, "A" }, 65 { IsoEra.BCE, TextStyle.NARROW, Locale.JAPAN, "BC" }, 66 { IsoEra.CE, TextStyle.NARROW, Locale.JAPAN, "AD" }, 67 68 // JapaneseEra 69 { JapaneseEra.MEIJI, TextStyle.FULL, Locale.US, "Meiji" }, 70 // Android-changed: Android uses CLDR data. 71 // { JapaneseEra.TAISHO, TextStyle.FULL, Locale.US, "Taisho" }, 72 // { JapaneseEra.SHOWA, TextStyle.FULL, Locale.US, "Showa" }, 73 { JapaneseEra.TAISHO, TextStyle.FULL, Locale.US, "Taishō" }, 74 { JapaneseEra.SHOWA, TextStyle.FULL, Locale.US, "Shōwa" }, 75 { JapaneseEra.HEISEI, TextStyle.FULL, Locale.US, "Heisei" }, 76 { JapaneseEra.MEIJI, TextStyle.FULL, Locale.JAPAN, "\u660e\u6cbb" }, 77 { JapaneseEra.TAISHO, TextStyle.FULL, Locale.JAPAN, "\u5927\u6b63" }, 78 { JapaneseEra.SHOWA, TextStyle.FULL, Locale.JAPAN, "\u662d\u548c" }, 79 { JapaneseEra.HEISEI, TextStyle.FULL, Locale.JAPAN, "\u5e73\u6210" }, 80 { JapaneseEra.MEIJI, TextStyle.SHORT, Locale.US, "Meiji" }, 81 // Android-changed: Android uses CLDR data. 82 // { JapaneseEra.TAISHO, TextStyle.SHORT, Locale.US, "Taisho" }, 83 // { JapaneseEra.SHOWA, TextStyle.SHORT, Locale.US, "Showa" }, 84 { JapaneseEra.TAISHO, TextStyle.SHORT, Locale.US, "Taishō" }, 85 { JapaneseEra.SHOWA, TextStyle.SHORT, Locale.US, "Shōwa" }, 86 { JapaneseEra.HEISEI, TextStyle.SHORT, Locale.US, "Heisei" }, 87 { JapaneseEra.MEIJI, TextStyle.SHORT, Locale.JAPAN, "\u660e\u6cbb" }, 88 { JapaneseEra.TAISHO, TextStyle.SHORT, Locale.JAPAN, "\u5927\u6b63" }, 89 { JapaneseEra.SHOWA, TextStyle.SHORT, Locale.JAPAN, "\u662d\u548c" }, 90 { JapaneseEra.HEISEI, TextStyle.SHORT, Locale.JAPAN, "\u5e73\u6210" }, 91 { JapaneseEra.MEIJI, TextStyle.NARROW, Locale.US, "M" }, 92 { JapaneseEra.TAISHO, TextStyle.NARROW, Locale.US, "T" }, 93 { JapaneseEra.SHOWA, TextStyle.NARROW, Locale.US, "S" }, 94 { JapaneseEra.HEISEI, TextStyle.NARROW, Locale.US, "H" }, 95 { JapaneseEra.MEIJI, TextStyle.NARROW, Locale.JAPAN, "M" }, 96 { JapaneseEra.TAISHO, TextStyle.NARROW, Locale.JAPAN, "T" }, 97 { JapaneseEra.SHOWA, TextStyle.NARROW, Locale.JAPAN, "S" }, 98 { JapaneseEra.HEISEI, TextStyle.NARROW, Locale.JAPAN, "H" }, 99 100 // ThaiBuddhistEra 101 // Android-changed: Android uses CLDR data. 102 // { ThaiBuddhistEra.BEFORE_BE, TextStyle.FULL, Locale.US, "BC" }, 103 // { ThaiBuddhistEra.BE, TextStyle.FULL, Locale.US, "BE" }, 104 // { ThaiBuddhistEra.BEFORE_BE, TextStyle.FULL, THAI, "BC" }, 105 // { ThaiBuddhistEra.BE, TextStyle.FULL, THAI, 106 // "\u0e1e\u0e38\u0e17\u0e18\u0e28\u0e31\u0e01\u0e23\u0e32\u0e0a" }, 107 // { ThaiBuddhistEra.BEFORE_BE, TextStyle.SHORT, Locale.US, "BC" }, 108 // { ThaiBuddhistEra.BE, TextStyle.SHORT, Locale.US, "BE" }, 109 // { ThaiBuddhistEra.BEFORE_BE, TextStyle.SHORT, THAI, 110 // "\u0e1b\u0e35\u0e01\u0e48\u0e2d\u0e19\u0e04\u0e23\u0e34\u0e2a" + 111 // "\u0e15\u0e4c\u0e01\u0e32\u0e25\u0e17\u0e35\u0e48" }, 112 // { ThaiBuddhistEra.BE, TextStyle.SHORT, THAI, "\u0e1e.\u0e28." }, 113 // { ThaiBuddhistEra.BEFORE_BE, TextStyle.NARROW, Locale.US, "BC" }, 114 // { ThaiBuddhistEra.BE, TextStyle.NARROW, Locale.US, "BE" }, 115 // { ThaiBuddhistEra.BEFORE_BE, TextStyle.NARROW, THAI, "BC" }, 116 // { ThaiBuddhistEra.BE, TextStyle.NARROW, THAI, "\u0e1e.\u0e28." }, 117 { ThaiBuddhistEra.BEFORE_BE, TextStyle.FULL, Locale.US, "0" }, 118 { ThaiBuddhistEra.BE, TextStyle.FULL, Locale.US, "BE" }, 119 { ThaiBuddhistEra.BEFORE_BE, TextStyle.FULL, THAI, "0" }, 120 { ThaiBuddhistEra.BE, TextStyle.FULL, THAI, 121 "\u0e1e\u0e38\u0e17\u0e18\u0e28\u0e31\u0e01\u0e23\u0e32\u0e0a" }, 122 { ThaiBuddhistEra.BEFORE_BE, TextStyle.SHORT, Locale.US, "0" }, 123 { ThaiBuddhistEra.BE, TextStyle.SHORT, Locale.US, "BE" }, 124 { ThaiBuddhistEra.BEFORE_BE, TextStyle.SHORT, THAI, "0" }, 125 { ThaiBuddhistEra.BE, TextStyle.SHORT, THAI, "\u0e1e.\u0e28." }, 126 { ThaiBuddhistEra.BEFORE_BE, TextStyle.NARROW, Locale.US, "0" }, 127 { ThaiBuddhistEra.BE, TextStyle.NARROW, Locale.US, "BE" }, 128 { ThaiBuddhistEra.BEFORE_BE, TextStyle.NARROW, THAI, "0" }, 129 { ThaiBuddhistEra.BE, TextStyle.NARROW, THAI, "\u0e1e.\u0e28." }, 130 131 // MinguoEra 132 // Android-changed: Android uses CLDR data. 133 // { MinguoEra.BEFORE_ROC, TextStyle.FULL, Locale.US, "Before R.O.C." }, 134 // { MinguoEra.ROC, TextStyle.FULL, Locale.US, "Minguo" }, 135 // { MinguoEra.BEFORE_ROC, TextStyle.FULL, Locale.TAIWAN, "\u6c11\u570b\u524d" }, 136 // { MinguoEra.ROC, TextStyle.FULL, Locale.TAIWAN, "\u6c11\u570b" }, 137 // { MinguoEra.BEFORE_ROC, TextStyle.SHORT, Locale.US, "Before R.O.C." }, 138 // { MinguoEra.ROC, TextStyle.SHORT, Locale.US, "Minguo" }, 139 // { MinguoEra.BEFORE_ROC, TextStyle.SHORT, Locale.TAIWAN, "\u6c11\u570b\u524d" }, 140 // { MinguoEra.ROC, TextStyle.SHORT, Locale.TAIWAN, "\u6c11\u570b" }, 141 // { MinguoEra.BEFORE_ROC, TextStyle.NARROW, Locale.US, "Before R.O.C." }, 142 // { MinguoEra.ROC, TextStyle.NARROW, Locale.US, "Minguo" }, 143 // { MinguoEra.BEFORE_ROC, TextStyle.NARROW, Locale.TAIWAN, "\u6c11\u570b\u524d" }, 144 // { MinguoEra.ROC, TextStyle.NARROW, Locale.TAIWAN, "\u6c11\u570b" }, 145 { MinguoEra.BEFORE_ROC, TextStyle.FULL, Locale.US, "B.R.O.C." }, 146 { MinguoEra.ROC, TextStyle.FULL, Locale.US, "Minguo" }, 147 { MinguoEra.BEFORE_ROC, TextStyle.FULL, Locale.TAIWAN, "\u6c11\u570b\u524d" }, 148 { MinguoEra.ROC, TextStyle.FULL, Locale.TAIWAN, "\u6c11\u570b" }, 149 { MinguoEra.BEFORE_ROC, TextStyle.SHORT, Locale.US, "B.R.O.C." }, 150 { MinguoEra.ROC, TextStyle.SHORT, Locale.US, "Minguo" }, 151 { MinguoEra.BEFORE_ROC, TextStyle.SHORT, Locale.TAIWAN, "\u6c11\u570b\u524d" }, 152 { MinguoEra.ROC, TextStyle.SHORT, Locale.TAIWAN, "\u6c11\u570b" }, 153 { MinguoEra.BEFORE_ROC, TextStyle.NARROW, Locale.US, "B.R.O.C." }, 154 { MinguoEra.ROC, TextStyle.NARROW, Locale.US, "Minguo" }, 155 { MinguoEra.BEFORE_ROC, TextStyle.NARROW, Locale.TAIWAN, "\u6c11\u570b\u524d" }, 156 { MinguoEra.ROC, TextStyle.NARROW, Locale.TAIWAN, "\u6c11\u570b" }, 157 158 // HijrahEra 159 { HijrahEra.AH, TextStyle.FULL, Locale.US, "AH" }, 160 { HijrahEra.AH, TextStyle.FULL, EGYPT, "\u0647\u0640" }, 161 { HijrahEra.AH, TextStyle.SHORT, Locale.US, "AH" }, 162 { HijrahEra.AH, TextStyle.SHORT, EGYPT, "\u0647\u0640" }, 163 { HijrahEra.AH, TextStyle.NARROW, Locale.US, "AH" }, 164 { HijrahEra.AH, TextStyle.NARROW, EGYPT, "\u0647\u0640" }, 165 }; 166 } 167 168 @Test(dataProvider="eraDisplayName") test_eraDisplayName(Era era, TextStyle style, Locale locale, String expected)169 public void test_eraDisplayName(Era era, TextStyle style, Locale locale, String expected) { 170 // Android-added: The ICU data is different before ICU version 70. http://b/229960530 171 if (VersionInfo.ICU_VERSION.getMajor() < 70) { 172 return; 173 } 174 assertEquals(era.getDisplayName(style, locale), expected); 175 } 176 } 177