You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by pa...@apache.org on 2017/06/22 18:53:47 UTC

[text] TEXT-90: Add CharacterPredicates for ASCII letters (uppercase/lowercase) and Arabic numerals (closes #50)

Repository: commons-text
Updated Branches:
  refs/heads/master 25ec8d186 -> 569dbc094


TEXT-90: Add CharacterPredicates for ASCII letters (uppercase/lowercase) and Arabic numerals (closes #50)

Add CharacterPredicates#ARABIC_NUMERALS, #ASCII_LOWERCASE_LETTERS, #ASCII_UPPERCASE_LETTERS, #ASCII_LETTERS and #ASCII_ALPHA_NUMERALS.


Project: http://git-wip-us.apache.org/repos/asf/commons-text/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-text/commit/569dbc09
Tree: http://git-wip-us.apache.org/repos/asf/commons-text/tree/569dbc09
Diff: http://git-wip-us.apache.org/repos/asf/commons-text/diff/569dbc09

Branch: refs/heads/master
Commit: 569dbc09402a6f28334936567a597e3d0db9185c
Parents: 25ec8d1
Author: Pascal Schumacher <pa...@gmx.net>
Authored: Wed Jun 14 22:04:55 2017 +0200
Committer: Pascal Schumacher <pa...@gmx.net>
Committed: Thu Jun 22 20:53:39 2017 +0200

----------------------------------------------------------------------
 src/changes/changes.xml                         |  1 +
 .../commons/text/CharacterPredicates.java       | 61 ++++++++++++++++++
 .../commons/text/CharacterPredicatesTest.java   | 66 ++++++++++++++++++++
 3 files changed, 128 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-text/blob/569dbc09/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f6c5b8f..412d1f4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -46,6 +46,7 @@ The <action> type attribute can be add,update,fix,remove.
   <body>
 
   <release version="1.2" date="tbd" description="tbd">
+     <action issue="TEXT-90" type="add" dev="pschumacher">Add CharacterPredicates for ASCII letters (uppercase/lowercase) and arabic numerals</action>
     <action issue="TEXT-85" type="add" dev="chtompki" due-to="Arun Vinud S S">Added CaseUtils class with camel case conversion support</action>
     <action issue="TEXT-91" type="add" dev="pschumacher">RandomStringGenerator should be able to generate a String with a random length</action>
     <action issue="TEXT-92" type="update" dev="pschumacher">Update commons-lang dependency to version 3.6</action>

http://git-wip-us.apache.org/repos/asf/commons-text/blob/569dbc09/src/main/java/org/apache/commons/text/CharacterPredicates.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/CharacterPredicates.java b/src/main/java/org/apache/commons/text/CharacterPredicates.java
index a4544de..dc504c7 100644
--- a/src/main/java/org/apache/commons/text/CharacterPredicates.java
+++ b/src/main/java/org/apache/commons/text/CharacterPredicates.java
@@ -48,5 +48,66 @@ public enum CharacterPredicates implements CharacterPredicate {
         public boolean test(int codePoint) {
             return Character.isDigit(codePoint);
         }
+    },
+
+    /**
+     * Tests if the code points represents a number between 0 and 9.
+     *
+     * @since 1.2
+     */
+    ARABIC_NUMERALS {
+        @Override
+        public boolean test(int codePoint) {
+            return codePoint >= '0' && codePoint <= '9';
+        }
+    },
+
+    /**
+     * Tests if the code points represents a letter between a and z.
+     *
+     * @since 1.2
+     */
+    ASCII_LOWERCASE_LETTERS {
+        @Override
+        public boolean test(int codePoint) {
+            return codePoint >= 'a' && codePoint <= 'z';
+        }
+    },
+
+    /**
+     * Tests if the code points represents a letter between A and Z.
+     *
+     * @since 1.2
+     */
+    ASCII_UPPERCASE_LETTERS {
+        @Override
+        public boolean test(int codePoint) {
+            return codePoint >= 'A' && codePoint <= 'Z';
+        }
+    },
+
+    /**
+     * Tests if the code points represents a letter between a and Z.
+     *
+     * @since 1.2
+     */
+    ASCII_LETTERS {
+        @Override
+        public boolean test(int codePoint) {
+            return ASCII_LOWERCASE_LETTERS.test(codePoint) || ASCII_UPPERCASE_LETTERS.test(codePoint);
+        }
+    },
+
+    /**
+     * Tests if the code points represents a letter between a and Z or a number between 0 and 9.
+     *
+     * @since 1.2
+     */
+    ASCII_ALPHA_NUMERALS {
+        @Override
+        public boolean test(int codePoint) {
+            return ASCII_LOWERCASE_LETTERS.test(codePoint) || ASCII_UPPERCASE_LETTERS.test(codePoint)
+                    || ARABIC_NUMERALS.test(codePoint);
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-text/blob/569dbc09/src/test/java/org/apache/commons/text/CharacterPredicatesTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/text/CharacterPredicatesTest.java b/src/test/java/org/apache/commons/text/CharacterPredicatesTest.java
index a22b466..1100868 100644
--- a/src/test/java/org/apache/commons/text/CharacterPredicatesTest.java
+++ b/src/test/java/org/apache/commons/text/CharacterPredicatesTest.java
@@ -44,4 +44,70 @@ public class CharacterPredicatesTest {
         assertFalse(CharacterPredicates.DIGITS.test('.'));
         assertFalse(CharacterPredicates.DIGITS.test('L'));
     }
+
+    @Test
+    public void testArabicNumerals() {
+        assertTrue(CharacterPredicates.ARABIC_NUMERALS.test('0'));
+        assertTrue(CharacterPredicates.ARABIC_NUMERALS.test('1'));
+        assertTrue(CharacterPredicates.ARABIC_NUMERALS.test('9'));
+
+        assertFalse(CharacterPredicates.ARABIC_NUMERALS.test('/'));
+        assertFalse(CharacterPredicates.ARABIC_NUMERALS.test(':'));
+        assertFalse(CharacterPredicates.ARABIC_NUMERALS.test('a'));
+    }
+
+    @Test
+    public void testAsciiLowercaseLetters() {
+        assertTrue(CharacterPredicates.ASCII_LOWERCASE_LETTERS.test('a'));
+        assertTrue(CharacterPredicates.ASCII_LOWERCASE_LETTERS.test('z'));
+
+        assertFalse(CharacterPredicates.ASCII_LOWERCASE_LETTERS.test('9'));
+        assertFalse(CharacterPredicates.ASCII_LOWERCASE_LETTERS.test('A'));
+        assertFalse(CharacterPredicates.ASCII_LOWERCASE_LETTERS.test('Z'));
+        assertFalse(CharacterPredicates.ASCII_LOWERCASE_LETTERS.test('`'));
+        assertFalse(CharacterPredicates.ASCII_LOWERCASE_LETTERS.test('{'));
+    }
+
+    @Test
+    public void testAsciiUppercaseLetters() {
+        assertTrue(CharacterPredicates.ASCII_UPPERCASE_LETTERS.test('A'));
+        assertTrue(CharacterPredicates.ASCII_UPPERCASE_LETTERS.test('Z'));
+
+        assertFalse(CharacterPredicates.ASCII_UPPERCASE_LETTERS.test('9'));
+        assertFalse(CharacterPredicates.ASCII_UPPERCASE_LETTERS.test('@'));
+        assertFalse(CharacterPredicates.ASCII_UPPERCASE_LETTERS.test('['));
+        assertFalse(CharacterPredicates.ASCII_UPPERCASE_LETTERS.test('a'));
+        assertFalse(CharacterPredicates.ASCII_UPPERCASE_LETTERS.test('z'));
+    }
+
+    @Test
+    public void testAsciiLetters() {
+        assertTrue(CharacterPredicates.ASCII_LETTERS.test('a'));
+        assertTrue(CharacterPredicates.ASCII_LETTERS.test('z'));
+        assertTrue(CharacterPredicates.ASCII_LETTERS.test('A'));
+        assertTrue(CharacterPredicates.ASCII_LETTERS.test('Z'));
+
+        assertFalse(CharacterPredicates.ASCII_LETTERS.test('9'));
+        assertFalse(CharacterPredicates.ASCII_LETTERS.test('`'));
+        assertFalse(CharacterPredicates.ASCII_LETTERS.test('{'));
+        assertFalse(CharacterPredicates.ASCII_LETTERS.test('@'));
+        assertFalse(CharacterPredicates.ASCII_LETTERS.test('['));
+    }
+
+    @Test
+    public void testAsciiAlphaNumerals() {
+        assertTrue(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('a'));
+        assertTrue(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('z'));
+        assertTrue(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('A'));
+        assertTrue(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('Z'));
+        assertTrue(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('0'));
+        assertTrue(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('9'));
+
+        assertFalse(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('`'));
+        assertFalse(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('{'));
+        assertFalse(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('@'));
+        assertFalse(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('['));
+        assertFalse(CharacterPredicates.ASCII_ALPHA_NUMERALS.test('/'));
+        assertFalse(CharacterPredicates.ASCII_ALPHA_NUMERALS.test(':'));
+    }
 }
\ No newline at end of file