require 'test/unit' require 'rx3' class TestAbsPos < Test::Unit::TestCase def test_abspos_simple_hasmatch() assert_equal(0, hasmatch([:abspos, 0], "")) assert_equal(nil, hasmatch([:abspos, 1], "")) assert_equal(0, hasmatch([:abspos, 0], "abcdef")) assert_equal(3, hasmatch([:abspos, 3], "abcdef")) assert_equal(6, hasmatch([:abspos, 6], "abcdef")) assert_equal(nil, hasmatch([:abspos, 7], "abcdef")) end def test_abspos_complex_hasmatch() assert_equal(2, hasmatch([:cat, [:lit, "c"], [:abspos, 3]], "abcdef")) assert_equal(nil, hasmatch([:cat, [:lit, "d"], [:abspos, 3]], "abcdef")) assert_equal(2, hasmatch([:cat, [:lit, "c"], [:cat, [:abspos, 3], [:lit, "d"]]], "abcdef")) assert_equal(nil, hasmatch([:cat, [:lit, "b"], [:cat, [:abspos, 3], [:lit, "c"]]], "abcdef")) end def test_abspos_simple_matchstr() assert_equal([0], matchstr([:abspos, 0], "aaaaaa")) assert_equal([], matchstr([:abspos, 1], "aaaaaa")) end def test_abspos_complex_matchstr() assert_equal([3], matchstr([:cat, [:rep, [:lit, "a"]], [:abspos, 3]], "aaaaaa")) assert_equal([6,5,4,3], matchstr([:cat, [:rep, [:lit, "a"]], [:cat, [:abspos, 3], [:rep, [:lit, "a"]]]], "aaaaaa")) end end