aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/AdtUtilsTest.java
blob: c1e94ac69f7a62a677a68400176d427659b6f5f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
 *
 * 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.ide.eclipse.adt;

import junit.framework.TestCase;

import java.util.Locale;

@SuppressWarnings("javadoc")
public class AdtUtilsTest extends TestCase {
    public void testExtractClassName() {
        assertEquals("Foo", AdtUtils.extractClassName("foo"));
        assertEquals("Foobar", AdtUtils.extractClassName("foo bar"));
        assertEquals("JavasTypeSystem", AdtUtils.extractClassName("Java's Type System"));
        assertEquals("Foo", AdtUtils.extractClassName("1foo "));
    }

    public void testStripAllExtensions() {
        assertEquals("", AdtUtils.stripAllExtensions(""));
        assertEquals("foobar", AdtUtils.stripAllExtensions("foobar"));
        assertEquals("foobar", AdtUtils.stripAllExtensions("foobar.png"));
        assertEquals("foobar", AdtUtils.stripAllExtensions("foobar.9.png"));
        assertEquals(".profile", AdtUtils.stripAllExtensions(".profile"));
    }

    public void testStripLastExtension() {
        assertEquals("", AdtUtils.stripLastExtension(""));
        assertEquals("foobar", AdtUtils.stripLastExtension("foobar"));
        assertEquals("foobar", AdtUtils.stripLastExtension("foobar.png"));
        assertEquals("foobar.9", AdtUtils.stripLastExtension("foobar.9.png"));
        assertEquals(".profile", AdtUtils.stripLastExtension(".profile"));
    }

    public void testCapitalize() {
        assertEquals("UPPER", AdtUtils.capitalize("UPPER"));
        assertEquals("Lower", AdtUtils.capitalize("lower"));
        assertEquals("Capital", AdtUtils.capitalize("Capital"));
        assertEquals("CamelCase", AdtUtils.capitalize("camelCase"));
        assertEquals("", AdtUtils.capitalize(""));
        assertSame("Foo", AdtUtils.capitalize("Foo"));
        assertNull(null, AdtUtils.capitalize(null));
    }

    public void testCamelCaseToUnderlines() {
        assertEquals("", AdtUtils.camelCaseToUnderlines(""));
        assertEquals("foo", AdtUtils.camelCaseToUnderlines("foo"));
        assertEquals("foo", AdtUtils.camelCaseToUnderlines("Foo"));
        assertEquals("foo_bar", AdtUtils.camelCaseToUnderlines("FooBar"));
        assertEquals("test_xml", AdtUtils.camelCaseToUnderlines("testXML"));
        assertEquals("test_foo", AdtUtils.camelCaseToUnderlines("testFoo"));
    }

    public void testUnderlinesToCamelCase() {
        assertEquals("", AdtUtils.underlinesToCamelCase(""));
        assertEquals("", AdtUtils.underlinesToCamelCase("_"));
        assertEquals("Foo", AdtUtils.underlinesToCamelCase("foo"));
        assertEquals("FooBar", AdtUtils.underlinesToCamelCase("foo_bar"));
        assertEquals("FooBar", AdtUtils.underlinesToCamelCase("foo__bar"));
        assertEquals("Foo", AdtUtils.underlinesToCamelCase("foo_"));
    }

    public void testStripSuffix() {
        assertEquals("Foo", AdtUtils.stripSuffix("Foo", ""));
        assertEquals("Fo", AdtUtils.stripSuffix("Foo", "o"));
        assertEquals("F", AdtUtils.stripSuffix("Fo", "o"));
        assertEquals("", AdtUtils.stripSuffix("Foo", "Foo"));
        assertEquals("LinearLayout_Layout",
                AdtUtils.stripSuffix("LinearLayout_LayoutParams", "Params"));
        assertEquals("Foo", AdtUtils.stripSuffix("Foo", "Bar"));
    }

    public void testFormatFloatValue() throws Exception {
        assertEquals("1", AdtUtils.formatFloatAttribute(1.0f));
        assertEquals("2", AdtUtils.formatFloatAttribute(2.0f));
        assertEquals("1.50", AdtUtils.formatFloatAttribute(1.5f));
        assertEquals("1.50", AdtUtils.formatFloatAttribute(1.50f));
        assertEquals("1.51", AdtUtils.formatFloatAttribute(1.51f));
        assertEquals("1.51", AdtUtils.formatFloatAttribute(1.514542f));
        assertEquals("1.52", AdtUtils.formatFloatAttribute(1.516542f));
        assertEquals("-1.51", AdtUtils.formatFloatAttribute(-1.51f));
        assertEquals("-1", AdtUtils.formatFloatAttribute(-1f));
    }

    public void testFormatFloatValueLocale() throws Exception {
        // Ensure that the layout float values aren't affected by
        // locale settings, like using commas instead of of periods
        Locale originalDefaultLocale = Locale.getDefault();

        try {
            Locale.setDefault(Locale.FRENCH);

            // Ensure that this is a locale which uses a comma instead of a period:
            assertEquals("5,24", String.format("%.2f", 5.236f));

            // Ensure that the formatFloatAttribute is immune
            assertEquals("1.50", AdtUtils.formatFloatAttribute(1.5f));
        } finally {
            Locale.setDefault(originalDefaultLocale);
        }
    }

    public void testEscapeUnicodeChars() throws Exception {
        assertEquals("", AdtUtils.replaceUnicodeEscapes(""));
        assertEquals("foo bar", AdtUtils.replaceUnicodeEscapes("foo bar"));
        assertEquals("\u25C0", AdtUtils.replaceUnicodeEscapes("\\u25C0"));
        assertEquals("!\u25C0\u25C1!", AdtUtils.replaceUnicodeEscapes("!\\u25C0\\u25C1!"));
        assertEquals("\u1234\\", AdtUtils.replaceUnicodeEscapes("\\u1234\\"));

        assertEquals("\\U25C0", AdtUtils.replaceUnicodeEscapes("\\U25C0")); // no unicode expand
        assertEquals("\\u25C", AdtUtils.replaceUnicodeEscapes("\\u25C")); // no unicode expand
        assertEquals("\\\\u25C0", AdtUtils.replaceUnicodeEscapes("\\\\u25C0")); // escaped
        assertEquals("\\u123\\", AdtUtils.replaceUnicodeEscapes("\\u123\\")); // broken
    }
}