rockit 0.7.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README +24 -160
- data/TODO +17 -17
- data/VERSION +1 -1
- data/doc/rockit_paper.pdf +0 -0
- data/lib/packrat/grammar.rb +139 -84
- data/rakefile +27 -9
- data/tests/acceptance/packrat/java/atest_java.rb +37 -0
- data/tests/acceptance/packrat/java/java.rb +136 -0
- data/tests/acceptance/packrat/java/t.rb +10 -0
- data/tests/acceptance/packrat/java/todo +10 -0
- data/tests/acceptance/packrat/java/xtc.lang.java/Java.rats +446 -0
- data/tests/acceptance/packrat/java/xtc.lang.java/JavaConstant.rats +111 -0
- data/tests/acceptance/packrat/java/xtc.lang.java/JavaCore.rats +508 -0
- data/tests/acceptance/packrat/java/xtc.lang.java/JavaIdentifier.rats +62 -0
- data/tests/acceptance/packrat/java/xtc.lang.java/JavaSymbol.rats +38 -0
- data/tests/acceptance/packrat/java/xtc.lang.java/JavaTree.rats +40 -0
- data/tests/acceptance/packrat/java/xtc.lang.java/JavaType.rats +61 -0
- data/tests/acceptance/packrat/java/xtc.lang.java/Spacing.rats +36 -0
- data/tests/acceptance/packrat/java/xtc.lang.java/Symbol.rats +77 -0
- data/tests/acceptance/packrat/minibasic/README +13 -0
- data/tests/acceptance/packrat/minibasic/atest_minibasic.rb +151 -13
- data/tests/acceptance/packrat/minibasic/minibasic.rb +94 -76
- data/tests/acceptance/packrat/minibasic/mult3.basic +6 -0
- data/tests/acceptance/packrat/minibasic/sumeven.basic +19 -0
- data/tests/unit/packrat/test_ast.rb +116 -0
- data/tests/unit/packrat/test_interpreting_parser.rb +15 -55
- metadata +22 -59
- data/lib/rockit/prettyprint/box.rb +0 -60
- data/lib/rockit/prettyprint/renderer.rb +0 -41
- data/lib/rockit/prettyprint/text_renderer.rb +0 -47
- data/lib/rockit/tree/base.rb +0 -223
- data/lib/rockit/tree/enter_leave_visitor.rb +0 -12
- data/lib/rockit/tree/graphviz.rb +0 -69
- data/lib/rockit/tree/visitor.rb +0 -12
- data/lib/util/array_alternatives.rb +0 -20
- data/lib/util/enter_leave_visitor.rb +0 -69
- data/lib/util/graphviz_dot.rb +0 -182
- data/lib/util/string_location.rb +0 -42
- data/lib/util/visitor.rb +0 -49
- data/lib/util/visitor_combinators.rb +0 -14
- data/tests/acceptance/rockit/dparser/atest_any_operator.rb +0 -33
- data/tests/acceptance/rockit/dparser/atest_arithmetic_grammar.rb +0 -30
- data/tests/acceptance/rockit/dparser/atest_list_operator.rb +0 -57
- data/tests/acceptance/rockit/dparser/atest_mult_operator.rb +0 -60
- data/tests/acceptance/rockit/dparser/atest_operator_grammar.rb +0 -61
- data/tests/acceptance/rockit/dparser/atest_plus_operator.rb +0 -55
- data/tests/acceptance/rockit/dparser/atest_samples_calculator.rb +0 -14
- data/tests/acceptance/rockit/dparser/atest_samples_minibasic.rb +0 -20
- data/tests/acceptance/rockit/dparser/atest_samples_multifunccalculator.rb +0 -36
- data/tests/acceptance/rockit/dparser/atest_simple_grammar.rb +0 -34
- data/tests/acceptance/rockit/dparser/atest_speculative_code_action.rb +0 -128
- data/tests/acceptance/rockit/dparser/calc_tests_common.rb +0 -103
- data/tests/unit/parse/utest_ebnf_grammar.rb +0 -50
- data/tests/unit/parse/utest_expand_grammar.rb +0 -23
- data/tests/unit/parse/utest_grammar.rb +0 -160
- data/tests/unit/rockit/assembler/llvm/utest_instructions.rb +0 -41
- data/tests/unit/rockit/assembler/llvm/utest_module.rb +0 -19
- data/tests/unit/rockit/prettyprint/utest_box.rb +0 -44
- data/tests/unit/rockit/tree/utest_tree_base.rb +0 -301
- data/tests/unit/rockit/tree/utest_tree_enter_leave_visitor.rb +0 -69
- data/tests/unit/rockit/tree/utest_tree_visitor.rb +0 -63
- data/tests/unit/rockit/utest_grammar.rb +0 -145
- data/tests/unit/rockit/utest_grammar_symbol.rb +0 -11
- data/tests/unit/rockit/utest_maybe_operator.rb +0 -12
- data/tests/unit/rockit/utest_regexp_terminal.rb +0 -45
- data/tests/unit/rockit/utest_repetition_operators.rb +0 -35
- data/tests/unit/rockit/utest_rule.rb +0 -23
- data/tests/unit/rockit/utest_string_terminal.rb +0 -40
- data/tests/unit/util/utest_array_alternatives.rb +0 -23
- data/tests/unit/util/utest_enter_leave_visitor.rb +0 -89
- data/tests/unit/util/utest_string_location.rb +0 -42
- data/tests/unit/util/utest_visitor.rb +0 -92
- data/tests/unit/util/utest_visitor_combinators.rb +0 -64
@@ -1,103 +0,0 @@
|
|
1
|
-
# Tests common to several calculators
|
2
|
-
module CalcTestsCommon
|
3
|
-
def parser
|
4
|
-
@parser ||= @grammar.new_parser
|
5
|
-
end
|
6
|
-
|
7
|
-
def test_01_grammar
|
8
|
-
assert_kind_of(Rockit::DParser::Grammar, @grammar)
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_02_creation_of_parser
|
12
|
-
assert_kind_of(Rockit::DParser::Parser, parser)
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_03_constant
|
16
|
-
ast = parser.parse "1234567890"
|
17
|
-
assert_equal("Constant", ast.name)
|
18
|
-
assert_kind_of(parser.astclass_of_name(:Constant), ast)
|
19
|
-
assert_equal(1, ast.num_children)
|
20
|
-
assert_equal("1234567890", ast[0])
|
21
|
-
assert_equal("1234567890", ast.num)
|
22
|
-
end
|
23
|
-
|
24
|
-
Ops = [["+", :Plus], ["-", :Minus], ["*", :Mul], ["/", :Div]]
|
25
|
-
|
26
|
-
def test_04_operators
|
27
|
-
Ops.each do |op, n|
|
28
|
-
num1, num2 = rand(10).to_s, rand(10).to_s
|
29
|
-
str = num1 + op + num2
|
30
|
-
ast = parser.parse str
|
31
|
-
assert_equal(n.to_s, ast.name)
|
32
|
-
assert_kind_of(parser.astclass_of_name(n), ast)
|
33
|
-
assert_equal(2, ast.num_children)
|
34
|
-
|
35
|
-
assert_kind_of(parser.astclass_of_name(:Constant), ast[0])
|
36
|
-
assert_equal(num1, ast[0].num)
|
37
|
-
assert_kind_of(parser.astclass_of_name(:Constant), ast.left)
|
38
|
-
assert_equal(num1, ast.left.num)
|
39
|
-
|
40
|
-
assert_kind_of(parser.astclass_of_name(:Constant), ast[1])
|
41
|
-
assert_equal(num2, ast[1].num)
|
42
|
-
assert_kind_of(parser.astclass_of_name(:Constant), ast.right)
|
43
|
-
assert_equal(num2, ast.right.num)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_05_paren
|
48
|
-
ast = parser.parse "2 * (4 + 67)"
|
49
|
-
assert_kind_of(parser.astclass_of_name(:Mul), ast)
|
50
|
-
assert_equal(2, ast.num_children)
|
51
|
-
|
52
|
-
assert_kind_of(parser.astclass_of_name(:Constant), ast.left)
|
53
|
-
assert_equal("2", ast.left.num)
|
54
|
-
|
55
|
-
assert_kind_of(parser.astclass_of_name(:Plus), ast.right)
|
56
|
-
|
57
|
-
assert_kind_of(parser.astclass_of_name(:Constant), ast.right.left)
|
58
|
-
assert_equal("4", ast.right.left.num)
|
59
|
-
|
60
|
-
assert_kind_of(parser.astclass_of_name(:Constant), ast.right.right)
|
61
|
-
assert_equal("67", ast.right.right.num)
|
62
|
-
|
63
|
-
assert_equal('Mul[Constant["2"], Plus[Constant["4"], Constant["67"]]]',
|
64
|
-
ast.inspect)
|
65
|
-
end
|
66
|
-
|
67
|
-
def assert_calc(expected, str)
|
68
|
-
assert_equal(expected, @calculator.eval(parser.parse(str)))
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_06_left_associative_operators
|
72
|
-
Ops.each do |op, name|
|
73
|
-
ast = parser.parse "1 #{op} 2 #{op} 3"
|
74
|
-
assert_kind_of(parser.astclass_of_name(name), ast)
|
75
|
-
|
76
|
-
assert_kind_of(parser.astclass_of_name(name), ast.left)
|
77
|
-
assert_equal("1", ast.left.left.num)
|
78
|
-
assert_equal("2", ast.left.right.num)
|
79
|
-
|
80
|
-
assert_kind_of(parser.astclass_of_name(:Constant), ast.right)
|
81
|
-
assert_equal("3", ast.right.num)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_07_mul_higher_precedence_than_plus
|
86
|
-
ast = parser.parse "1 + 2 * 3"
|
87
|
-
assert_kind_of(parser.astclass_of_name(:Plus), ast)
|
88
|
-
|
89
|
-
assert_kind_of(parser.astclass_of_name(:Constant), ast.left)
|
90
|
-
assert_equal("1", ast.left.num)
|
91
|
-
|
92
|
-
assert_kind_of(parser.astclass_of_name(:Mul), ast.right)
|
93
|
-
assert_equal("2", ast.right.left.num)
|
94
|
-
assert_equal("3", ast.right.right.num)
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_08_eval
|
98
|
-
assert_calc(2, "2")
|
99
|
-
assert_calc(2 * (4+67), "2 * (4 + 67)")
|
100
|
-
assert_calc(987 * (456+671), "987*(456+671)")
|
101
|
-
assert_calc((9-5) * (100/10), "(9-5) * (100/10)")
|
102
|
-
end
|
103
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
require 'parse/ebnf_grammar'
|
4
|
-
include Parse::Grammar
|
5
|
-
|
6
|
-
class UT_Parse_ebnf_grammar < Test::Unit::TestCase
|
7
|
-
def test_01_Maybe_expansion
|
8
|
-
g = Grammar.new do
|
9
|
-
r :Start, [
|
10
|
-
[maybe(:A), "1"]
|
11
|
-
]
|
12
|
-
r :A, ["a"]
|
13
|
-
end
|
14
|
-
g.expand!
|
15
|
-
assert_equal(3, g.nonterminals.length)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_02_Plus_expansion
|
19
|
-
g = Grammar.new do
|
20
|
-
r :Start, [
|
21
|
-
[plus(:A), "1"]
|
22
|
-
]
|
23
|
-
r :A, ["a"]
|
24
|
-
end
|
25
|
-
g.expand!
|
26
|
-
assert_equal(4, g.nonterminals.length)
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_03_Mult_expansion
|
30
|
-
g = Grammar.new do
|
31
|
-
r :Start, [
|
32
|
-
[mult(:A), "1"]
|
33
|
-
]
|
34
|
-
r :A, ["a"]
|
35
|
-
end
|
36
|
-
g.expand!
|
37
|
-
assert_equal(3, g.nonterminals.length)
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_04_Group_expansion
|
41
|
-
g = Grammar.new do
|
42
|
-
r :Start, [
|
43
|
-
[group("1", "2"), "3"]
|
44
|
-
]
|
45
|
-
end
|
46
|
-
g.expand!
|
47
|
-
puts g.inspect
|
48
|
-
assert_equal(2, g.nonterminals.length)
|
49
|
-
end
|
50
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
require 'parse/expand_grammar'
|
4
|
-
include Parse::Grammar
|
5
|
-
|
6
|
-
class UT_Parse_expand_grammar < Test::Unit::TestCase
|
7
|
-
def test_01_internal_nonterm_num
|
8
|
-
g = Grammar.new
|
9
|
-
assert_equal(1, g.next_free_internal_nonterminal_num)
|
10
|
-
assert_equal(2, g.next_free_internal_nonterminal_num)
|
11
|
-
assert_equal(3, g.next_free_internal_nonterminal_num)
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_02_create_fresh_nonterminal
|
15
|
-
g = Grammar.new
|
16
|
-
nt = g.create_fresh_nonterminal
|
17
|
-
assert_kind_of(NonTerminal, nt)
|
18
|
-
|
19
|
-
# The name should start with the prefix
|
20
|
-
re = Regexp.new("^" + Grammar::InternalNontermNamePrefix)
|
21
|
-
assert_match(re, nt.name.to_s)
|
22
|
-
end
|
23
|
-
end
|
@@ -1,160 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
require 'parse/grammar'
|
4
|
-
include Parse::Grammar
|
5
|
-
|
6
|
-
class UT_Parse_Grammar < Test::Unit::TestCase
|
7
|
-
def test_01_Symbol
|
8
|
-
s = Parse::Grammar::GrammarSymbol.new "name"
|
9
|
-
assert_equal("name", s.name)
|
10
|
-
assert_equal("name", s.inspect)
|
11
|
-
assert_equal(s, s.to_grammar_symbol)
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_02_Symbol_name_not_needed
|
15
|
-
s = Parse::Grammar::GrammarSymbol.new
|
16
|
-
assert_equal(nil, s.name)
|
17
|
-
assert_equal(s, s.to_grammar_symbol)
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_03_NonTerminal
|
21
|
-
s = NonTerminal.new :name
|
22
|
-
assert_equal(:name, s.name)
|
23
|
-
assert_equal("name", s.inspect)
|
24
|
-
assert_kind_of(Parse::Grammar::GrammarSymbol, s)
|
25
|
-
assert_equal(s, s.to_grammar_symbol)
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_04_Terminal
|
29
|
-
s = Terminal.new
|
30
|
-
assert_kind_of(Parse::Grammar::GrammarSymbol, s)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_05_Production
|
34
|
-
p = Production.new(n = NonTerminal.new(:N), [t = Terminal.new(:T)])
|
35
|
-
assert_equal(n, p.symbol)
|
36
|
-
assert_equal(t, p.rhs.first)
|
37
|
-
assert_equal(t, p.right_hand_side.first)
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_06_Production_short_hand
|
41
|
-
p = Prod[n = NonTerminal.new(:N), [t = Terminal.new(:T)]]
|
42
|
-
assert_equal(n, p.symbol)
|
43
|
-
assert_equal(t, p.rhs.first)
|
44
|
-
assert_equal(t, p.right_hand_side.first)
|
45
|
-
|
46
|
-
p2 = Prod[:N, [t]]
|
47
|
-
assert_equal("N", p2.symbol.inspect)
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_07_nonterminal_equality
|
51
|
-
n1 = NonTerminal.new(:N)
|
52
|
-
n2 = NonTerminal.new(:N)
|
53
|
-
assert(n1 == n2)
|
54
|
-
assert(n2 == n1)
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_08_Rule
|
58
|
-
p1 = Prod[n = NonTerminal.new(:N), [Terminal.new(:T1)]]
|
59
|
-
p2 = Prod[:N, [Terminal.new(:T2)]]
|
60
|
-
r = Rule[p1]
|
61
|
-
|
62
|
-
assert(n == r.symbol)
|
63
|
-
assert_equal(1, r.productions.length)
|
64
|
-
|
65
|
-
r.add_production p2
|
66
|
-
assert_equal(n, r.symbol)
|
67
|
-
assert_equal(2, r.productions.length)
|
68
|
-
|
69
|
-
assert_raises(ArgumentError) {r.add_production(Prod[:N2, [Terminal[:T3]]])}
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_09_Grammar
|
73
|
-
g = Grammar.new(:name => "Test Grammar 1", :author => "Robert")
|
74
|
-
assert_kind_of(Grammar, g)
|
75
|
-
assert_equal("Test Grammar 1", g.meta[:name])
|
76
|
-
assert_equal("Robert", g.meta[:author])
|
77
|
-
assert_equal(0, g.rules.length)
|
78
|
-
assert_equal(0, g.nonterminals.length)
|
79
|
-
assert_equal(0, g.terminals.length)
|
80
|
-
assert_equal(0, g.symbols.length)
|
81
|
-
|
82
|
-
g.add_rule(Rule[Prod[:N, [Terminal[:T1]]]])
|
83
|
-
assert_equal(1, g.rules.length)
|
84
|
-
assert_equal(1, g.nonterminals.length)
|
85
|
-
assert_equal(1, g.terminals.length)
|
86
|
-
assert_equal(2, g.symbols.length)
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_10_symbol_predicates
|
90
|
-
nt = NonTerminal[:N]
|
91
|
-
assert_equal(true, nt.nonterminal?)
|
92
|
-
assert_equal(false, nt.terminal?)
|
93
|
-
assert_equal(false, nt.action?)
|
94
|
-
|
95
|
-
t = Terminal[:T]
|
96
|
-
assert_equal(false, t.nonterminal?)
|
97
|
-
assert_equal(true, t.terminal?)
|
98
|
-
assert_equal(false, t.action?)
|
99
|
-
|
100
|
-
a = Action[:A]
|
101
|
-
assert_equal(false, a.nonterminal?)
|
102
|
-
assert_equal(false, a.terminal?)
|
103
|
-
assert_equal(true, a.action?)
|
104
|
-
end
|
105
|
-
|
106
|
-
class TestGrammar < Grammar
|
107
|
-
r :S, [[:B]]
|
108
|
-
r :B, [
|
109
|
-
[Terminal.new(:T1)],
|
110
|
-
[Terminal.new(:T2), Terminal.new(:T3)],
|
111
|
-
]
|
112
|
-
t :CT1, ["A"]
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_11_embedded_grammar_def
|
116
|
-
t = TestGrammar.new
|
117
|
-
|
118
|
-
assert_equal(2, t.rules.length)
|
119
|
-
|
120
|
-
assert_equal(:S, t.rules.first.symbol.name)
|
121
|
-
assert_equal(1, t.rules.first.productions.length)
|
122
|
-
|
123
|
-
assert_equal(:B, t.rules.last.symbol.name)
|
124
|
-
assert_equal(2, t.rules.last.productions.length)
|
125
|
-
assert_equal(:T1, t.rules.last.productions.first.rhs.first.name)
|
126
|
-
assert_equal(:T2, t.rules.last.productions.last.rhs.first.name)
|
127
|
-
assert_equal(:T3, t.rules.last.productions.last.rhs.last.name)
|
128
|
-
|
129
|
-
assert_equal(1, t.complex_terminals.length)
|
130
|
-
|
131
|
-
assert_equal(:CT1, t.complex_terminals.first.name)
|
132
|
-
end
|
133
|
-
|
134
|
-
TestDeepClone = Struct.new(:a)
|
135
|
-
|
136
|
-
def test_12_deep_clone
|
137
|
-
a = [1,2,3]
|
138
|
-
t1 = TestDeepClone.new(a)
|
139
|
-
t1a = t1.clone
|
140
|
-
t1b = t1.deep_clone
|
141
|
-
assert_equal(t1.a.object_id, t1a.a.object_id)
|
142
|
-
assert_not_equal(t1.a.object_id, t1b.a.object_id)
|
143
|
-
end
|
144
|
-
|
145
|
-
def test_13_define_grammar_in_a_block
|
146
|
-
g = Grammar.new do
|
147
|
-
r :S, [["a", :B]]
|
148
|
-
r :B, [["b"]]
|
149
|
-
end
|
150
|
-
assert_equal(2, g.nonterminals.length)
|
151
|
-
end
|
152
|
-
|
153
|
-
def test_14_extending_a_grammar_with_a_block
|
154
|
-
g = TestGrammar.new do
|
155
|
-
r :A, [["a"]]
|
156
|
-
end
|
157
|
-
# Two nonterminals in the original grammar and one new here => 3
|
158
|
-
assert_equal(3, g.nonterminals.length)
|
159
|
-
end
|
160
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
require 'rockit/assembler/llvm/instructions'
|
4
|
-
include Rockit::Assembler::LLVM
|
5
|
-
|
6
|
-
class UTestLLVMInstructions < Test::Unit::TestCase
|
7
|
-
def test_01_NamedValue_valid
|
8
|
-
nv1 = NamedValue.new("foo")
|
9
|
-
assert_equal("%foo", nv1.to_llvm)
|
10
|
-
|
11
|
-
nv2 = NamedValue.new("DivByZero")
|
12
|
-
assert_equal("%DivByZero", nv2.to_llvm)
|
13
|
-
|
14
|
-
nv3 = NamedValue.new("a.really.long.identifier")
|
15
|
-
assert_equal("%a.really.long.identifier", nv3.to_llvm)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_02_NamedValue_invalid
|
19
|
-
assert_raises(ArgumentError) {NamedValue.new("12")}
|
20
|
-
assert_raises(ArgumentError) {NamedValue.new("%")}
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_03_UnnamedValue_valid
|
24
|
-
u1 = UnnamedValue.new(0)
|
25
|
-
assert_equal("%0", u1.to_llvm)
|
26
|
-
|
27
|
-
u2 = UnnamedValue.new(12)
|
28
|
-
assert_equal("%12", u2.to_llvm)
|
29
|
-
|
30
|
-
u3 = UnnamedValue.new(2)
|
31
|
-
assert_equal("%2", u3.to_llvm)
|
32
|
-
|
33
|
-
u4 = UnnamedValue.new(44)
|
34
|
-
assert_equal("%44", u4.to_llvm)
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_04_UnnamedValue_invalid
|
38
|
-
assert_raises(ArgumentError) {UnnamedValue.new(-1)}
|
39
|
-
assert_raises(ArgumentError) {UnnamedValue.new(-18743)}
|
40
|
-
end
|
41
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
require 'rockit/assembler/llvm/module'
|
4
|
-
include Rockit::Assembler::LLVM
|
5
|
-
|
6
|
-
class UTestLLVMInstructions < Test::Unit::TestCase
|
7
|
-
# Hello world example module
|
8
|
-
class TestModule1 < LLVM::Module
|
9
|
-
LC0 = internal constant '[13 x sbyte]' c("hello world\0A")
|
10
|
-
|
11
|
-
declare int "puts", [sbytep]
|
12
|
-
|
13
|
-
defmethod("main", int, []) do
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def te
|
19
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
require 'rockit/prettyprint/box'
|
4
|
-
include Rockit::PrettyPrint
|
5
|
-
|
6
|
-
class UTestBox < Test::Unit::TestCase
|
7
|
-
def setup
|
8
|
-
@h = Box::H.new(1, "a")
|
9
|
-
@h1 = Box::H.new(1, "a", "b")
|
10
|
-
@h2 = Box::H.new(2, "a", "b")
|
11
|
-
@h3 = Box::H.new(3, "a", "b", "c")
|
12
|
-
@v = Box::V.new("a", "2 2", "c")
|
13
|
-
@e = Box::Epsilon.new("x", " ", ":=")
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_01_creation
|
17
|
-
assert_kind_of(Box::H, @h)
|
18
|
-
assert_equal(1, @h.num_spaces)
|
19
|
-
assert_equal(["a"], @h.elements)
|
20
|
-
|
21
|
-
assert_kind_of(Box::H, @h3)
|
22
|
-
assert_equal(3, @h3.num_spaces)
|
23
|
-
assert_equal(["a", "b", "c"], @h3.elements)
|
24
|
-
|
25
|
-
assert_kind_of(Box::V, @v)
|
26
|
-
assert_equal(["a", "2 2", "c"], @v.elements)
|
27
|
-
|
28
|
-
assert_kind_of(Box::Epsilon, @e)
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_02_render
|
32
|
-
assert_equal("a", @h.render)
|
33
|
-
assert_equal("a b", @h1.render)
|
34
|
-
assert_equal("a b", @h2.render)
|
35
|
-
assert_equal("a b c", @h3.render)
|
36
|
-
assert_equal("a\n2 2\nc", @v.render)
|
37
|
-
assert_equal("x :=", @e.render)
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_03_prepend
|
41
|
-
p = Box::Prepend["#", "A comment"]
|
42
|
-
assert_equal("# A comment", p.render)
|
43
|
-
end
|
44
|
-
end
|