1 #!/usr/bin/ruby 2 # encoding: utf-8 3 4 require 'antlr3' 5 require 'test/unit' 6 require 'spec' 7 8 class DFASubclass < ANTLR3::DFA 9 EOT = [1, 2].freeze 10 EOF = [3, 4].freeze 11 MAX = [5, 6].freeze 12 MIN = [7, 8].freeze 13 ACCEPT = [9, 10, 11].freeze 14 SPECIAL = [12].freeze 15 TRANSITION = [ 16 [13, 14, 15, 16].freeze, 17 [].freeze 18 ].freeze 19 end 20 21 class TestDFA < Test::Unit::TestCase 22 def test_init 23 dfa = DFASubclass.new(nil, 1) 24 dfa.eot.should == DFASubclass::EOT 25 dfa.eof.should == DFASubclass::EOF 26 dfa.max.should == DFASubclass::MAX 27 dfa.min.should == DFASubclass::MIN 28 dfa.accept.should == DFASubclass::ACCEPT 29 dfa.special.should == DFASubclass::SPECIAL 30 dfa.transition.should == DFASubclass::TRANSITION 31 end 32 33 def test_unpack 34 packed = [ 35 1, 3, 1, 4, 2, -1, 1, 5, 18, -1, 1, 2, 36 25, -1, 1, 6, 6, -1, 26, 6, 4, -1, 1, 6, 37 1, -1, 26, 6 38 ] 39 unpacked = [ 40 3, 4, -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41 -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43 6, -1, -1, -1, -1, -1, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 44 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, -1, -1, -1, -1, 6, -1, 45 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 46 6, 6, 6, 6, 6 47 ] 48 49 ANTLR3::DFA.unpack(*packed).should == unpacked 50 end 51 52 end 53