#!/usr/bin/ruby

var tests = [
    [/a/g, /b/i],
    [/a/i, /b/g],
    [/(a)/, /(b)/],
    [/a/i, :b],
    [/a/i, 1],
    [/a/x, /b/x],
    [/foo/aaxx, /bar/],
    [/foo/aaxx, /bar/xx],
    [/foo/axxa, /bar/xaa],
]

for x,y in (tests) {
    assert_eq(x + y, Regex("#{x}#{y}"))
}

do {
    var t = /(foo)/+/(bar)/i
    assert("fooBar" ~~ t)
    assert("FooBar" !~ t)
    assert(["fooBAR".match(t)...], ["foo", "BAR"])
}

do {
    var t = /(foo)/i+/(bar)/i
    assert("FooBar" ~~ t)
}

do {
    var t = /abc/i+'$42/3'
    assert('aBc$42/3' ~~ t)
    assert('aBc$42/3' ~~ eval(t.dump))
}

do {
    var t = /abc2/i+'$42\/3'
    assert('aBc2$42\/3' ~~ t)
    assert('aBc2$42\/3' ~~ eval(t.dump))
}

say "** Test passed!"