1/* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements.  See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License.  You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.apache.harmony.luni.tests.java.net;
18
19import java.net.IDN;
20
21import junit.framework.TestCase;
22
23public class IDNTest extends TestCase {
24
25	/**
26	 * @tests {@link java.net.IDN#toASCII(String)}
27	 *
28	 * @since 1.6
29	 */
30	public void test_ToASCII_LString() {
31		try {
32			IDN.toASCII(null);
33			fail("should throw NullPointerException");
34		} catch (NullPointerException e) {
35			// expected
36		}
37
38		try {
39			IDN.toASCII("www.m\uE400kitorppa.edu");
40			fail("should throw IllegalArgumentException");
41		} catch (IllegalArgumentException e) {
42			// expected
43		}
44
45		try {
46			IDN.toASCII("www.\u672C\uFE73\uFFFF.jp");
47			fail("should throw IllegalArgumentException");
48		} catch (IllegalArgumentException e) {
49			// expected
50		}
51
52		assertEquals("www.xn--gwtq9nb2a.jp", IDN
53				.toASCII("www.\u65E5\u672C\u5E73.jp"));
54		assertEquals(
55				"www.xn--vckk7bxa0eza9ezc9d.com",
56				IDN
57						.toASCII("www.\u30CF\u30F3\u30C9\u30DC\u30FC\u30EB\u30B5\u30E0\u30BA.com"));
58		assertEquals("www.xn--frgbolaget-q5a.nu", IDN
59				.toASCII("www.f\u00E4rgbolaget.nu"));
60		assertEquals("www.xn--bcher-kva.de", IDN.toASCII("www.b\u00FCcher.de"));
61		assertEquals("www.xn--brndendekrlighed-vobh.com", IDN
62				.toASCII("www.br\u00E6ndendek\u00E6rlighed.com"));
63		assertEquals("www.xn--rksmrgs-5wao1o.se", IDN
64				.toASCII("www.r\u00E4ksm\u00F6rg\u00E5s.se"));
65		assertEquals("www.xn--9d0bm53a3xbzui.com", IDN
66				.toASCII("www.\uC608\uBE44\uAD50\uC0AC.com"));
67		assertEquals("xn--lck1c3crb1723bpq4a.com", IDN
68				.toASCII("\u7406\u5BB9\u30CA\u30AB\u30E0\u30E9.com"));
69		assertEquals("xn--l8je6s7a45b.org", IDN
70				.toASCII("\u3042\u30FC\u308B\u3044\u3093.org"));
71		assertEquals("www.xn--frjestadsbk-l8a.net", IDN
72				.toASCII("www.f\u00E4rjestadsbk.net"));
73		assertEquals("www.xn--mkitorppa-v2a.edu", IDN
74				.toASCII("www.m\u00E4kitorppa.edu"));
75	}
76
77	/**
78	 * @tests {@link java.net.IDN#toASCII(String, int)}
79	 *
80	 * @since 1.6
81	 */
82	public void test_ToASCII_LString_I() {
83		try {
84			IDN.toASCII("www.br\u00E6ndendek\u00E6rlighed.com",
85					IDN.USE_STD3_ASCII_RULES);
86		} catch (IllegalArgumentException e) {
87			// expected
88		}
89
90		try {
91			IDN.toASCII("www.r\u00E4ksm\u00F6rg\u00E5s.se",
92					IDN.USE_STD3_ASCII_RULES);
93		} catch (IllegalArgumentException e) {
94			// expected
95		}
96
97		try {
98			IDN.toASCII("www.f\u00E4rjestadsbk.net", IDN.ALLOW_UNASSIGNED
99					| IDN.USE_STD3_ASCII_RULES);
100		} catch (IllegalArgumentException e) {
101			// expected
102		}
103
104		assertEquals("www.xn--gwtq9nb2a.jp", IDN.toASCII(
105				"www.\u65E5\u672C\u5E73.jp", 0));
106		assertEquals(
107				"www.xn--vckk7bxa0eza9ezc9d.com",
108				IDN
109						.toASCII(
110								"www.\u30CF\u30F3\u30C9\u30DC\u30FC\u30EB\u30B5\u30E0\u30BA.com",
111								0));
112		assertEquals("www.xn--frgbolaget-q5a.nu", IDN.toASCII(
113				"www.f\u00E4rgbolaget.nu", IDN.ALLOW_UNASSIGNED));
114		assertEquals("www.xn--bcher-kva.de", IDN.toASCII("www.b\u00FCcher.de",
115				IDN.ALLOW_UNASSIGNED));
116		assertEquals("www.google.com", IDN.toASCII("www.google\u002Ecom",
117				IDN.USE_STD3_ASCII_RULES));
118	}
119
120	/**
121	 * @tests {@link java.net.IDN#toUnicode(String)}
122	 *
123	 * @since 1.6
124	 */
125	public void test_ToUnicode_LString() {
126		try {
127			IDN.toUnicode(null);
128			fail("should throw NullPointerException");
129		} catch (NullPointerException e) {
130			// expected
131		}
132
133		assertEquals("", IDN.toUnicode(""));
134		assertEquals("www.bcher.de", IDN.toUnicode("www.bcher.de"));
135		assertEquals("www.b\u00FCcher.de", IDN.toUnicode("www.b\u00FCcher.de"));
136		assertEquals("www.\u65E5\u672C\u5E73.jp", IDN
137				.toUnicode("www.\u65E5\u672C\u5E73.jp"));
138		assertEquals("www.\u65E5\u672C\u5E73.jp", IDN.toUnicode("www\uFF0Exn--gwtq9nb2a\uFF61jp"));
139		assertEquals("www.\u65E5\u672C\u5E73.jp", IDN.toUnicode("www.xn--gwtq9nb2a.jp"));
140	}
141
142	/**
143	 * @tests {@link java.net.IDN#toUnicode(String, int)}
144	 *
145	 * @since 1.6
146	 */
147	public void test_ToUnicode_LString_I() {
148		assertEquals("", IDN.toUnicode("", IDN.ALLOW_UNASSIGNED));
149		assertEquals("www.f\u00E4rgbolaget.nu", IDN.toUnicode(
150				"www.f\u00E4rgbolaget.nu", IDN.USE_STD3_ASCII_RULES));
151		assertEquals("www.r\u00E4ksm\u00F6rg\u00E5s.nu", IDN.toUnicode(
152				"www.r\u00E4ksm\u00F6rg\u00E5s\u3002nu",
153				IDN.USE_STD3_ASCII_RULES));
154		// RI bug. It cannot parse "www.xn--gwtq9nb2a.jp" when
155		// USE_STD3_ASCII_RULES is set.
156		assertEquals("www.\u65E5\u672C\u5E73.jp", IDN.toUnicode(
157				"www\uFF0Exn--gwtq9nb2a\uFF61jp", IDN.USE_STD3_ASCII_RULES));
158
159	}
160}
161