1 /*
2  * Copyright (c) 2017, 2018, 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.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 /*
25  * @test
26  * @library /test/lib
27  * @bug 8189134
28  * @summary Tests the system properties
29  * @modules jdk.localedata
30  * @build DefaultLocaleTest
31  * @run testng/othervm SystemPropertyTests
32  */
33 
34 import static jdk.test.lib.process.ProcessTools.executeTestJava;
35 import static org.testng.Assert.assertTrue;
36 
37 import java.util.Locale;
38 
39 import org.testng.annotations.DataProvider;
40 import org.testng.annotations.Test;
41 
42 /**
43  * Test Locale.getDefault() reflects the system property. Note that the
44  * result may change depending on the CLDR releases.
45  */
46 @Test
47 public class SystemPropertyTests {
48 
49     private static String LANGPROP = "-Duser.language=en";
50     private static String SCPTPROP = "-Duser.script=";
51     private static String CTRYPROP = "-Duser.country=US";
52 
53     @DataProvider(name="data")
data()54     Object[][] data() {
55         return new Object[][] {
56             // system property, expected default, expected format, expected display
57             {"-Duser.extensions=u-ca-japanese",
58              "en_US_#u-ca-japanese",
59              "en_US_#u-ca-japanese",
60              "en_US_#u-ca-japanese",
61             },
62 
63             {"-Duser.extensions=u-ca-japanese-nu-thai",
64              "en_US_#u-ca-japanese-nu-thai",
65              "en_US_#u-ca-japanese-nu-thai",
66              "en_US_#u-ca-japanese-nu-thai",
67             },
68 
69             {"-Duser.extensions=foo",
70              "en_US",
71              "en_US",
72              "en_US",
73             },
74 
75             {"-Duser.extensions.format=u-ca-japanese",
76              "en_US",
77              "en_US_#u-ca-japanese",
78              "en_US",
79             },
80 
81             {"-Duser.extensions.display=u-ca-japanese",
82              "en_US",
83              "en_US",
84              "en_US_#u-ca-japanese",
85             },
86         };
87     }
88 
89     @Test(dataProvider="data")
runTest(String extprop, String defLoc, String defFmtLoc, String defDspLoc)90     public void runTest(String extprop, String defLoc,
91                         String defFmtLoc, String defDspLoc) throws Exception {
92         int exitValue = executeTestJava(LANGPROP, SCPTPROP, CTRYPROP,
93                                     extprop, "DefaultLocaleTest", defLoc, defFmtLoc, defDspLoc)
94                             .outputTo(System.out)
95                             .errorTo(System.out)
96                             .getExitValue();
97 
98         assertTrue(exitValue == 0);
99     }
100 }
101