1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.base;
18
19 import com.google.common.annotations.GwtCompatible;
20 import com.google.common.annotations.GwtIncompatible;
21
22 import junit.framework.TestCase;
23
24
25
26
27
28
29 @GwtCompatible
30 public class AsciiTest extends TestCase {
31
32
33
34
35
36 private static final String IGNORED =
37 "`10-=~!@#$%^&*()_+[]\\{}|;':\",./<>?'\u00c1\u00e1\n";
38 private static final String LOWER = "abcdefghijklmnopqrstuvwxyz";
39 private static final String UPPER = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
40
41 public void testToLowerCase() {
42 assertEquals(LOWER, Ascii.toLowerCase(UPPER));
43 assertSame(LOWER, Ascii.toLowerCase(LOWER));
44 assertEquals(IGNORED, Ascii.toLowerCase(IGNORED));
45 assertEquals("foobar", Ascii.toLowerCase("fOobaR"));
46 }
47
48 public void testToUpperCase() {
49 assertEquals(UPPER, Ascii.toUpperCase(LOWER));
50 assertSame(UPPER, Ascii.toUpperCase(UPPER));
51 assertEquals(IGNORED, Ascii.toUpperCase(IGNORED));
52 assertEquals("FOOBAR", Ascii.toUpperCase("FoOBAr"));
53 }
54
55 public void testCharsIgnored() {
56 for (char c : IGNORED.toCharArray()) {
57 String str = String.valueOf(c);
58 assertTrue(str, c == Ascii.toLowerCase(c));
59 assertTrue(str, c == Ascii.toUpperCase(c));
60 assertFalse(str, Ascii.isLowerCase(c));
61 assertFalse(str, Ascii.isUpperCase(c));
62 }
63 }
64
65 public void testCharsLower() {
66 for (char c : LOWER.toCharArray()) {
67 String str = String.valueOf(c);
68 assertTrue(str, c == Ascii.toLowerCase(c));
69 assertFalse(str, c == Ascii.toUpperCase(c));
70 assertTrue(str, Ascii.isLowerCase(c));
71 assertFalse(str, Ascii.isUpperCase(c));
72 }
73 }
74
75 public void testCharsUpper() {
76 for (char c : UPPER.toCharArray()) {
77 String str = String.valueOf(c);
78 assertFalse(str, c == Ascii.toLowerCase(c));
79 assertTrue(str, c == Ascii.toUpperCase(c));
80 assertFalse(str, Ascii.isLowerCase(c));
81 assertTrue(str, Ascii.isUpperCase(c));
82 }
83 }
84
85 public void testTruncate() {
86 assertEquals("foobar", Ascii.truncate("foobar", 10, "..."));
87 assertEquals("fo...", Ascii.truncate("foobar", 5, "..."));
88 assertEquals("foobar", Ascii.truncate("foobar", 6, "..."));
89 assertEquals("...", Ascii.truncate("foobar", 3, "..."));
90 assertEquals("foobar", Ascii.truncate("foobar", 10, "…"));
91 assertEquals("foo…", Ascii.truncate("foobar", 4, "…"));
92 assertEquals("fo--", Ascii.truncate("foobar", 4, "--"));
93 assertEquals("foobar", Ascii.truncate("foobar", 6, "…"));
94 assertEquals("foob…", Ascii.truncate("foobar", 5, "…"));
95 assertEquals("foo", Ascii.truncate("foobar", 3, ""));
96 assertEquals("", Ascii.truncate("", 5, ""));
97 assertEquals("", Ascii.truncate("", 5, "..."));
98 assertEquals("", Ascii.truncate("", 0, ""));
99 }
100
101 public void testTruncateIllegalArguments() {
102 String truncated = null;
103 try {
104 truncated = Ascii.truncate("foobar", 2, "...");
105 fail();
106 } catch (IllegalArgumentException expected) {}
107
108 try {
109 truncated = Ascii.truncate("foobar", 8, "1234567890");
110 fail();
111 } catch (IllegalArgumentException expected) {}
112
113 try {
114 truncated = Ascii.truncate("foobar", -1, "...");
115 fail();
116 } catch (IllegalArgumentException expected) {}
117
118 try {
119 truncated = Ascii.truncate("foobar", -1, "");
120 fail();
121 } catch (IllegalArgumentException expected) {}
122 }
123
124 public void testEqualsIgnoreCase() {
125 assertTrue(Ascii.equalsIgnoreCase("", ""));
126 assertFalse(Ascii.equalsIgnoreCase("", "x"));
127 assertFalse(Ascii.equalsIgnoreCase("x", ""));
128 assertTrue(Ascii.equalsIgnoreCase(LOWER, UPPER));
129 assertTrue(Ascii.equalsIgnoreCase(UPPER, LOWER));
130
131 assertTrue(Ascii.equalsIgnoreCase(new String(IGNORED), new String(IGNORED)));
132
133 assertFalse(Ascii.equalsIgnoreCase("\u00c1", "\u00e1"));
134
135 assertFalse(Ascii.equalsIgnoreCase("@", "`"));
136 assertFalse(Ascii.equalsIgnoreCase("[", "{"));
137 }
138
139 @GwtIncompatible("String.toUpperCase() has browser semantics")
140 public void testEqualsIgnoreCaseUnicodeEquivalence() {
141
142
143
144
145
146
147 assertEquals("pa\u00dfword".toUpperCase(), "PASSWORD");
148 assertFalse("pa\u00dfword".equalsIgnoreCase("PASSWORD"));
149 assertFalse(Ascii.equalsIgnoreCase("pa\u00dfword", "PASSWORD"));
150 }
151 }