1 package org.codehaus.groovy.syntax.lexer;
2
3 import groovy.util.GroovyTestCase;
4
5 import org.codehaus.groovy.syntax.ReadException;
6
7 public class AbstractCharStreamTest
8 extends GroovyTestCase
9 {
10 public static class MockCharStream
11 extends AbstractCharStream
12 {
13 private int cur;
14 private String text;
15
16 public MockCharStream(String text)
17 {
18 this.text = text;
19 this.cur = 0;
20 }
21
22 public MockCharStream(String text,
23 String description)
24 {
25 super( description );
26 this.text = text;
27 this.cur = 0;
28 }
29
30 public char consume()
31 throws ReadException
32 {
33 if ( this.cur >= this.text.length() )
34 {
35 return (char) -1;
36 }
37
38 char c = this.text.charAt( this.cur );
39
40 ++this.cur;
41
42 return c;
43 }
44
45 public void close()
46 throws ReadException
47 {
48
49 }
50 }
51
52 public void testConstruct_Default()
53 {
54 assertEquals( "<unknown>",
55 new MockCharStream( "cheddar" ).getDescription() );
56 }
57
58 public void testConstruct_WithDescription()
59 {
60 assertEquals( "/path/to/Cheddar.groovy",
61 new MockCharStream( "cheddar",
62 "/path/to/Cheddar.groovy" ).getDescription() );
63 }
64
65 public void testconsume()
66 throws Exception
67 {
68 MockCharStream in = new MockCharStream( "cheddar" );
69
70 assertEquals( 'c',
71 in.consume() );
72
73 assertEquals( 'h',
74 in.consume() );
75
76 assertEquals( 'e',
77 in.consume() );
78
79 assertEquals( 'd',
80 in.consume() );
81
82 assertEquals( 'd',
83 in.consume() );
84
85 assertEquals( 'a',
86 in.consume() );
87
88 assertEquals( 'r',
89 in.consume() );
90
91 assertEquals( (char) -1,
92 in.consume() );
93 }
94
95 public void testConsume()
96 throws Exception
97 {
98 MockCharStream in = new MockCharStream( "cheddar" );
99
100 assertEquals( 'c',
101 in.consume() );
102
103 assertEquals( 'h',
104 in.consume() );
105
106 assertEquals( 'e',
107 in.consume() );
108
109 assertEquals( 'd',
110 in.consume() );
111
112 assertEquals( 'd',
113 in.consume() );
114
115 assertEquals( 'a',
116 in.consume() );
117
118 assertEquals( 'r',
119 in.consume() );
120
121 assertEquals( (char) -1,
122 in.consume() );
123
124 }
125
126 public void testConsumeAtEnd()
127 throws Exception
128 {
129 MockCharStream in = new MockCharStream( "" );
130
131 assertEquals( (char) -1,
132 in.consume() );
133
134 assertEquals( (char) -1,
135 in.consume() );
136 }
137 }