1*16467b97STreehugger Robot#!/usr/bin/ruby 2*16467b97STreehugger Robot# encoding: utf-8 3*16467b97STreehugger Robot 4*16467b97STreehugger Robotrequire 'antlr3' 5*16467b97STreehugger Robotrequire 'test/unit' 6*16467b97STreehugger Robotrequire 'spec' 7*16467b97STreehugger Robot 8*16467b97STreehugger Robot 9*16467b97STreehugger Robotinclude ANTLR3 10*16467b97STreehugger Robot 11*16467b97STreehugger Robotclass TestStringStream < Test::Unit::TestCase 12*16467b97STreehugger Robot def setup 13*16467b97STreehugger Robot @stream = StringStream.new( "oh\nhey!\n" ) 14*16467b97STreehugger Robot end 15*16467b97STreehugger Robot 16*16467b97STreehugger Robot def test_size 17*16467b97STreehugger Robot @stream.size.should == 8 18*16467b97STreehugger Robot end 19*16467b97STreehugger Robot 20*16467b97STreehugger Robot def test_index 21*16467b97STreehugger Robot @stream.index.should == 0 22*16467b97STreehugger Robot end 23*16467b97STreehugger Robot 24*16467b97STreehugger Robot def test_consume 25*16467b97STreehugger Robot @stream.consume # o 26*16467b97STreehugger Robot @stream.index.should == 1 27*16467b97STreehugger Robot @stream.column.should == 1 28*16467b97STreehugger Robot @stream.line.should == 1 29*16467b97STreehugger Robot 30*16467b97STreehugger Robot @stream.consume # h 31*16467b97STreehugger Robot @stream.index.should == 2 32*16467b97STreehugger Robot @stream.column.should == 2 33*16467b97STreehugger Robot @stream.line.should == 1 34*16467b97STreehugger Robot 35*16467b97STreehugger Robot @stream.consume # \n 36*16467b97STreehugger Robot @stream.index.should == 3 37*16467b97STreehugger Robot @stream.column.should == 0 38*16467b97STreehugger Robot @stream.line.should == 2 39*16467b97STreehugger Robot 40*16467b97STreehugger Robot @stream.consume # h 41*16467b97STreehugger Robot @stream.index.should == 4 42*16467b97STreehugger Robot @stream.column.should == 1 43*16467b97STreehugger Robot @stream.line.should == 2 44*16467b97STreehugger Robot 45*16467b97STreehugger Robot @stream.consume # e 46*16467b97STreehugger Robot @stream.index.should == 5 47*16467b97STreehugger Robot @stream.column.should == 2 48*16467b97STreehugger Robot @stream.line.should == 2 49*16467b97STreehugger Robot 50*16467b97STreehugger Robot @stream.consume # y 51*16467b97STreehugger Robot @stream.index.should == 6 52*16467b97STreehugger Robot @stream.column.should == 3 53*16467b97STreehugger Robot @stream.line.should == 2 54*16467b97STreehugger Robot 55*16467b97STreehugger Robot @stream.consume # ! 56*16467b97STreehugger Robot @stream.index.should == 7 57*16467b97STreehugger Robot @stream.column.should == 4 58*16467b97STreehugger Robot @stream.line.should == 2 59*16467b97STreehugger Robot 60*16467b97STreehugger Robot @stream.consume # \n 61*16467b97STreehugger Robot @stream.index.should == 8 62*16467b97STreehugger Robot @stream.column.should == 0 63*16467b97STreehugger Robot @stream.line.should == 3 64*16467b97STreehugger Robot 65*16467b97STreehugger Robot @stream.consume # EOF 66*16467b97STreehugger Robot @stream.index.should == 8 67*16467b97STreehugger Robot @stream.column.should == 0 68*16467b97STreehugger Robot @stream.line.should == 3 69*16467b97STreehugger Robot 70*16467b97STreehugger Robot @stream.consume # EOF 71*16467b97STreehugger Robot @stream.index.should == 8 72*16467b97STreehugger Robot @stream.column.should == 0 73*16467b97STreehugger Robot @stream.line.should == 3 74*16467b97STreehugger Robot end 75*16467b97STreehugger Robot 76*16467b97STreehugger Robot def test_reset 77*16467b97STreehugger Robot 2.times { @stream.consume } 78*16467b97STreehugger Robot @stream.reset 79*16467b97STreehugger Robot @stream.index.should == 0 80*16467b97STreehugger Robot @stream.line.should == 1 81*16467b97STreehugger Robot @stream.column.should == 0 82*16467b97STreehugger Robot @stream.peek(1).should == ?o.ord 83*16467b97STreehugger Robot end 84*16467b97STreehugger Robot 85*16467b97STreehugger Robot def test_look 86*16467b97STreehugger Robot @stream.look(1).should == 'o' 87*16467b97STreehugger Robot @stream.look(2).should == 'h' 88*16467b97STreehugger Robot @stream.look(3).should == "\n" 89*16467b97STreehugger Robot @stream.peek(1).should == ?o.ord 90*16467b97STreehugger Robot @stream.peek(2).should == ?h.ord 91*16467b97STreehugger Robot @stream.peek(3).should == ?\n.ord 92*16467b97STreehugger Robot 93*16467b97STreehugger Robot 6.times { @stream.consume } 94*16467b97STreehugger Robot @stream.look(1).should == '!' 95*16467b97STreehugger Robot @stream.look(2).should == "\n" 96*16467b97STreehugger Robot @stream.look(3).should be_nil 97*16467b97STreehugger Robot @stream.peek(1).should == ?!.ord 98*16467b97STreehugger Robot @stream.peek(2).should == ?\n.ord 99*16467b97STreehugger Robot @stream.peek(3).should == EOF 100*16467b97STreehugger Robot end 101*16467b97STreehugger Robot 102*16467b97STreehugger Robot def test_substring 103*16467b97STreehugger Robot @stream.substring(0,0).should == 'o' 104*16467b97STreehugger Robot @stream.substring(0,1).should == 'oh' 105*16467b97STreehugger Robot @stream.substring(0,8).should == "oh\nhey!\n" 106*16467b97STreehugger Robot @stream.substring(3,6).should == "hey!" 107*16467b97STreehugger Robot end 108*16467b97STreehugger Robot 109*16467b97STreehugger Robot def test_seek_forward 110*16467b97STreehugger Robot @stream.seek(3) 111*16467b97STreehugger Robot @stream.index.should == 3 112*16467b97STreehugger Robot @stream.line.should == 2 113*16467b97STreehugger Robot @stream.column.should == 0 114*16467b97STreehugger Robot @stream.peek(1).should == ?h.ord 115*16467b97STreehugger Robot end 116*16467b97STreehugger Robot 117*16467b97STreehugger Robot def test_mark 118*16467b97STreehugger Robot @stream.seek(4) 119*16467b97STreehugger Robot marker = @stream.mark 120*16467b97STreehugger Robot marker.should == 1 121*16467b97STreehugger Robot 122*16467b97STreehugger Robot 2.times { @stream.consume } 123*16467b97STreehugger Robot marker = @stream.mark 124*16467b97STreehugger Robot 125*16467b97STreehugger Robot marker.should == 2 126*16467b97STreehugger Robot end 127*16467b97STreehugger Robot 128*16467b97STreehugger Robot def test_release_last 129*16467b97STreehugger Robot @stream.seek(4) 130*16467b97STreehugger Robot marker1 = @stream.mark 131*16467b97STreehugger Robot 132*16467b97STreehugger Robot 2.times { @stream.consume } 133*16467b97STreehugger Robot marker2 = @stream.mark 134*16467b97STreehugger Robot 135*16467b97STreehugger Robot @stream.release 136*16467b97STreehugger Robot @stream.mark_depth.should == 2 137*16467b97STreehugger Robot @stream.release 138*16467b97STreehugger Robot @stream.mark_depth.should == 1 139*16467b97STreehugger Robot end 140*16467b97STreehugger Robot 141*16467b97STreehugger Robot def test_release_nested 142*16467b97STreehugger Robot @stream.seek(4) 143*16467b97STreehugger Robot marker1 = @stream.mark() 144*16467b97STreehugger Robot 145*16467b97STreehugger Robot @stream.consume() 146*16467b97STreehugger Robot marker2 = @stream.mark() 147*16467b97STreehugger Robot 148*16467b97STreehugger Robot @stream.consume() 149*16467b97STreehugger Robot marker3 = @stream.mark() 150*16467b97STreehugger Robot 151*16467b97STreehugger Robot @stream.release(marker2) 152*16467b97STreehugger Robot @stream.mark_depth.should == 2 153*16467b97STreehugger Robot 154*16467b97STreehugger Robot end 155*16467b97STreehugger Robot 156*16467b97STreehugger Robot def test_rewind_last 157*16467b97STreehugger Robot @stream.seek(4) 158*16467b97STreehugger Robot 159*16467b97STreehugger Robot marker = @stream.mark 160*16467b97STreehugger Robot @stream.consume 161*16467b97STreehugger Robot @stream.consume 162*16467b97STreehugger Robot 163*16467b97STreehugger Robot @stream.rewind 164*16467b97STreehugger Robot @stream.mark_depth.should == 1 165*16467b97STreehugger Robot @stream.index.should == 4 166*16467b97STreehugger Robot @stream.line.should == 2 167*16467b97STreehugger Robot @stream.column.should == 1 168*16467b97STreehugger Robot @stream.peek(1).should == ?e.ord 169*16467b97STreehugger Robot 170*16467b97STreehugger Robot end 171*16467b97STreehugger Robot 172*16467b97STreehugger Robot def test_through 173*16467b97STreehugger Robot @stream.through( 2 ).should == 'oh' 174*16467b97STreehugger Robot @stream.through( -2 ).should == '' 175*16467b97STreehugger Robot @stream.seek( 5 ) 176*16467b97STreehugger Robot @stream.through( 0 ).should == '' 177*16467b97STreehugger Robot @stream.through( 1 ).should == 'y' 178*16467b97STreehugger Robot @stream.through( -2 ).should == 'he' 179*16467b97STreehugger Robot @stream.through( 5 ).should == "y!\n" 180*16467b97STreehugger Robot end 181*16467b97STreehugger Robot 182*16467b97STreehugger Robot def test_rewind_nested 183*16467b97STreehugger Robot @stream.seek(4) 184*16467b97STreehugger Robot marker1 = @stream.mark() 185*16467b97STreehugger Robot 186*16467b97STreehugger Robot @stream.consume 187*16467b97STreehugger Robot marker2 = @stream.mark 188*16467b97STreehugger Robot 189*16467b97STreehugger Robot @stream.consume 190*16467b97STreehugger Robot marker3 = @stream.mark 191*16467b97STreehugger Robot 192*16467b97STreehugger Robot @stream.rewind(marker2) 193*16467b97STreehugger Robot @stream.mark_depth.should == 2 194*16467b97STreehugger Robot @stream.index().should == 5 195*16467b97STreehugger Robot @stream.line.should == 2 196*16467b97STreehugger Robot @stream.column.should == 2 197*16467b97STreehugger Robot @stream.peek(1).should == ?y.ord 198*16467b97STreehugger Robot end 199*16467b97STreehugger Robotend 200*16467b97STreehugger Robot 201*16467b97STreehugger Robotclass TestFileStream < Test::Unit::TestCase 202*16467b97STreehugger Robot 203*16467b97STreehugger Robot 204*16467b97STreehugger Robot def test_no_encoding 205*16467b97STreehugger Robot 206*16467b97STreehugger Robot path = File.join(File.dirname(__FILE__), 'sample-input/file-stream-1') 207*16467b97STreehugger Robot @stream = FileStream.new(path) 208*16467b97STreehugger Robot 209*16467b97STreehugger Robot @stream.seek(4) 210*16467b97STreehugger Robot marker1 = @stream.mark() 211*16467b97STreehugger Robot 212*16467b97STreehugger Robot @stream.consume() 213*16467b97STreehugger Robot marker2 = @stream.mark() 214*16467b97STreehugger Robot 215*16467b97STreehugger Robot @stream.consume() 216*16467b97STreehugger Robot marker3 = @stream.mark() 217*16467b97STreehugger Robot 218*16467b97STreehugger Robot @stream.rewind(marker2) 219*16467b97STreehugger Robot @stream.index().should == 5 220*16467b97STreehugger Robot @stream.line.should == 2 221*16467b97STreehugger Robot @stream.column.should == 1 222*16467b97STreehugger Robot @stream.mark_depth.should == 2 223*16467b97STreehugger Robot @stream.look(1).should == 'a' 224*16467b97STreehugger Robot @stream.peek(1).should == ?a.ord 225*16467b97STreehugger Robot end 226*16467b97STreehugger Robot 227*16467b97STreehugger Robot def test_encoded 228*16467b97STreehugger Robot 229*16467b97STreehugger Robot end 230*16467b97STreehugger Robotend 231*16467b97STreehugger Robot 232*16467b97STreehugger Robotclass TestInputStream < Test::Unit::TestCase 233*16467b97STreehugger Robot def test_no_encoding 234*16467b97STreehugger Robot 235*16467b97STreehugger Robot end 236*16467b97STreehugger Robot 237*16467b97STreehugger Robot def test_encoded 238*16467b97STreehugger Robot 239*16467b97STreehugger Robot end 240*16467b97STreehugger Robotend 241*16467b97STreehugger Robot 242*16467b97STreehugger Robotclass TestCommonTokenStream < Test::Unit::TestCase 243*16467b97STreehugger Robot class MockSource 244*16467b97STreehugger Robot include ANTLR3::TokenSource 245*16467b97STreehugger Robot attr_accessor :tokens 246*16467b97STreehugger Robot def initialize 247*16467b97STreehugger Robot @tokens = [] 248*16467b97STreehugger Robot end 249*16467b97STreehugger Robot def next_token 250*16467b97STreehugger Robot @tokens.shift 251*16467b97STreehugger Robot end 252*16467b97STreehugger Robot end 253*16467b97STreehugger Robot 254*16467b97STreehugger Robot # vvvvvvvv tests vvvvvvvvv 255*16467b97STreehugger Robot def test_init 256*16467b97STreehugger Robot @source = MockSource.new 257*16467b97STreehugger Robot @stream = CommonTokenStream.new( @source ) 258*16467b97STreehugger Robot @stream.position.should == 0 259*16467b97STreehugger Robot end 260*16467b97STreehugger Robot 261*16467b97STreehugger Robot def test_rebuild 262*16467b97STreehugger Robot @source1 = MockSource.new 263*16467b97STreehugger Robot @source2 = MockSource.new 264*16467b97STreehugger Robot @source2.tokens << new_token( 10, :channel => ANTLR3::HIDDEN ) << new_token( 11 ) 265*16467b97STreehugger Robot @stream = CommonTokenStream.new( @source1 ) 266*16467b97STreehugger Robot 267*16467b97STreehugger Robot @stream.position.should == 0 268*16467b97STreehugger Robot @stream.tokens.length.should == 0 269*16467b97STreehugger Robot 270*16467b97STreehugger Robot @stream.rebuild( @source2 ) 271*16467b97STreehugger Robot @stream.token_source.should == @source2 272*16467b97STreehugger Robot @stream.position.should == 1 273*16467b97STreehugger Robot @stream.tokens.should have( 2 ).things 274*16467b97STreehugger Robot end 275*16467b97STreehugger Robot 276*16467b97STreehugger Robot def test_look_empty_source 277*16467b97STreehugger Robot @source = MockSource.new 278*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 279*16467b97STreehugger Robot @stream.look.should == ANTLR3::EOF_TOKEN 280*16467b97STreehugger Robot end 281*16467b97STreehugger Robot 282*16467b97STreehugger Robot def test_look1 283*16467b97STreehugger Robot @source = MockSource.new 284*16467b97STreehugger Robot @source.tokens << new_token(12) 285*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 286*16467b97STreehugger Robot @stream.look(1).type.should == 12 287*16467b97STreehugger Robot end 288*16467b97STreehugger Robot 289*16467b97STreehugger Robot def test_look1_with_hidden 290*16467b97STreehugger Robot # FIX 291*16467b97STreehugger Robot @source = MockSource.new 292*16467b97STreehugger Robot @source.tokens << new_token(12, :channel => ANTLR3::HIDDEN_CHANNEL) << 293*16467b97STreehugger Robot new_token(13) 294*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 295*16467b97STreehugger Robot @stream.look(1).type.should == 13 296*16467b97STreehugger Robot end 297*16467b97STreehugger Robot 298*16467b97STreehugger Robot def test_look2_beyond_end 299*16467b97STreehugger Robot @source = MockSource.new 300*16467b97STreehugger Robot @source.tokens << new_token(12) << 301*16467b97STreehugger Robot new_token(13, :channel => ANTLR3::HIDDEN_CHANNEL) 302*16467b97STreehugger Robot 303*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 304*16467b97STreehugger Robot @stream.look(2).type.should == EOF 305*16467b97STreehugger Robot end 306*16467b97STreehugger Robot 307*16467b97STreehugger Robot def test_look_negative 308*16467b97STreehugger Robot @source = MockSource.new 309*16467b97STreehugger Robot @source.tokens << new_token(12) << new_token(13) 310*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 311*16467b97STreehugger Robot @stream.consume 312*16467b97STreehugger Robot 313*16467b97STreehugger Robot @stream.look(-1).type.should == 12 314*16467b97STreehugger Robot end 315*16467b97STreehugger Robot 316*16467b97STreehugger Robot def test_lb1 317*16467b97STreehugger Robot @source = MockSource.new 318*16467b97STreehugger Robot @source.tokens << new_token(12) << new_token(13) 319*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 320*16467b97STreehugger Robot 321*16467b97STreehugger Robot @stream.consume 322*16467b97STreehugger Robot @stream.look(-1).type.should == 12 323*16467b97STreehugger Robot end 324*16467b97STreehugger Robot 325*16467b97STreehugger Robot def test_look_zero 326*16467b97STreehugger Robot # FIX 327*16467b97STreehugger Robot @source = MockSource.new 328*16467b97STreehugger Robot @source.tokens << new_token(12) << new_token(13) 329*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 330*16467b97STreehugger Robot @stream.look(0).should == nil 331*16467b97STreehugger Robot end 332*16467b97STreehugger Robot 333*16467b97STreehugger Robot def test_lb_beyond_begin 334*16467b97STreehugger Robot @source = MockSource.new 335*16467b97STreehugger Robot @source.tokens << new_token(10) << 336*16467b97STreehugger Robot new_token(11, :channel => HIDDEN_CHANNEL) << 337*16467b97STreehugger Robot new_token(12, :channel => HIDDEN_CHANNEL) << 338*16467b97STreehugger Robot new_token(13) 339*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 340*16467b97STreehugger Robot 341*16467b97STreehugger Robot @stream.look(-1).should == nil 342*16467b97STreehugger Robot 2.times { @stream.consume } 343*16467b97STreehugger Robot @stream.look(-3).should == nil 344*16467b97STreehugger Robot end 345*16467b97STreehugger Robot 346*16467b97STreehugger Robot def test_fill_buffer 347*16467b97STreehugger Robot @source = MockSource.new 348*16467b97STreehugger Robot @source.tokens << new_token(12) << new_token(13) << new_token(14) << new_token(EOF) 349*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 350*16467b97STreehugger Robot 351*16467b97STreehugger Robot @stream.instance_variable_get(:@tokens).length.should == 3 352*16467b97STreehugger Robot @stream.tokens[0].type.should == 12 353*16467b97STreehugger Robot @stream.tokens[1].type.should == 13 354*16467b97STreehugger Robot @stream.tokens[2].type.should == 14 355*16467b97STreehugger Robot end 356*16467b97STreehugger Robot 357*16467b97STreehugger Robot def test_consume 358*16467b97STreehugger Robot @source = MockSource.new 359*16467b97STreehugger Robot @source.tokens << new_token(12) << new_token(13) << new_token(EOF) 360*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 361*16467b97STreehugger Robot @stream.peek.should == 12 362*16467b97STreehugger Robot @stream.consume 363*16467b97STreehugger Robot @stream.peek.should == 13 364*16467b97STreehugger Robot @stream.consume 365*16467b97STreehugger Robot @stream.peek.should == EOF 366*16467b97STreehugger Robot @stream.consume 367*16467b97STreehugger Robot @stream.peek.should == EOF 368*16467b97STreehugger Robot end 369*16467b97STreehugger Robot 370*16467b97STreehugger Robot def test_seek 371*16467b97STreehugger Robot @source = MockSource.new 372*16467b97STreehugger Robot @source.tokens << new_token(12) << new_token(13) << new_token(EOF) 373*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 374*16467b97STreehugger Robot 375*16467b97STreehugger Robot @stream.peek(1).should == 12 376*16467b97STreehugger Robot @stream.seek(2).peek.should == EOF 377*16467b97STreehugger Robot @stream.seek(0).peek.should == 12 378*16467b97STreehugger Robot @stream.seek(-3).position.should == 0 379*16467b97STreehugger Robot @stream.seek(10).position.should == 2 380*16467b97STreehugger Robot end 381*16467b97STreehugger Robot 382*16467b97STreehugger Robot def test_mark_rewind 383*16467b97STreehugger Robot @source = MockSource.new 384*16467b97STreehugger Robot @source.tokens << new_token(12) << new_token(13) << new_token(EOF) 385*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 386*16467b97STreehugger Robot @stream.consume 387*16467b97STreehugger Robot marker = @stream.mark 388*16467b97STreehugger Robot @stream.consume 389*16467b97STreehugger Robot @stream.rewind(marker) 390*16467b97STreehugger Robot @stream.peek(1).should == 13 391*16467b97STreehugger Robot end 392*16467b97STreehugger Robot 393*16467b97STreehugger Robot def test_to_string 394*16467b97STreehugger Robot @source = MockSource.new 395*16467b97STreehugger Robot @source.tokens << new_token(12, 'foo') << 396*16467b97STreehugger Robot new_token(13, 'bar') << new_token(14, 'gnurz') << 397*16467b97STreehugger Robot new_token(15, 'blarz') 398*16467b97STreehugger Robot @stream = CommonTokenStream.new(@source) 399*16467b97STreehugger Robot @stream.to_s.should == "foobargnurzblarz" 400*16467b97STreehugger Robot @stream.to_s(1,2).should == 'bargnurz' 401*16467b97STreehugger Robot @stream.to_s(@stream[1], @stream[-2]).should == 'bargnurz' 402*16467b97STreehugger Robot end 403*16467b97STreehugger Robot 404*16467b97STreehugger Robot def new_token(type, opts = {}) 405*16467b97STreehugger Robot fields = {} 406*16467b97STreehugger Robot case type 407*16467b97STreehugger Robot when Hash then fields.update(type) 408*16467b97STreehugger Robot else 409*16467b97STreehugger Robot fields[:type] = type 410*16467b97STreehugger Robot end 411*16467b97STreehugger Robot case opts 412*16467b97STreehugger Robot when Hash then fields.update(opts) 413*16467b97STreehugger Robot when String then fields[:text] = opts 414*16467b97STreehugger Robot end 415*16467b97STreehugger Robot CommonToken.create(fields) 416*16467b97STreehugger Robot end 417*16467b97STreehugger Robot 418*16467b97STreehugger Robotend 419*16467b97STreehugger Robot 420*16467b97STreehugger Robot 421*16467b97STreehugger Robot__END__ 422*16467b97STreehugger Robotteststreams.py | LN | STATUS 423*16467b97STreehugger Robot----------------------------------------------+-----+-------------- 424*16467b97STreehugger Robotclass TestStringStream(unittest.TestCase) | 009 | [x] 425*16467b97STreehugger Robot def testSize(self) | 012 | [x] 426*16467b97STreehugger Robot def testIndex(self) | 020 | [x] 427*16467b97STreehugger Robot def testConsume(self) | 028 | [x] 428*16467b97STreehugger Robot def testReset(self) | 079 | [x] 429*16467b97STreehugger Robot def testLA(self) | 094 | [x] 430*16467b97STreehugger Robot def testSubstring(self) | 111 | [x] 431*16467b97STreehugger Robot def testSeekForward(self) | 122 | [x] 432*16467b97STreehugger Robot def testMark(self) | 150 | [x] 433*16467b97STreehugger Robot def testReleaseLast(self) | 167 | [x] 434*16467b97STreehugger Robot def testReleaseNested(self) | 186 | [x] 435*16467b97STreehugger Robot def testRewindLast(self) | 204 | [x] 436*16467b97STreehugger Robot def testRewindNested(self) | 223 | [x] 437*16467b97STreehugger Robotclass TestFileStream(unittest.TestCase) | 245 | [o] 438*16467b97STreehugger Robot def testNoEncoding(self) | 249 | [x] 439*16467b97STreehugger Robot def testEncoded(self) | 272 | [ ] 440*16467b97STreehugger Robotclass TestInputStream(unittest.TestCase) | 296 | [ ] 441*16467b97STreehugger Robot def testNoEncoding(self) | 299 | [ ] 442*16467b97STreehugger Robot def testEncoded(self) | 322 | [ ] 443*16467b97STreehugger Robotclass TestCommonTokenStream(unittest.TestCase)| 345 | [ ] 444*16467b97STreehugger Robot def setUp(self) | 348 | [x] 445*16467b97STreehugger Robot def testInit(self) | 369 | [x] 446*16467b97STreehugger Robot def testSetTokenSource(self) | 376 | [x] 447*16467b97STreehugger Robot def testLTEmptySource(self) | 385 | [x] 448*16467b97STreehugger Robot def testLT1(self) | 394 | [x] 449*16467b97STreehugger Robot def testLT1WithHidden(self) | 407 | [x] 450*16467b97STreehugger Robot def testLT2BeyondEnd(self) | 424 | [x] 451*16467b97STreehugger Robot def testLTNegative(self) | 442 | [x] 452*16467b97STreehugger Robot def testLB1(self) | 461 | [x] 453*16467b97STreehugger Robot def testLTZero(self) | 479 | [x] 454*16467b97STreehugger Robot def testLBBeyondBegin(self) | 496 | [x] 455*16467b97STreehugger Robot def testFillBuffer(self) | 523 | [x] 456*16467b97STreehugger Robot def testConsume(self) | 551 | [x] 457*16467b97STreehugger Robot def testSeek(self) | 579 | [x] 458*16467b97STreehugger Robot def testMarkRewind(self) | 604 | [x] 459*16467b97STreehugger Robot def testToString(self) | 631 | [x] 460*16467b97STreehugger Robot 461