MentaRegex

Rev

Rev 2 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 soliveira 1
package org.mentaregex;
2
 
4 soliveira 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
}