1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverunit Antlr.Runtime.Tests;
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverinterface
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruses
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Classes,
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  SysUtils,
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  TestFramework,
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Antlr.Runtime;
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvertype
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  // Test methods for class IANTLRStringStream
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  TestANTLRStringStream = class(TTestCase)
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  strict private
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    const
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      NL = #13#10;
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      GRAMMARSTR = ''
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        + 'parser grammar p;' + NL
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        + 'prog : WHILE ID LCURLY (assign)* RCURLY EOF;' + NL
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        + 'assign : ID ASSIGN expr SEMI ;' + NL
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        + 'expr : INT | FLOAT | ID ;' + NL;
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  public
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure SetUp; override;
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TearDown; override;
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  published
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TestSizeOnEmptyANTLRStringStream;
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TestSizeOnANTLRStringStream;
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TestConsumeOnANTLRStringStream;
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TestResetOnANTLRStringStream;
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TestSubstringOnANTLRStringStream;
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  end;
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimplementation
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver{ TestANTLRStringStream }
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestANTLRStringStream.SetUp;
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestANTLRStringStream.TearDown;
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestANTLRStringStream.TestConsumeOnANTLRStringStream;
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvervar
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream: IANTLRStringStream;
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream := TANTLRStringStream.Create('One'#13#10'Two');
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(0, Stream.Index);
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(0, Stream.CharPositionInLine);
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Line);
53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // O
55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Index);
56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.CharPositionInLine);
57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Line);
58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // n
60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.Index);
61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.CharPositionInLine);
62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Line);
63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // e
65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(3, Stream.Index);
66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(3, Stream.CharPositionInLine);
67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Line);
68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // #13
70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(4, Stream.Index);
71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(4, Stream.CharPositionInLine);
72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Line);
73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // #10
75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(5, Stream.Index);
76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(0, Stream.CharPositionInLine);
77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.Line);
78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // T
80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(6, Stream.Index);
81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.CharPositionInLine);
82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.Line);
83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // w
85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(7, Stream.Index);
86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.CharPositionInLine);
87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.Line);
88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // o
90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(8, Stream.Index);
91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(3, Stream.CharPositionInLine);
92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.Line);
93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // EOF
95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(8, Stream.Index);
96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(3, Stream.CharPositionInLine);
97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.Line);
98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // EOF
100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(8, Stream.Index);
101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(3, Stream.CharPositionInLine);
102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.Line);
103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestANTLRStringStream.TestResetOnANTLRStringStream;
106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvervar
107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream: IANTLRStringStream;
108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream := TANTLRStringStream.Create('One'#13#10'Two');
110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(0, Stream.Index);
111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(0, Stream.CharPositionInLine);
112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Line);
113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // O
115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // n
116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(Ord('e'), Stream.LA(1));
118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.Index);
119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Reset;
121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(Ord('O'), Stream.LA(1));
122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(0, Stream.Index);
123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(0, Stream.CharPositionInLine);
124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Line);
125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // O
126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(Ord('n'), Stream.LA(1));
128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Index);
129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.CharPositionInLine);
130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Line);
131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // n
132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(Ord('e'), Stream.LA(1));
134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.Index);
135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(2, Stream.CharPositionInLine);
136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(1, Stream.Line);
137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume; // n
138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestANTLRStringStream.TestSizeOnANTLRStringStream;
141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvervar
142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  S1, S2, S3: IANTLRStringStream;
143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  S1 := TANTLRStringStream.Create('lexer'#13#10);
145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(7, S1.Size);
146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  S2 := TANTLRStringStream.Create(GRAMMARSTR);
148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(Length(GRAMMARSTR), S2.Size);
149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  S3 := TANTLRStringStream.Create('grammar P;');
151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(10, S3.Size);
152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestANTLRStringStream.TestSizeOnEmptyANTLRStringStream;
155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvervar
156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  S1: IANTLRStringStream;
157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  S1 := TANTLRStringStream.Create('');
159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(0, S1.Size);
160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(0, S1.Index);
161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestANTLRStringStream.TestSubstringOnANTLRStringStream;
164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvervar
165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream: IANTLRStringStream;
166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream := TANTLRStringStream.Create('One'#13#10'Two'#13#10'Three');
168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals('Two', Stream.Substring(5, 7));
170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals('One', Stream.Substring(0, 2));
171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals('Three', Stream.Substring(10, 14));
172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Stream.Consume;
174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals('Two', Stream.Substring(5, 7));
176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals('One', Stream.Substring(0, 2));
177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals('Three', Stream.Substring(10, 14));
178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverinitialization
181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  // Register any test cases with the test runner
182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  RegisterTest(TestANTLRStringStream.Suite);
183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend.
184