1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#!/usr/bin/ruby 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# encoding: utf-8 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverrequire 'antlr3' 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverrequire 'test/unit' 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverrequire 'spec' 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverinclude ANTLR3 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestStringStream < Test::Unit::TestCase 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def setup 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = StringStream.new( "oh\nhey!\n" ) 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_size 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.size.should == 8 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_index 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 0 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_consume 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume # o 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 1 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 1 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 1 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume # h 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 2 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 2 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 1 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume # \n 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 3 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 0 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 2 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume # h 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 4 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 1 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 2 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume # e 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 5 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 2 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 2 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume # y 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 6 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 3 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 2 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume # ! 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 7 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 4 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 2 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume # \n 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 8 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 0 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 3 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume # EOF 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 8 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 0 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 3 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume # EOF 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 8 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 0 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 3 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_reset 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 2.times { @stream.consume } 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.reset 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 0 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 1 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 0 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(1).should == ?o.ord 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_look 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(1).should == 'o' 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(2).should == 'h' 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(3).should == "\n" 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(1).should == ?o.ord 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(2).should == ?h.ord 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(3).should == ?\n.ord 92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 6.times { @stream.consume } 94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(1).should == '!' 95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(2).should == "\n" 96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(3).should be_nil 97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(1).should == ?!.ord 98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(2).should == ?\n.ord 99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(3).should == EOF 100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_substring 103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.substring(0,0).should == 'o' 104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.substring(0,1).should == 'oh' 105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.substring(0,8).should == "oh\nhey!\n" 106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.substring(3,6).should == "hey!" 107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_seek_forward 110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(3) 111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 3 112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 2 113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 0 114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(1).should == ?h.ord 115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_mark 118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(4) 119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker = @stream.mark 120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker.should == 1 121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 2.times { @stream.consume } 123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker = @stream.mark 124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker.should == 2 126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_release_last 129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(4) 130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = @stream.mark 131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 2.times { @stream.consume } 133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = @stream.mark 134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.release 136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.mark_depth.should == 2 137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.release 138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.mark_depth.should == 1 139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_release_nested 142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(4) 143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = @stream.mark() 144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume() 146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = @stream.mark() 147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume() 149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker3 = @stream.mark() 150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.release(marker2) 152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.mark_depth.should == 2 153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_rewind_last 157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(4) 158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker = @stream.mark 160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.rewind 164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.mark_depth.should == 1 165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index.should == 4 166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 2 167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 1 168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(1).should == ?e.ord 169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_through 173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.through( 2 ).should == 'oh' 174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.through( -2 ).should == '' 175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek( 5 ) 176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.through( 0 ).should == '' 177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.through( 1 ).should == 'y' 178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.through( -2 ).should == 'he' 179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.through( 5 ).should == "y!\n" 180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_rewind_nested 183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(4) 184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = @stream.mark() 185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = @stream.mark 188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker3 = @stream.mark 191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.rewind(marker2) 193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.mark_depth.should == 2 194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index().should == 5 195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 2 196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 2 197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(1).should == ?y.ord 198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend 200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestFileStream < Test::Unit::TestCase 202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_no_encoding 205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver path = File.join(File.dirname(__FILE__), 'sample-input/file-stream-1') 207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = FileStream.new(path) 208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(4) 210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker1 = @stream.mark() 211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume() 213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker2 = @stream.mark() 214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume() 216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker3 = @stream.mark() 217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.rewind(marker2) 219324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.index().should == 5 220324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.line.should == 2 221324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.column.should == 1 222324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.mark_depth.should == 2 223324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(1).should == 'a' 224324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(1).should == ?a.ord 225324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 226324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 227324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_encoded 228324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 229324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 230324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend 231324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 232324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestInputStream < Test::Unit::TestCase 233324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_no_encoding 234324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 235324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 236324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 237324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_encoded 238324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 239324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 240324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend 241324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 242324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestCommonTokenStream < Test::Unit::TestCase 243324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver class MockSource 244324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver include ANTLR3::TokenSource 245324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver attr_accessor :tokens 246324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def initialize 247324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @tokens = [] 248324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 249324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def next_token 250324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @tokens.shift 251324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 252324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 253324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 254324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # vvvvvvvv tests vvvvvvvvv 255324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_init 256324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 257324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new( @source ) 258324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.position.should == 0 259324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 260324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 261324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_rebuild 262324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source1 = MockSource.new 263324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source2 = MockSource.new 264324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source2.tokens << new_token( 10, :channel => ANTLR3::HIDDEN ) << new_token( 11 ) 265324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new( @source1 ) 266324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 267324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.position.should == 0 268324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.tokens.length.should == 0 269324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 270324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.rebuild( @source2 ) 271324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.token_source.should == @source2 272324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.position.should == 1 273324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.tokens.should have( 2 ).things 274324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 275324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 276324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_look_empty_source 277324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 278324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 279324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look.should == ANTLR3::EOF_TOKEN 280324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 281324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 282324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_look1 283324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 284324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12) 285324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 286324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(1).type.should == 12 287324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 288324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 289324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_look1_with_hidden 290324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # FIX 291324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 292324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12, :channel => ANTLR3::HIDDEN_CHANNEL) << 293324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver new_token(13) 294324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 295324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(1).type.should == 13 296324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 297324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 298324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_look2_beyond_end 299324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 300324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12) << 301324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver new_token(13, :channel => ANTLR3::HIDDEN_CHANNEL) 302324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 303324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 304324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(2).type.should == EOF 305324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 306324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 307324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_look_negative 308324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 309324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12) << new_token(13) 310324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 311324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 312324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 313324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(-1).type.should == 12 314324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 315324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 316324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_lb1 317324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 318324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12) << new_token(13) 319324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 320324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 321324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 322324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(-1).type.should == 12 323324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 324324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 325324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_look_zero 326324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # FIX 327324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 328324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12) << new_token(13) 329324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 330324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(0).should == nil 331324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 332324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 333324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_lb_beyond_begin 334324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 335324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(10) << 336324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver new_token(11, :channel => HIDDEN_CHANNEL) << 337324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver new_token(12, :channel => HIDDEN_CHANNEL) << 338324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver new_token(13) 339324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 340324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 341324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(-1).should == nil 342324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 2.times { @stream.consume } 343324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.look(-3).should == nil 344324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 345324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 346324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_fill_buffer 347324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 348324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12) << new_token(13) << new_token(14) << new_token(EOF) 349324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 350324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 351324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.instance_variable_get(:@tokens).length.should == 3 352324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.tokens[0].type.should == 12 353324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.tokens[1].type.should == 13 354324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.tokens[2].type.should == 14 355324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 356324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 357324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_consume 358324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 359324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12) << new_token(13) << new_token(EOF) 360324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 361324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek.should == 12 362324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 363324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek.should == 13 364324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 365324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek.should == EOF 366324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 367324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek.should == EOF 368324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 369324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 370324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_seek 371324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 372324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12) << new_token(13) << new_token(EOF) 373324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 374324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 375324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(1).should == 12 376324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(2).peek.should == EOF 377324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(0).peek.should == 12 378324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(-3).position.should == 0 379324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.seek(10).position.should == 2 380324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 381324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 382324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_mark_rewind 383324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 384324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12) << new_token(13) << new_token(EOF) 385324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 386324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 387324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver marker = @stream.mark 388324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.consume 389324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.rewind(marker) 390324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.peek(1).should == 13 391324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 392324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 393324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def test_to_string 394324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source = MockSource.new 395324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @source.tokens << new_token(12, 'foo') << 396324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver new_token(13, 'bar') << new_token(14, 'gnurz') << 397324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver new_token(15, 'blarz') 398324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream = CommonTokenStream.new(@source) 399324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.to_s.should == "foobargnurzblarz" 400324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.to_s(1,2).should == 'bargnurz' 401324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @stream.to_s(@stream[1], @stream[-2]).should == 'bargnurz' 402324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 403324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 404324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def new_token(type, opts = {}) 405324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fields = {} 406324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case type 407324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver when Hash then fields.update(type) 408324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver else 409324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fields[:type] = type 410324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 411324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case opts 412324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver when Hash then fields.update(opts) 413324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver when String then fields[:text] = opts 414324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 415324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonToken.create(fields) 416324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 417324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 418324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend 419324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 420324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 421324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver__END__ 422324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverteststreams.py | LN | STATUS 423324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver----------------------------------------------+-----+-------------- 424324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestStringStream(unittest.TestCase) | 009 | [x] 425324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testSize(self) | 012 | [x] 426324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testIndex(self) | 020 | [x] 427324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testConsume(self) | 028 | [x] 428324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testReset(self) | 079 | [x] 429324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLA(self) | 094 | [x] 430324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testSubstring(self) | 111 | [x] 431324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testSeekForward(self) | 122 | [x] 432324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testMark(self) | 150 | [x] 433324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testReleaseLast(self) | 167 | [x] 434324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testReleaseNested(self) | 186 | [x] 435324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testRewindLast(self) | 204 | [x] 436324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testRewindNested(self) | 223 | [x] 437324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestFileStream(unittest.TestCase) | 245 | [o] 438324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testNoEncoding(self) | 249 | [x] 439324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testEncoded(self) | 272 | [ ] 440324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestInputStream(unittest.TestCase) | 296 | [ ] 441324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testNoEncoding(self) | 299 | [ ] 442324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testEncoded(self) | 322 | [ ] 443324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestCommonTokenStream(unittest.TestCase)| 345 | [ ] 444324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def setUp(self) | 348 | [x] 445324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testInit(self) | 369 | [x] 446324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testSetTokenSource(self) | 376 | [x] 447324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLTEmptySource(self) | 385 | [x] 448324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLT1(self) | 394 | [x] 449324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLT1WithHidden(self) | 407 | [x] 450324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLT2BeyondEnd(self) | 424 | [x] 451324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLTNegative(self) | 442 | [x] 452324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLB1(self) | 461 | [x] 453324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLTZero(self) | 479 | [x] 454324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testLBBeyondBegin(self) | 496 | [x] 455324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testFillBuffer(self) | 523 | [x] 456324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testConsume(self) | 551 | [x] 457324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testSeek(self) | 579 | [x] 458324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testMarkRewind(self) | 604 | [x] 459324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def testToString(self) | 631 | [x] 460324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 461