1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# -*- coding: utf-8 -*- 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport os 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport unittest 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverfrom StringIO import StringIO 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport antlr3 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestStringStream(unittest.TestCase): 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """Test case for the StringStream class.""" 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testSize(self): 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.size()""" 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo') 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.size(), 3) 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testIndex(self): 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.index()""" 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo') 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 0) 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testConsume(self): 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.consume()""" 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo\nbar') 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() # f 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 1) 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 1) 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 1) 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() # o 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 2) 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 2) 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 1) 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() # o 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 3) 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 3) 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 1) 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() # \n 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 4) 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 0) 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() # b 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 5) 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 1) 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() # a 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 6) 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 2) 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() # r 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 7) 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 3) 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() # EOF 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 7) 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 3) 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() # EOF 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 7) 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 3) 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testReset(self): 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.reset()""" 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo') 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.reset() 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 0) 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 1) 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 0) 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(1), 'f') 92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLA(self): 95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.LA()""" 96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo') 98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(1), 'f') 100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(2), 'o') 101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(3), 'o') 102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(1), 'o') 107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(2), antlr3.EOF) 108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(3), antlr3.EOF) 109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testSubstring(self): 112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.substring()""" 113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foobar') 115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.substring(0, 0), 'f') 117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.substring(0, 1), 'fo') 118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.substring(0, 5), 'foobar') 119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.substring(3, 5), 'bar') 120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testSeekForward(self): 123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.seek(): forward""" 124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo\nbar') 126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(4) 128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 4) 130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 0) 132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(1), 'b') 133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver## # not yet implemented 136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver## def testSeekBackward(self): 137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver## """StringStream.seek(): backward""" 138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver## stream = antlr3.StringStream('foo\nbar') 140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver## stream.seek(4) 142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver## stream.seek(1) 143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver## self.failUnlessEqual(stream.index(), 1) 145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver## self.failUnlessEqual(stream.line, 1) 146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver## self.failUnlessEqual(stream.charPositionInLine, 1) 147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver## self.failUnlessEqual(stream.LA(1), 'o') 148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testMark(self): 151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.mark()""" 152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo\nbar') 154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(4) 156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker = stream.mark() 158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(marker, 1) 159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 1) 160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker = stream.mark() 163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(marker, 2) 164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 2) 165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testReleaseLast(self): 168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.release(): last marker""" 169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo\nbar') 171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(4) 173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = stream.mark() 174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = stream.mark() 177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.release() 179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 1) 180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # release same marker again, nothing has changed 182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.release() 183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 1) 184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testReleaseNested(self): 187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.release(): nested""" 188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo\nbar') 190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(4) 192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = stream.mark() 193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = stream.mark() 196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker3 = stream.mark() 199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.release(marker2) 201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 1) 202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testRewindLast(self): 205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.rewind(): last marker""" 206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo\nbar') 208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(4) 210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker = stream.mark() 212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.rewind() 216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 0) 217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 4) 218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 219324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 0) 220324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(1), 'b') 221324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 222324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 223324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testRewindNested(self): 224324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """StringStream.rewind(): nested""" 225324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 226324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.StringStream('foo\nbar') 227324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 228324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(4) 229324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = stream.mark() 230324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 231324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 232324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = stream.mark() 233324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 234324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 235324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker3 = stream.mark() 236324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 237324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.rewind(marker2) 238324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 1) 239324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 5) 240324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 241324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 1) 242324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(1), 'a') 243324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 244324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 245324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestFileStream(unittest.TestCase): 246324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """Test case for the FileStream class.""" 247324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 248324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 249324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testNoEncoding(self): 250324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver path = os.path.join(os.path.dirname(__file__), 'teststreams.input1') 251324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 252324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.FileStream(path) 253324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 254324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(4) 255324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = stream.mark() 256324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 257324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 258324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = stream.mark() 259324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 260324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 261324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker3 = stream.mark() 262324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 263324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.rewind(marker2) 264324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 1) 265324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 5) 266324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 267324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 1) 268324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(1), 'a') 269324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), ord('a')) 270324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 271324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 272324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testEncoded(self): 273324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver path = os.path.join(os.path.dirname(__file__), 'teststreams.input2') 274324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 275324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.FileStream(path, 'utf-8') 276324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 277324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(4) 278324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = stream.mark() 279324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 280324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 281324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = stream.mark() 282324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 283324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 284324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker3 = stream.mark() 285324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 286324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.rewind(marker2) 287324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 1) 288324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 5) 289324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 290324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 1) 291324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(1), u'ä') 292324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), ord(u'ä')) 293324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 294324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 295324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 296324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestInputStream(unittest.TestCase): 297324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """Test case for the InputStream class.""" 298324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 299324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testNoEncoding(self): 300324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver file = StringIO('foo\nbar') 301324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 302324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.InputStream(file) 303324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 304324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(4) 305324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = stream.mark() 306324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 307324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 308324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = stream.mark() 309324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 310324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 311324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker3 = stream.mark() 312324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 313324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.rewind(marker2) 314324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 1) 315324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 5) 316324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 317324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 1) 318324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(1), 'a') 319324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), ord('a')) 320324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 321324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 322324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testEncoded(self): 323324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver file = StringIO(u'foo\nbär'.encode('utf-8')) 324324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 325324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.InputStream(file, 'utf-8') 326324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 327324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(4) 328324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = stream.mark() 329324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 330324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 331324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = stream.mark() 332324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 333324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 334324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker3 = stream.mark() 335324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 336324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.rewind(marker2) 337324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.markDepth, 1) 338324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), 5) 339324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.line, 2) 340324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.charPositionInLine, 1) 341324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LT(1), u'ä') 342324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), ord(u'ä')) 343324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 344324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 345324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestCommonTokenStream(unittest.TestCase): 346324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """Test case for the StringStream class.""" 347324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 348324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def setUp(self): 349324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """Setup test fixure 350324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 351324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver The constructor of CommonTokenStream needs a token source. This 352324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver is a simple mock class providing just the nextToken() method. 353324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 354324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """ 355324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 356324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver class MockSource(object): 357324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def __init__(self): 358324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.tokens = [] 359324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 360324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def makeEOFToken(self): 361324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return antlr3.CommonToken(type=antlr3.EOF) 362324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 363324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def nextToken(self): 364324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver try: 365324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return self.tokens.pop(0) 366324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver except IndexError: 367324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return None 368324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 369324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source = MockSource() 370324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 371324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 372324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testInit(self): 373324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.__init__()""" 374324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 375324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 376324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), -1) 377324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 378324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 379324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testSetTokenSource(self): 380324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.setTokenSource()""" 381324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 382324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(None) 383324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.setTokenSource(self.source) 384324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.index(), -1) 385324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.channel, antlr3.DEFAULT_CHANNEL) 386324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 387324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 388324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLTEmptySource(self): 389324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.LT(): EOF (empty source)""" 390324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 391324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 392324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 393324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lt1 = stream.LT(1) 394324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(lt1.type, antlr3.EOF) 395324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 396324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 397324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLT1(self): 398324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.LT(1)""" 399324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 400324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 401324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12) 402324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 403324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 404324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 405324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 406324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lt1 = stream.LT(1) 407324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(lt1.type, 12) 408324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 409324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 410324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLT1WithHidden(self): 411324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.LT(1): with hidden tokens""" 412324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 413324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 414324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12, channel=antlr3.HIDDEN_CHANNEL) 415324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 416324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 417324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 418324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13) 419324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 420324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 421324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 422324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 423324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lt1 = stream.LT(1) 424324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(lt1.type, 13) 425324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 426324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 427324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLT2BeyondEnd(self): 428324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.LT(2): beyond end""" 429324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 430324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 431324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12) 432324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 433324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 434324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 435324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13, channel=antlr3.HIDDEN_CHANNEL) 436324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 437324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 438324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 439324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 440324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lt1 = stream.LT(2) 441324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(lt1.type, antlr3.EOF) 442324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 443324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 444324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # not yet implemented 445324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLTNegative(self): 446324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.LT(-1): look back""" 447324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 448324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 449324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12) 450324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 451324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 452324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 453324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13) 454324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 455324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 456324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 457324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.fillBuffer() 458324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 459324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 460324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lt1 = stream.LT(-1) 461324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(lt1.type, 12) 462324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 463324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 464324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLB1(self): 465324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.LB(1)""" 466324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 467324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 468324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12) 469324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 470324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 471324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 472324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13) 473324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 474324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 475324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 476324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.fillBuffer() 477324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 478324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 479324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LB(1).type, 12) 480324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 481324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 482324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLTZero(self): 483324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.LT(0)""" 484324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 485324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 486324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12) 487324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 488324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 489324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 490324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13) 491324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 492324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 493324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 494324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 495324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lt1 = stream.LT(0) 496324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnless(lt1 is None) 497324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 498324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 499324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLBBeyondBegin(self): 500324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.LB(-1): beyond begin""" 501324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 502324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 503324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12) 504324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 505324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 506324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 507324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12, channel=antlr3.HIDDEN_CHANNEL) 508324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 509324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 510324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 511324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12, channel=antlr3.HIDDEN_CHANNEL) 512324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 513324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 514324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 515324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13) 516324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 517324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 518324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 519324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnless(stream.LB(1) is None) 520324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 521324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 522324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 523324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnless(stream.LB(3) is None) 524324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 525324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 526324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testFillBuffer(self): 527324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.fillBuffer()""" 528324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 529324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 530324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12) 531324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 532324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 533324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 534324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13) 535324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 536324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 537324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 538324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=14) 539324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 540324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 541324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 542324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=antlr3.EOF) 543324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 544324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 545324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 546324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.fillBuffer() 547324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 548324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(len(stream.tokens), 3) 549324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.tokens[0].type, 12) 550324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.tokens[1].type, 13) 551324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.tokens[2].type, 14) 552324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 553324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 554324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testConsume(self): 555324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.consume()""" 556324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 557324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 558324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12) 559324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 560324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 561324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 562324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13) 563324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 564324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 565324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 566324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=antlr3.EOF) 567324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 568324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 569324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 570324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), 12) 571324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 572324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 573324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), 13) 574324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 575324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 576324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), antlr3.EOF) 577324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 578324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 579324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), antlr3.EOF) 580324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 581324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 582324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testSeek(self): 583324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.seek()""" 584324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 585324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 586324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12) 587324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 588324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 589324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 590324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13) 591324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 592324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 593324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 594324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=antlr3.EOF) 595324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 596324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 597324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 598324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), 12) 599324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 600324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(2) 601324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), antlr3.EOF) 602324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 603324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.seek(0) 604324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), 12) 605324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 606324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 607324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testMarkRewind(self): 608324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.mark()/rewind()""" 609324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 610324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 611324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12) 612324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 613324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 614324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 615324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13) 616324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 617324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 618324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 619324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=antlr3.EOF) 620324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 621324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 622324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 623324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.fillBuffer() 624324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 625324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 626324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker = stream.mark() 627324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 628324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.consume() 629324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream.rewind(marker) 630324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 631324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.failUnlessEqual(stream.LA(1), 13) 632324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 633324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 634324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testToString(self): 635324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver """CommonTokenStream.toString()""" 636324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 637324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 638324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=12, text="foo") 639324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 640324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 641324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 642324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=13, text="bar") 643324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 644324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 645324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 646324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=14, text="gnurz") 647324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 648324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 649324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver self.source.tokens.append( 650324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver antlr3.CommonToken(type=15, text="blarz") 651324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ) 652324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 653324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stream = antlr3.CommonTokenStream(self.source) 654324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 655324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver assert stream.toString() == "foobargnurzblarz" 656324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver assert stream.toString(1, 2) == "bargnurz" 657324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver assert stream.toString(stream.tokens[1], stream.tokens[-2]) == "bargnurz" 658324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 659324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 660324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverif __name__ == "__main__": 661324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) 662