1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18package org.apache.harmony.text.tests.java.text;
19
20import java.text.Normalizer;
21import java.text.Normalizer.Form;
22
23import junit.framework.TestCase;
24
25public class NormalizerTest extends TestCase {
26    /**
27     * @tests java.text.Normalizer.Form#values()
28     */
29    public void test_form_values() throws Exception {
30        Form[] forms = Form.values();
31        assertEquals(4, forms.length);
32        assertEquals(Form.NFD, forms[0]);
33        assertEquals(Form.NFC, forms[1]);
34        assertEquals(Form.NFKD, forms[2]);
35        assertEquals(Form.NFKC, forms[3]);
36    }
37
38    /**
39     * @tests java.text.Normalizer.Form#valueOf(String)
40     */
41    public void test_form_valueOfLjava_lang_String() {
42        try {
43            Form.valueOf(null);
44            fail("Should throw NullPointerException");
45        } catch (NullPointerException e) {
46            // expected
47        }
48
49        assertEquals(Form.NFC, Form.valueOf("NFC"));
50        assertEquals(Form.NFD, Form.valueOf("NFD"));
51        assertEquals(Form.NFKC, Form.valueOf("NFKC"));
52        assertEquals(Form.NFKD, Form.valueOf("NFKD"));
53
54        try {
55            Form.valueOf("not exist");
56            fail("Should throw IllegalArgumentException");
57        } catch (IllegalArgumentException e) {
58            // expected
59        }
60
61        try {
62            Form.valueOf("nfc");
63            fail("Should throw IllegalArgumentException");
64        } catch (IllegalArgumentException e) {
65            // expected
66        }
67
68        try {
69            Form.valueOf("NFC ");
70            fail("Should throw IllegalArgumentException");
71        } catch (IllegalArgumentException e) {
72            // expected
73        }
74    }
75
76    /**
77     * @tests java.text.Normalizer#isNormalized(CharSequence, Form)
78     */
79    public void test_isNormalized() throws Exception {
80        String src = "\u00c1";
81        assertTrue(Normalizer.isNormalized(src, Form.NFC));
82        assertFalse(Normalizer.isNormalized(src, Form.NFD));
83        assertTrue(Normalizer.isNormalized(src, Form.NFKC));
84        assertFalse(Normalizer.isNormalized(src, Form.NFKD));
85
86        src = "\u0041\u0301";
87        assertFalse(Normalizer.isNormalized(src, Form.NFC));
88        assertTrue(Normalizer.isNormalized(src, Form.NFD));
89        assertFalse(Normalizer.isNormalized(src, Form.NFKC));
90        assertTrue(Normalizer.isNormalized(src, Form.NFKD));
91
92        src = "\ufb03";
93        assertTrue(Normalizer.isNormalized(src, Form.NFC));
94        assertTrue(Normalizer.isNormalized(src, Form.NFD));
95        assertFalse(Normalizer.isNormalized(src, Form.NFKC));
96        assertFalse(Normalizer.isNormalized(src, Form.NFKD));
97
98        src = "\u0066\u0066\u0069";
99        assertTrue(Normalizer.isNormalized(src, Form.NFC));
100        assertTrue(Normalizer.isNormalized(src, Form.NFD));
101        assertTrue(Normalizer.isNormalized(src, Form.NFKC));
102        assertTrue(Normalizer.isNormalized(src, Form.NFKD));
103
104        src = "";
105        assertTrue(Normalizer.isNormalized(src, Form.NFC));
106        assertTrue(Normalizer.isNormalized(src, Form.NFD));
107        assertTrue(Normalizer.isNormalized(src, Form.NFKC));
108        assertTrue(Normalizer.isNormalized(src, Form.NFKD));
109    }
110
111    /**
112     * @tests java.text.Normalizer#isNormalized(CharSequence, Form)
113     */
114    public void test_isNormalized_exception() throws Exception {
115        try {
116            Normalizer.isNormalized(null, Form.NFC);
117            fail("Should throw NullPointerException");
118        } catch (NullPointerException e) {
119            // expected
120        }
121
122        try {
123            Normalizer.isNormalized("chars", null);
124            fail("Should throw NullPointerException");
125        } catch (NullPointerException e) {
126            // expected
127        }
128    }
129
130    /**
131     * @tests java.text.Normalizer#normalize(CharSequence, Form)
132     */
133    public void test_normalize() throws Exception {
134        String src = "\u00c1";
135        assertEquals("\u00c1", Normalizer.normalize(src, Form.NFC));
136        assertEquals("\u0041\u0301", Normalizer.normalize(src, Form.NFD));
137        assertEquals("\u00c1", Normalizer.normalize(src, Form.NFKC));
138        assertEquals("\u0041\u0301", Normalizer.normalize(src, Form.NFKD));
139
140        src = "\u0041\u0301";
141        assertEquals("\u00c1", Normalizer.normalize(src, Form.NFC));
142        assertEquals("\u0041\u0301", Normalizer.normalize(src, Form.NFD));
143        assertEquals("\u00c1", Normalizer.normalize(src, Form.NFKC));
144        assertEquals("\u0041\u0301", Normalizer.normalize(src, Form.NFKD));
145
146        src = "\ufb03";
147        assertEquals("\ufb03", Normalizer.normalize(src, Form.NFC));
148        assertEquals("\ufb03", Normalizer.normalize(src, Form.NFD));
149        assertEquals("\u0066\u0066\u0069", Normalizer.normalize(src, Form.NFKC));
150        assertEquals("\u0066\u0066\u0069", Normalizer.normalize(src, Form.NFKD));
151
152        src = "\u0066\u0066\u0069";
153        assertEquals("\u0066\u0066\u0069", Normalizer.normalize(src, Form.NFC));
154        assertEquals("\u0066\u0066\u0069", Normalizer.normalize(src, Form.NFD));
155        assertEquals("\u0066\u0066\u0069", Normalizer.normalize(src, Form.NFKC));
156        assertEquals("\u0066\u0066\u0069", Normalizer.normalize(src, Form.NFKD));
157
158        src = "";
159        assertEquals("", Normalizer.normalize(src, Form.NFC));
160        assertEquals("", Normalizer.normalize(src, Form.NFD));
161        assertEquals("", Normalizer.normalize(src, Form.NFKC));
162        assertEquals("", Normalizer.normalize(src, Form.NFKD));
163    }
164
165    /**
166     * @tests java.text.Normalizer#normalize(CharSequence, Form)
167     */
168    public void test_normalize_exception() throws Exception {
169        try {
170            Normalizer.normalize(null, Form.NFC);
171            fail("Should throw NullPointerException");
172        } catch (NullPointerException e) {
173            // expected
174        }
175
176        try {
177            Normalizer.normalize("chars", null);
178            fail("Should throw NullPointerException");
179        } catch (NullPointerException e) {
180            // expected
181        }
182    }
183}
184