| /* |
| * Copyright (C) 2012 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 com.android.utils; |
| |
| import junit.framework.TestCase; |
| |
| @SuppressWarnings("javadoc") |
| public class SdkUtilsTest extends TestCase { |
| public void testEndsWithIgnoreCase() { |
| assertTrue(SdkUtils.endsWithIgnoreCase("foo", "foo")); |
| assertTrue(SdkUtils.endsWithIgnoreCase("foo", "Foo")); |
| assertTrue(SdkUtils.endsWithIgnoreCase("foo", "foo")); |
| assertTrue(SdkUtils.endsWithIgnoreCase("Barfoo", "foo")); |
| assertTrue(SdkUtils.endsWithIgnoreCase("BarFoo", "foo")); |
| assertTrue(SdkUtils.endsWithIgnoreCase("BarFoo", "foO")); |
| |
| assertFalse(SdkUtils.endsWithIgnoreCase("foob", "foo")); |
| assertFalse(SdkUtils.endsWithIgnoreCase("foo", "fo")); |
| } |
| |
| public void testStartsWithIgnoreCase() { |
| assertTrue(SdkUtils.startsWithIgnoreCase("foo", "foo")); |
| assertTrue(SdkUtils.startsWithIgnoreCase("foo", "Foo")); |
| assertTrue(SdkUtils.startsWithIgnoreCase("foo", "foo")); |
| assertTrue(SdkUtils.startsWithIgnoreCase("barfoo", "bar")); |
| assertTrue(SdkUtils.startsWithIgnoreCase("BarFoo", "bar")); |
| assertTrue(SdkUtils.startsWithIgnoreCase("BarFoo", "bAr")); |
| |
| assertFalse(SdkUtils.startsWithIgnoreCase("bfoo", "foo")); |
| assertFalse(SdkUtils.startsWithIgnoreCase("fo", "foo")); |
| } |
| |
| public void testStartsWith() { |
| assertTrue(SdkUtils.startsWith("foo", 0, "foo")); |
| assertTrue(SdkUtils.startsWith("foo", 0, "Foo")); |
| assertTrue(SdkUtils.startsWith("Foo", 0, "foo")); |
| assertTrue(SdkUtils.startsWith("aFoo", 1, "foo")); |
| |
| assertFalse(SdkUtils.startsWith("aFoo", 0, "foo")); |
| assertFalse(SdkUtils.startsWith("aFoo", 2, "foo")); |
| } |
| |
| public void testEndsWith() { |
| assertTrue(SdkUtils.endsWith("foo", "foo")); |
| assertTrue(SdkUtils.endsWith("foobar", "obar")); |
| assertTrue(SdkUtils.endsWith("foobar", "bar")); |
| assertTrue(SdkUtils.endsWith("foobar", "ar")); |
| assertTrue(SdkUtils.endsWith("foobar", "r")); |
| assertTrue(SdkUtils.endsWith("foobar", "")); |
| |
| assertTrue(SdkUtils.endsWith(new StringBuilder("foobar"), "bar")); |
| assertTrue(SdkUtils.endsWith(new StringBuilder("foobar"), new StringBuffer("obar"))); |
| assertTrue(SdkUtils.endsWith("foobar", new StringBuffer("obar"))); |
| |
| assertFalse(SdkUtils.endsWith("foo", "fo")); |
| assertFalse(SdkUtils.endsWith("foobar", "Bar")); |
| assertFalse(SdkUtils.endsWith("foobar", "longfoobar")); |
| } |
| |
| public void testEndsWith2() { |
| assertTrue(SdkUtils.endsWith("foo", "foo".length(), "foo")); |
| assertTrue(SdkUtils.endsWith("foo", "fo".length(), "fo")); |
| assertTrue(SdkUtils.endsWith("foo", "f".length(), "f")); |
| } |
| |
| public void testStripWhitespace() { |
| assertEquals("foo", SdkUtils.stripWhitespace("foo")); |
| assertEquals("foobar", SdkUtils.stripWhitespace("foo bar")); |
| assertEquals("foobar", SdkUtils.stripWhitespace(" foo bar \n\t")); |
| } |
| |
| public void testWrap() { |
| String s = |
| "Hardcoding text attributes directly in layout files is bad for several reasons:\n" + |
| "\n" + |
| "* When creating configuration variations (for example for landscape or portrait)" + |
| "you have to repeat the actual text (and keep it up to date when making changes)\n" + |
| "\n" + |
| "* The application cannot be translated to other languages by just adding new " + |
| "translations for existing string resources."; |
| String wrapped = SdkUtils.wrap(s, 70, ""); |
| assertEquals( |
| "Hardcoding text attributes directly in layout files is bad for several\n" + |
| "reasons:\n" + |
| "\n" + |
| "* When creating configuration variations (for example for landscape or\n" + |
| "portrait)you have to repeat the actual text (and keep it up to date\n" + |
| "when making changes)\n" + |
| "\n" + |
| "* The application cannot be translated to other languages by just\n" + |
| "adding new translations for existing string resources.\n", |
| wrapped); |
| } |
| |
| public void testWrapPrefix() { |
| String s = |
| "Hardcoding text attributes directly in layout files is bad for several reasons:\n" + |
| "\n" + |
| "* When creating configuration variations (for example for landscape or portrait)" + |
| "you have to repeat the actual text (and keep it up to date when making changes)\n" + |
| "\n" + |
| "* The application cannot be translated to other languages by just adding new " + |
| "translations for existing string resources."; |
| String wrapped = SdkUtils.wrap(s, 70, " "); |
| assertEquals( |
| "Hardcoding text attributes directly in layout files is bad for several\n" + |
| " reasons:\n" + |
| " \n" + |
| " * When creating configuration variations (for example for\n" + |
| " landscape or portrait)you have to repeat the actual text (and keep\n" + |
| " it up to date when making changes)\n" + |
| " \n" + |
| " * The application cannot be translated to other languages by just\n" + |
| " adding new translations for existing string resources.\n", |
| wrapped); |
| } |
| |
| |
| } |