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