MentaRegex

Rev

Rev 2 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 4
Line 1... Line 1...
1
package org.mentaregex;
1
package org.mentaregex;
2
2
-
 
3
import static org.junit.Assert.*;
-
 
4
import static org.mentaregex.Regex.*;
-
 
5
-
 
6
import org.junit.Test;
-
 
7
-
 
8
public class RegexTest {
-
 
9
-
 
10
        @Test
-
 
11
        public void testMatches() {
-
 
12
-
 
13
                final String s = "sergio_oliveira_jr";
-
 
14
-
 
15
                assertTrue(matches(s, "/vei/"));
-
 
16
                assertTrue(matches(s, "/_jr$/"));
-
 
17
                assertTrue(matches(s, "/_jr/"));
-
 
18
                assertTrue(matches(s, "/^sergio/"));
-
 
19
                assertTrue(matches(s, "/sergio/"));
-
 
20
-
 
21
                assertTrue(matches(s, "/^s.+r$/"));
-
 
22
                assertTrue(matches(s, "/s.+r$/"));
-
 
23
                assertTrue(matches(s, "/^s.+r/"));
-
 
24
                assertTrue(matches(s, "/s.+r/"));
-
 
25
-
 
26
                assertTrue(matches(s, "/_\\w+_/"));
-
 
27
-
 
28
                assertFalse(matches(s, "/\\d/"));
-
 
29
                assertFalse(matches(s, "/^oliveira/"));
-
 
30
                assertFalse(matches(s, "/oliveira$/"));
-
 
31
        }
-
 
32
-
 
33
        @Test
-
 
34
        public void testMatchesIgnoreCase() {
-
 
35
-
 
36
                final String s = "sergio_OlIvEIrA_jr";
-
 
37
-
 
38
                assertTrue(matches(s, "/oliveira/i"));
-
 
39
                assertFalse(matches(s, "/oliveira/"));
-
 
40
        }
-
 
41
-
 
42
        private static void check(final String[] matches, final String... s) {
-
 
43
-
 
44
                assertEquals(matches.length, s.length);
-
 
45
-
 
46
                for (int i = 0; i < matches.length; i++) {
-
 
47
                        assertEquals(matches[i], s[i]);
-
 
48
                }
-
 
49
        }
-
 
50
-
 
51
        @Test
-
 
52
        public void testMatch() {
-
 
53
-
 
54
                String[] matches;
-
 
55
-
 
56
                final String s = "aa11bb22cc33";
-
 
57
-
 
58
                matches = match(s, "/aa11(\\w\\w)/");
-
 
59
-
 
60
                check(matches, "bb");
-
 
61
-
 
62
                matches = match(s, "/(\\d\\d)/");
-
 
63
-
 
64
                check(matches, "11");
-
 
65
-
 
66
                matches = match(s, "/(AA)/");
-
 
67
-
 
68
                assertNull(matches);
-
 
69
-
 
70
                matches = match(s, "/(AA)/i");
-
 
71
-
 
72
                check(matches, "aa");
-
 
73
-
 
74
                matches = match(s, "/11([a-z]+\\d+)/");
-
 
75
-
 
76
                check(matches, "bb22");
-
 
77
        }
-
 
78
-
 
79
        @Test
-
 
80
        public void testMatchGlobal() {
-
 
81
-
 
82
                String[] matches;
-
 
83
-
 
84
                final String s = "aa11bb22cc33";
-
 
85
-
 
86
                matches = match(s, "/(\\d\\d)/g");
-
 
87
-
 
88
                check(matches, "11", "22", "33");
-
 
89
-
 
90
                matches = match(s, "/([a-z]{2})/g");
-
 
91
-
 
92
                check(matches, "aa", "bb", "cc");
-
 
93
-
 
94
                matches = match(s, "/[a-z]{2}(\\d{2})/g");
-
 
95
-
 
96
                check(matches, "11", "22", "33");
-
 
97
        }
-
 
98
-
 
99
        @Test
-
 
100
        public void testSubstitution() {
-
 
101
-
 
102
                assertEquals("sergioAApelaAA", sub("sergio33pela44", "s/\\d+/AA/gi"));
-
 
103
-
 
104
                assertEquals("sergiopelaAAA", sub("sergioAAApelaAAA", "s/AAA//"));
-
 
105
-
 
106
                assertEquals("sergiopela", sub("sergioAAApelaAAA", "s/AAA//g"));
-
 
107
-
 
108
                assertEquals("sergioCCCpelaCCC", sub("sergioCCCpelaCCC", "s/c//"));
-
 
109
-
 
110
                assertEquals("sergioCCpelaCCC", sub("sergioCCCpelaCCC", "s/c//i"));
-
 
111
-
 
112
                assertEquals("sergiopela", sub("sergioCCCpelaCCC", "s/c//gi"));
-
 
113
-
 
114
                assertEquals("sergio/Z/Zpela", sub("sergioAApela", "s/AA/\\/Z\\/Z/g"));
-
 
115
-
 
116
                assertEquals("sergio\\Z\\Zpela", sub("sergioAApela", "s/AA/\\\\Z\\\\Z/g"));
-
 
117
        }
-
 
118
}