1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 package org.codehaus.groovy.antlr;
48
49 import groovy.util.GroovyTestCase;
50
51 import java.io.Reader;
52 import java.io.StringReader;
53
54 /***
55 *
56 * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
57 * @version $Revision: 1.1 $
58 */
59 public class SourceBufferTest extends GroovyTestCase {
60
61 public void testEmptyBuffer() throws Exception {
62 SourceBuffer buffer = getSourceBuffer("");
63 assertNull(buffer.getSnippet(new LineColumn(1,1),new LineColumn(1,1)));
64 }
65
66 public void testSimpleUsage() throws Exception {
67 SourceBuffer buffer = getSourceBuffer("println 'hello world'");
68 assertEquals("hello",buffer.getSnippet(new LineColumn(1,10),new LineColumn(1,15)));
69 }
70
71 public void testUnixLineUsage() throws Exception {
72 String endOfLine = "\n";
73 StringBuffer src = new StringBuffer();
74 src.append("println 'hello world'").append(endOfLine);
75 src.append("println 'oh not, not that again'").append(endOfLine);
76 SourceBuffer buffer = getSourceBuffer(src.toString());
77 assertEquals("hello",buffer.getSnippet(new LineColumn(1,10),new LineColumn(1,15)));
78 assertEquals("world'" + endOfLine + "print",buffer.getSnippet(new LineColumn(1,16),new LineColumn(2,6)));
79 assertEquals(endOfLine,buffer.getSnippet(new LineColumn(1,22),new LineColumn(1,23)));
80 assertEquals(endOfLine,buffer.getSnippet(new LineColumn(2,33),new LineColumn(2,34)));
81 }
82
83 public void testDOSLineUsage() throws Exception {
84 String endOfLine = "\r\n";
85 StringBuffer src = new StringBuffer();
86 src.append("println 'hello world'").append(endOfLine);
87 src.append("println 'oh not, not that again'").append(endOfLine);
88 SourceBuffer buffer = getSourceBuffer(src.toString());
89 assertEquals("hello",buffer.getSnippet(new LineColumn(1,10),new LineColumn(1,15)));
90 assertEquals("oh not",buffer.getSnippet(new LineColumn(2,10),new LineColumn(2,16)));
91 assertEquals("world'" + endOfLine + "print",buffer.getSnippet(new LineColumn(1,16),new LineColumn(2,6)));
92 assertEquals(endOfLine,buffer.getSnippet(new LineColumn(1,22),new LineColumn(1,24)));
93 assertEquals(endOfLine,buffer.getSnippet(new LineColumn(2,33),new LineColumn(2,35)));
94 }
95
96 public void testOutOfBounds() throws Exception {
97 String endOfLine = "\n";
98 StringBuffer src = new StringBuffer();
99 src.append("println 'hello world'").append(endOfLine);
100 src.append("println 'oh not, not that again'").append(endOfLine);
101 SourceBuffer buffer = getSourceBuffer(src.toString());
102 assertEquals("println",buffer.getSnippet(new LineColumn(0,0),new LineColumn(1,8)));
103 assertEquals("println",buffer.getSnippet(new LineColumn(-10,-1),new LineColumn(1,8)));
104 assertEquals(endOfLine,buffer.getSnippet(new LineColumn(2,33),new LineColumn(2,40)));
105 assertEquals("",buffer.getSnippet(new LineColumn(3,33),new LineColumn(6,40)));
106 }
107
108 private SourceBuffer getSourceBuffer(String text) throws Exception {
109 SourceBuffer buffer = new SourceBuffer();
110 Reader reader = new UnicodeEscapingReader(new StringReader(text),buffer);
111
112 while (reader.read() != -1) {
113
114
115
116
117 }
118 return buffer;
119 }
120 }