View Javadoc
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    *      https://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  package org.apache.commons.lang3;
18  
19  import static org.junit.jupiter.api.Assertions.assertFalse;
20  import static org.junit.jupiter.api.Assertions.assertTrue;
21  
22  import org.junit.jupiter.api.Test;
23  
24  /**
25   * Tests {@link StringUtils} - IsX methods
26   */
27  class StringUtilsIsTest extends AbstractLangTest {
28  
29      @Test
30      void testIsAlpha() {
31          assertFalse(StringUtils.isAlpha(null));
32          assertFalse(StringUtils.isAlpha(""));
33          assertFalse(StringUtils.isAlpha(" "));
34          assertTrue(StringUtils.isAlpha("a"));
35          assertTrue(StringUtils.isAlpha("A"));
36          assertTrue(StringUtils.isAlpha("kgKgKgKgkgkGkjkjlJlOKLgHdGdHgl"));
37          assertFalse(StringUtils.isAlpha("ham kso"));
38          assertFalse(StringUtils.isAlpha("1"));
39          assertFalse(StringUtils.isAlpha("hkHKHik6iUGHKJgU7tUJgKJGI87GIkug"));
40          assertFalse(StringUtils.isAlpha("_"));
41          assertFalse(StringUtils.isAlpha("hkHKHik*khbkuh"));
42      }
43  
44      @Test
45      void testIsAlphanumeric() {
46          assertFalse(StringUtils.isAlphanumeric(null));
47          assertFalse(StringUtils.isAlphanumeric(""));
48          assertFalse(StringUtils.isAlphanumeric(" "));
49          assertTrue(StringUtils.isAlphanumeric("a"));
50          assertTrue(StringUtils.isAlphanumeric("A"));
51          assertTrue(StringUtils.isAlphanumeric("kgKgKgKgkgkGkjkjlJlOKLgHdGdHgl"));
52          assertFalse(StringUtils.isAlphanumeric("ham kso"));
53          assertTrue(StringUtils.isAlphanumeric("1"));
54          assertTrue(StringUtils.isAlphanumeric("hkHKHik6iUGHKJgU7tUJgKJGI87GIkug"));
55          assertFalse(StringUtils.isAlphanumeric("_"));
56          assertFalse(StringUtils.isAlphanumeric("hkHKHik*khbkuh"));
57      }
58  
59      @Test
60      void testIsAlphanumericSpace() {
61          assertFalse(StringUtils.isAlphanumericSpace(null));
62          assertTrue(StringUtils.isAlphanumericSpace(""));
63          assertTrue(StringUtils.isAlphanumericSpace(" "));
64          assertTrue(StringUtils.isAlphanumericSpace("a"));
65          assertTrue(StringUtils.isAlphanumericSpace("A"));
66          assertTrue(StringUtils.isAlphanumericSpace("kgKgKgKgkgkGkjkjlJlOKLgHdGdHgl"));
67          assertTrue(StringUtils.isAlphanumericSpace("ham kso"));
68          assertTrue(StringUtils.isAlphanumericSpace("1"));
69          assertTrue(StringUtils.isAlphanumericSpace("hkHKHik6iUGHKJgU7tUJgKJGI87GIkug"));
70          assertFalse(StringUtils.isAlphanumericSpace("_"));
71          assertFalse(StringUtils.isAlphanumericSpace("hkHKHik*khbkuh"));
72      }
73  
74      @Test
75      void testIsAlphanumericSpaceSupplementary() {
76          // a supplementary letter and digit separated by a space
77          assertTrue(StringUtils.isAlphanumericSpace(new String(Character.toChars(0x10400)) + " " + new String(Character.toChars(0x1D7CE))));
78      }
79  
80      @Test
81      void testIsAlphanumericSupplementary() {
82          // both a supplementary letter and a supplementary digit are alphanumeric
83          assertTrue(StringUtils.isAlphanumeric(new String(Character.toChars(0x10400))));
84          assertTrue(StringUtils.isAlphanumeric(new String(Character.toChars(0x1D7CE))));
85      }
86  
87      @Test
88      void testIsAlphaspace() {
89          assertFalse(StringUtils.isAlphaSpace(null));
90          assertTrue(StringUtils.isAlphaSpace(""));
91          assertTrue(StringUtils.isAlphaSpace(" "));
92          assertTrue(StringUtils.isAlphaSpace("a"));
93          assertTrue(StringUtils.isAlphaSpace("A"));
94          assertTrue(StringUtils.isAlphaSpace("kgKgKgKgkgkGkjkjlJlOKLgHdGdHgl"));
95          assertTrue(StringUtils.isAlphaSpace("ham kso"));
96          assertFalse(StringUtils.isAlphaSpace("1"));
97          assertFalse(StringUtils.isAlphaSpace("hkHKHik6iUGHKJgU7tUJgKJGI87GIkug"));
98          assertFalse(StringUtils.isAlphaSpace("_"));
99          assertFalse(StringUtils.isAlphaSpace("hkHKHik*khbkuh"));
100     }
101 
102     @Test
103     void testIsAlphaSpaceSupplementary() {
104         // a supplementary letter plus a space stays alpha-space
105         assertTrue(StringUtils.isAlphaSpace(new String(Character.toChars(0x10400)) + " a"));
106         // a supplementary digit is not a letter
107         assertFalse(StringUtils.isAlphaSpace(new String(Character.toChars(0x1D7CE))));
108     }
109 
110     @Test
111     void testIsAlphaSupplementary() {
112         // U+10400 DESERET CAPITAL LETTER LONG I is a supplementary Unicode letter
113         assertTrue(StringUtils.isAlpha(new String(Character.toChars(0x10400))));
114         // U+1D7CE MATHEMATICAL BOLD DIGIT ZERO is a supplementary digit, not a letter
115         assertFalse(StringUtils.isAlpha(new String(Character.toChars(0x1D7CE))));
116     }
117 
118     @Test
119     void testIsAsciiPrintable_String() {
120         assertFalse(StringUtils.isAsciiPrintable(null));
121         assertTrue(StringUtils.isAsciiPrintable(""));
122         assertTrue(StringUtils.isAsciiPrintable(" "));
123         assertTrue(StringUtils.isAsciiPrintable("a"));
124         assertTrue(StringUtils.isAsciiPrintable("A"));
125         assertTrue(StringUtils.isAsciiPrintable("1"));
126         assertTrue(StringUtils.isAsciiPrintable("Ceki"));
127         assertTrue(StringUtils.isAsciiPrintable("!ab2c~"));
128         assertTrue(StringUtils.isAsciiPrintable("1000"));
129         assertTrue(StringUtils.isAsciiPrintable("10 00"));
130         assertFalse(StringUtils.isAsciiPrintable("10\t00"));
131         assertTrue(StringUtils.isAsciiPrintable("10.00"));
132         assertTrue(StringUtils.isAsciiPrintable("10,00"));
133         assertTrue(StringUtils.isAsciiPrintable("!ab-c~"));
134         assertTrue(StringUtils.isAsciiPrintable("hkHK=Hik6i?UGH_KJgU7.tUJgKJ*GI87GI,kug"));
135         assertTrue(StringUtils.isAsciiPrintable("\u0020"));
136         assertTrue(StringUtils.isAsciiPrintable("\u0021"));
137         assertTrue(StringUtils.isAsciiPrintable("\u007e"));
138         assertFalse(StringUtils.isAsciiPrintable("\u007f"));
139         assertTrue(StringUtils.isAsciiPrintable("G?lc?"));
140         assertTrue(StringUtils.isAsciiPrintable("=?iso-8859-1?Q?G=FClc=FC?="));
141         assertFalse(StringUtils.isAsciiPrintable("G\u00fclc\u00fc"));
142     }
143 
144     @Test
145     void testIsNumeric() {
146         assertFalse(StringUtils.isNumeric(null));
147         assertFalse(StringUtils.isNumeric(""));
148         assertFalse(StringUtils.isNumeric(" "));
149         assertFalse(StringUtils.isNumeric("a"));
150         assertFalse(StringUtils.isNumeric("A"));
151         assertFalse(StringUtils.isNumeric("kgKgKgKgkgkGkjkjlJlOKLgHdGdHgl"));
152         assertFalse(StringUtils.isNumeric("ham kso"));
153         assertTrue(StringUtils.isNumeric("1"));
154         assertTrue(StringUtils.isNumeric("1000"));
155         assertTrue(StringUtils.isNumeric("\u0967\u0968\u0969"));
156         assertFalse(StringUtils.isNumeric("\u0967\u0968 \u0969"));
157         assertFalse(StringUtils.isNumeric("2.3"));
158         assertFalse(StringUtils.isNumeric("10 00"));
159         assertFalse(StringUtils.isNumeric("hkHKHik6iUGHKJgU7tUJgKJGI87GIkug"));
160         assertFalse(StringUtils.isNumeric("_"));
161         assertFalse(StringUtils.isNumeric("hkHKHik*khbkuh"));
162         assertFalse(StringUtils.isNumeric("+123"));
163         assertFalse(StringUtils.isNumeric("-123"));
164     }
165 
166     @Test
167     void testIsNumericSpace() {
168         assertFalse(StringUtils.isNumericSpace(null));
169         assertTrue(StringUtils.isNumericSpace(""));
170         assertTrue(StringUtils.isNumericSpace(" "));
171         assertFalse(StringUtils.isNumericSpace("a"));
172         assertFalse(StringUtils.isNumericSpace("A"));
173         assertFalse(StringUtils.isNumericSpace("kgKgKgKgkgkGkjkjlJlOKLgHdGdHgl"));
174         assertFalse(StringUtils.isNumericSpace("ham kso"));
175         assertTrue(StringUtils.isNumericSpace("1"));
176         assertTrue(StringUtils.isNumericSpace("1000"));
177         assertFalse(StringUtils.isNumericSpace("2.3"));
178         assertTrue(StringUtils.isNumericSpace("10 00"));
179         assertTrue(StringUtils.isNumericSpace("\u0967\u0968\u0969"));
180         assertTrue(StringUtils.isNumericSpace("\u0967\u0968 \u0969"));
181         assertFalse(StringUtils.isNumericSpace("hkHKHik6iUGHKJgU7tUJgKJGI87GIkug"));
182         assertFalse(StringUtils.isNumericSpace("_"));
183         assertFalse(StringUtils.isNumericSpace("hkHKHik*khbkuh"));
184     }
185 
186     @Test
187     void testIsNumericSpaceSupplementary() {
188         // two supplementary digits separated by a space
189         assertTrue(StringUtils.isNumericSpace(new String(Character.toChars(0x1D7CE)) + " " + new String(Character.toChars(0x1D7CE))));
190         // a supplementary letter is not a digit
191         assertFalse(StringUtils.isNumericSpace(new String(Character.toChars(0x10400))));
192     }
193 
194     @Test
195     void testIsNumericSupplementary() {
196         // U+1D7CE MATHEMATICAL BOLD DIGIT ZERO is a supplementary Unicode digit
197         assertTrue(StringUtils.isNumeric(new String(Character.toChars(0x1D7CE))));
198         // U+10400 DESERET CAPITAL LETTER LONG I is a supplementary letter, not a digit
199         assertFalse(StringUtils.isNumeric(new String(Character.toChars(0x10400))));
200     }
201 
202     @Test
203     void testIsWhitespace() {
204         assertFalse(StringUtils.isWhitespace(null));
205         assertTrue(StringUtils.isWhitespace(""));
206         assertTrue(StringUtils.isWhitespace(" "));
207         assertTrue(StringUtils.isWhitespace("\t \n \t"));
208         assertFalse(StringUtils.isWhitespace("\t aa\n \t"));
209         assertTrue(StringUtils.isWhitespace(" "));
210         assertFalse(StringUtils.isWhitespace(" a "));
211         assertFalse(StringUtils.isWhitespace("a  "));
212         assertFalse(StringUtils.isWhitespace("  a"));
213         assertFalse(StringUtils.isWhitespace("aba"));
214         assertFalse(StringUtils.isWhitespace("a"));
215         assertTrue(StringUtils.isWhitespace(StringUtilsTest.WHITESPACE));
216         assertFalse(StringUtils.isWhitespace(StringUtilsTest.NON_WHITESPACE));
217     }
218 
219 }