test/choice_test.rb in citrus-2.1.2 vs test/choice_test.rb in citrus-2.2.0
- old
+ new
@@ -1,54 +1,30 @@
require File.expand_path('../helper', __FILE__)
class ChoiceTest < Test::Unit::TestCase
-
def test_terminal?
rule = Choice.new
assert_equal(false, rule.terminal?)
end
- def test_match
- rule = Choice.new(%w<a b>)
+ def test_exec
+ a = Rule.new('a')
+ b = Rule.new('b')
+ rule = Choice.new([ a, b ])
- match = rule.match(input(''))
- assert_equal(nil, match)
+ events = rule.exec(Input.new(''))
+ assert_equal([], events)
- match = rule.match(input('a'))
- assert(match)
- assert_equal('a', match)
- assert_equal(1, match.length)
- end
+ events = rule.exec(Input.new('a'))
+ assert(events)
+ assert_equal([rule.id, a.id, CLOSE, 1, CLOSE, 1], events)
- def test_match_multi
- rule = Choice.new(%w<a b>)
-
- match = rule.match(input('ab'))
- assert(match)
- assert_equal('a', match)
- assert_equal(1, match.length)
-
- match = rule.match(input('ba'))
- assert(match)
- assert_equal('b', match)
- assert_equal(1, match.length)
+ events = rule.exec(Input.new('b'))
+ assert(events)
+ assert_equal([rule.id, b.id, CLOSE, 1, CLOSE, 1], events)
end
- def test_match_embed
- rule = Choice.new([ /\d+/, Choice.new(%w<+ ->) ])
-
- match = rule.match(input('1+'))
- assert(match)
- assert_equal('1', match)
- assert_equal(1, match.length)
-
- match = rule.match(input('+1'))
- assert(match)
- assert_equal('+', match)
- assert_equal(1, match.length)
- end
-
def test_to_s
rule = Choice.new(%w<a b>)
assert_equal('"a" | "b"', rule.to_s)
end
@@ -56,7 +32,6 @@
rule1 = Choice.new(%w<a b>)
rule2 = Choice.new(%w<c d>)
rule = Choice.new([rule1, rule2])
assert_equal('("a" | "b") | ("c" | "d")', rule.to_s)
end
-
end