KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > retrotranslator > runtime > java > util > regex > _MatcherTestCase


1 /***
2  * Retrotranslator: a Java bytecode transformer that translates Java classes
3  * compiled with JDK 5.0 into classes that can be run on JVM 1.4.
4  *
5  * Copyright (c) 2005 - 2007 Taras Puchko
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the distribution.
16  * 3. Neither the name of the copyright holders nor the names of its
17  * contributors may be used to endorse or promote products derived from
18  * this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30  * THE POSSIBILITY OF SUCH DAMAGE.
31  */

32 package net.sf.retrotranslator.runtime.java.util.regex;
33
34 import java.util.regex.*;
35 import junit.framework.TestCase;
36
37 /**
38  * @author Taras Puchko
39  */

40 public class _MatcherTestCase extends TestCase {
41
42     public void testQuoteReplacement() throws Exception JavaDoc {
43         assertEquals("a\\$b", Matcher.quoteReplacement("a$b"));
44         assertEquals("a\\\\b", Matcher.quoteReplacement("a\\b"));
45         assertSame("ab", Matcher.quoteReplacement("ab"));
46     }
47
48     public void testToMatchResult() throws Exception JavaDoc {
49         Matcher matcher = Pattern.compile("a(b.?)c").matcher("XabcYab1cZ");
50         assertTrue(matcher.find());
51         checkFirst(matcher);
52         MatchResult first = matcher.toMatchResult();
53         assertTrue(matcher.find());
54         checkSecond(matcher);
55         MatchResult second = matcher.toMatchResult();
56         assertFalse(matcher.find());
57         MatchResult illegal = matcher.toMatchResult();
58         checkIllegal(illegal);
59         checkFirst(first);
60         checkSecond(second);
61     }
62
63     private void checkFirst(MatchResult first) {
64         assertEquals(1, first.groupCount());
65
66         assertEquals(1, first.start());
67         assertEquals(1, first.start(0));
68         assertEquals(2, first.start(1));
69         try {
70             first.start(2);
71             fail();
72         } catch (IndexOutOfBoundsException JavaDoc e) {
73             //ok
74
}
75         assertEquals(4, first.end());
76         assertEquals(4, first.end(0));
77         assertEquals(3, first.end(1));
78         try {
79             first.end(2);
80             fail();
81         } catch (IndexOutOfBoundsException JavaDoc e) {
82             //ok
83
}
84         assertEquals("abc", first.group());
85         assertEquals("abc", first.group(0));
86         assertEquals("b", first.group(1));
87         try {
88             first.group(2);
89             fail();
90         } catch (IndexOutOfBoundsException JavaDoc e) {
91             //ok
92
}
93     }
94
95     private void checkSecond(MatchResult first) {
96         assertEquals(1, first.groupCount());
97
98         assertEquals(5, first.start());
99         assertEquals(5, first.start(0));
100         assertEquals(6, first.start(1));
101         try {
102             first.start(2);
103             fail();
104         } catch (IndexOutOfBoundsException JavaDoc e) {
105             //ok
106
}
107         assertEquals(9, first.end());
108         assertEquals(9, first.end(0));
109         assertEquals(8, first.end(1));
110         try {
111             first.end(2);
112             fail();
113         } catch (IndexOutOfBoundsException JavaDoc e) {
114             //ok
115
}
116         assertEquals("ab1c", first.group());
117         assertEquals("ab1c", first.group(0));
118         assertEquals("b1", first.group(1));
119         try {
120             first.group(2);
121             fail();
122         } catch (IndexOutOfBoundsException JavaDoc e) {
123             //ok
124
}
125     }
126
127     private void checkIllegal(MatchResult illegal) {
128         assertEquals(1, illegal.groupCount());
129         for (int i = 0; i < 10; i++) {
130             try {
131                 illegal.start(i);
132                 fail();
133             } catch (IllegalStateException JavaDoc e) {
134                 //ok
135
}
136             try {
137                 illegal.end(i);
138                 fail();
139             } catch (IllegalStateException JavaDoc e) {
140                 //ok
141
}
142             try {
143                 illegal.group(i);
144                 fail();
145             } catch (IllegalStateException JavaDoc e) {
146                 //ok
147
}
148         }
149     }
150
151 }
Popular Tags