| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.core; |
| |
| import com.ibm.icu4jni.text.RuleBasedNumberFormat; |
| import com.ibm.icu4jni.text.RuleBasedNumberFormat.RBNFType; |
| |
| import junit.framework.TestCase; |
| import android.test.suitebuilder.annotation.SmallTest; |
| |
| /** |
| * Some String tests. |
| */ |
| public class StringTest extends TestCase { |
| private String germanSpelloutRule = "%alt-ones:" + |
| " -x: minus >>;" + |
| " x.x: << komma >>;" + |
| " null; eins; =%%main=;" + |
| "%%main:" + |
| " null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n" + |
| " zehn; elf; zwu00f6lf; >>zehn;" + |
| " 20: [>>und]zwanzig;" + |
| " 30: [>>und]dreiu00dfig;" + |
| " 40: [>>und]vierzig;" + |
| " 50: [>>und]fu00fcnfzig;" + |
| " 60: [>>und]sechzig;" + |
| " 70: [>>und]siebzig;" + |
| " 80: [>>und]achtzig;" + |
| " 90: [>>und]neunzig;" + |
| " 100: hundert[>%alt-ones>];" + |
| " 200: <<hundert[>%alt-ones>];" + |
| " 1000: tausend[>%alt-ones>];" + |
| " 1100: tausendein[>%alt-ones>];" + |
| " 1200: tausend[>%alt-ones>];" + |
| " 2000: <<tausend[>%alt-ones>];"; |
| |
| @SmallTest |
| public void testString() throws Exception { |
| String test = "0123456789"; |
| String test1 = new String("0123456789"); // different object |
| String test2 = new String("0123456780"); // different value |
| String offset = new String("xxx0123456789yyy"); |
| String sub = offset.substring(3, 13); |
| |
| assertEquals(test, test); |
| assertEquals(test, test1); |
| assertFalse(test.equals(test2)); |
| |
| assertEquals(0, test.compareTo(test1)); |
| assertTrue(test1.compareTo(test2) > 0); |
| assertTrue(test2.compareTo(test1) < 0); |
| |
| /* compare string with a nonzero offset, in left/right side */ |
| assertEquals(0, test.compareTo(sub)); |
| assertEquals(0, sub.compareTo(test)); |
| assertEquals(test, sub); |
| assertEquals(sub, test); |
| /* same base, one is a substring */ |
| assertFalse(offset.equals(sub)); |
| assertFalse(sub.equals(offset)); |
| /* wrong class */ |
| assertFalse(test.equals(this)); |
| |
| /* null ptr - throw */ |
| try { |
| test.compareTo(null); |
| fail("didn't get expected npe"); |
| } catch (NullPointerException npe) { |
| // expected |
| } |
| /* null ptr - ok */ |
| assertFalse(test.equals(null)); |
| |
| test = test.substring(1); |
| assertEquals("123456789", test); |
| assertFalse(test.equals(test1)); |
| |
| test = test.substring(1); |
| assertEquals("23456789", test); |
| |
| test = test.substring(1); |
| assertEquals("3456789", test); |
| |
| test = test.substring(1); |
| assertEquals("456789", test); |
| |
| test = test.substring(3, 5); |
| assertEquals("78", test); |
| |
| test = "this/is/a/path"; |
| String[] strings = test.split("/"); |
| assertEquals(4, strings.length); |
| |
| assertEquals("this is a path", test.replaceAll("/", " ")); |
| assertEquals("this is a path", test.replace("/", " ")); |
| |
| assertEquals(0, "abc".compareToIgnoreCase("ABC")); |
| assertTrue("abc".compareToIgnoreCase("DEF") < 0); |
| assertTrue("ABC".compareToIgnoreCase("def") < 0); |
| assertTrue("Now".compareTo("Mow") > 0); |
| assertTrue("Now".compareToIgnoreCase("Mow") > 0); |
| |
| // RuleBasedNumberFormnat tests |
| RuleBasedNumberFormat format = new RuleBasedNumberFormat(); |
| format.open(RBNFType.SPELLOUT); |
| String result = format.format(15); |
| assertEquals("Expected spellout format: 'fifteen' but was " |
| + result, "fifteen", result); |
| format.close(); |
| |
| format.open(RBNFType.DURATION); |
| result = format.format(15); |
| assertEquals("Expected spellout format: '15 sec.' but was " |
| + result, "15 sec.", result); |
| format.close(); |
| |
| format.open(RBNFType.ORDINAL); |
| result = format.format(15); |
| assertEquals("Expected spellout format: '15th' but was " |
| + result, "15th", result); |
| format.close(); |
| format.open(germanSpelloutRule); |
| |
| result = format.format(1323); |
| assertEquals("Expected spellout format: 'tausenddrei" + |
| "hundertdreiundzwanzig' but was " + result, "tausend" + |
| "dreihundertdreiundzwanzig", result); |
| int res = format.parse("tausenddreihundertdreiundzwanzig") |
| .intValue(); |
| assertEquals("Expected spellout format: 'tausend" + |
| "dreihundertdreiundzwanzig' but was " + res , 1323, res); |
| format.close(); |
| } |
| } |
| |