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 Gruverclass DFASubclass < ANTLR3::DFA
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  EOT = [1, 2].freeze
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  EOF = [3, 4].freeze
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  MAX = [5, 6].freeze
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  MIN = [7, 8].freeze
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  ACCEPT = [9, 10, 11].freeze
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  SPECIAL = [12].freeze
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  TRANSITION = [
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    [13, 14, 15, 16].freeze,
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    [].freeze
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  ].freeze
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestDFA < Test::Unit::TestCase
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  def test_init
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    dfa = DFASubclass.new(nil, 1)
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    dfa.eot.should == DFASubclass::EOT
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    dfa.eof.should == DFASubclass::EOF
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    dfa.max.should == DFASubclass::MAX
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    dfa.min.should == DFASubclass::MIN
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    dfa.accept.should == DFASubclass::ACCEPT
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    dfa.special.should == DFASubclass::SPECIAL
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    dfa.transition.should == DFASubclass::TRANSITION
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  end
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  def test_unpack
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    packed = [
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      1, 3, 1, 4, 2, -1, 1, 5, 18, -1, 1, 2,
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      25, -1, 1, 6, 6, -1, 26, 6, 4, -1, 1, 6,
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      1, -1, 26, 6
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ]
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    unpacked = [
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      3, 4, -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1,
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      6, -1, -1, -1, -1, -1, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, -1, -1, -1, -1, 6, -1,
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      6, 6, 6, 6, 6
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ]
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ANTLR3::DFA.unpack(*packed).should == unpacked
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  end
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend
53