require 'test/unit' require 'rx4' class TestLazy < Test::Unit::TestCase def test_plus_lazy assert_equal([], matchstr([:plus_lazy, [:lit, "a"]], "")) assert_equal([1], matchstr([:plus_lazy, [:lit, "a"]], "a")) assert_equal([1,2], matchstr([:plus_lazy, [:lit, "a"]], "aa")) assert_equal([1,2,3], matchstr([:plus_lazy, [:lit, "a"]], "aaa")) assert_equal([1,2,3,4], matchstr([:plus_lazy, [:lit, "a"]], "aaaa")) assert_equal([3], matchstr([:cat, [:plus_lazy, [:lit, "a"]], [:lit, "b"]], "aaba")) assert_equal([], matchstr([:cat, [:plus_lazy, [:lit, "a"]], [:lit, "b"]], "ba")) assert_equal([], matchstr([:cat, [:lit, "a"], [:cat, [:plus_lazy, [:lit, "b"]], [:lit, "c"]]], "ac")) end def test_times_lazy assert_equal([2,3,4], matchstr([:times_lazy, [:lit, "a"], 2, 4], "aaaaaa")) assert_equal([2,3,4], matchstr([:times_lazy, [:lit, "a"], 2, 4], "aaaaa")) assert_equal([2,3,4], matchstr([:times_lazy, [:lit, "a"], 2, 4], "aaaa")) assert_equal([2,3], matchstr([:times_lazy, [:lit, "a"], 2, 4], "aaa")) assert_equal([2], matchstr([:times_lazy, [:lit, "a"], 2, 4], "aa")) assert_equal([], matchstr([:times_lazy, [:lit, "a"], 2, 4], "a")) assert_equal([], matchstr([:times_lazy, [:lit, "a"], 2, 4], "")) assert_equal([2], matchstr([:times_lazy, [:lit, "a"], 2, 2], "aa")) end end