mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-31 15:06:26 +00:00
126 lines
3.5 KiB
Go
126 lines
3.5 KiB
Go
|
package regexutil
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestRegexMatchString(t *testing.T) {
|
||
|
f := func(regex, s string, resultExpected bool) {
|
||
|
t.Helper()
|
||
|
|
||
|
re, err := NewRegex(regex)
|
||
|
if err != nil {
|
||
|
t.Fatalf("cannot parse %q: %s", regex, err)
|
||
|
}
|
||
|
result := re.MatchString(s)
|
||
|
if result != resultExpected {
|
||
|
t.Fatalf("unexpected result when matching %q against regex=%q; got %v; want %v", s, regex, result, resultExpected)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
f("", "", true)
|
||
|
f("", "foo", true)
|
||
|
f("foo", "", false)
|
||
|
f(".*", "", true)
|
||
|
f(".*", "foo", true)
|
||
|
f(".+", "", false)
|
||
|
f(".+", "foo", true)
|
||
|
f("foo.*", "bar", false)
|
||
|
f("foo.*", "foo", true)
|
||
|
f("foo.*", "a foo", true)
|
||
|
f("foo.*", "a foo a", true)
|
||
|
f("foo.*", "foobar", true)
|
||
|
f("foo.*", "a foobar", true)
|
||
|
f("foo.+", "bar", false)
|
||
|
f("foo.+", "foo", false)
|
||
|
f("foo.+", "a foo", false)
|
||
|
f("foo.+", "foobar", true)
|
||
|
f("foo.+", "a foobar", true)
|
||
|
f("foo|bar", "", false)
|
||
|
f("foo|bar", "a", false)
|
||
|
f("foo|bar", "foo", true)
|
||
|
f("foo|bar", "a foo", true)
|
||
|
f("foo|bar", "foo a", true)
|
||
|
f("foo|bar", "a foo a", true)
|
||
|
f("foo|bar", "bar", true)
|
||
|
f("foo|bar", "foobar", true)
|
||
|
f("foo(bar|baz)", "a", false)
|
||
|
f("foo(bar|baz)", "foobar", true)
|
||
|
f("foo(bar|baz)", "foobaz", true)
|
||
|
f("foo(bar|baz)", "foobaza", true)
|
||
|
f("foo(bar|baz)", "a foobaz a", true)
|
||
|
f("foo(bar|baz)", "foobal", false)
|
||
|
f("^foo|b(ar)$", "foo", true)
|
||
|
f("^foo|b(ar)$", "foo a", true)
|
||
|
f("^foo|b(ar)$", "a foo", false)
|
||
|
f("^foo|b(ar)$", "bar", true)
|
||
|
f("^foo|b(ar)$", "a bar", true)
|
||
|
f("^foo|b(ar)$", "barz", false)
|
||
|
f("^foo|b(ar)$", "ar", false)
|
||
|
f(".*foo.*", "foo", true)
|
||
|
f(".*foo.*", "afoobar", true)
|
||
|
f(".*foo.*", "abc", false)
|
||
|
f("foo.*bar.*", "foobar", true)
|
||
|
f("foo.*bar.*", "foo_bar_", true)
|
||
|
f("foo.*bar.*", "a foo bar baz", true)
|
||
|
f("foo.*bar.*", "foobaz", false)
|
||
|
f("foo.*bar.*", "baz foo", false)
|
||
|
f(".+foo.+", "foo", false)
|
||
|
f(".+foo.+", "afoobar", true)
|
||
|
f(".+foo.+", "afoo", false)
|
||
|
f(".+foo.+", "abc", false)
|
||
|
f("foo.+bar.+", "foobar", false)
|
||
|
f("foo.+bar.+", "foo_bar_", true)
|
||
|
f("foo.+bar.+", "a foo_bar_", true)
|
||
|
f("foo.+bar.+", "foobaz", false)
|
||
|
f("foo.+bar.+", "abc", false)
|
||
|
f(".+foo.*", "foo", false)
|
||
|
f(".+foo.*", "afoo", true)
|
||
|
f(".+foo.*", "afoobar", true)
|
||
|
f(".*(a|b).*", "a", true)
|
||
|
f(".*(a|b).*", "ax", true)
|
||
|
f(".*(a|b).*", "xa", true)
|
||
|
f(".*(a|b).*", "xay", true)
|
||
|
f(".*(a|b).*", "xzy", false)
|
||
|
f("^(?:true)$", "true", true)
|
||
|
f("^(?:true)$", "false", false)
|
||
|
|
||
|
f(".+;|;.+", ";", false)
|
||
|
f(".+;|;.+", "foo", false)
|
||
|
f(".+;|;.+", "foo;bar", true)
|
||
|
f(".+;|;.+", "foo;", true)
|
||
|
f(".+;|;.+", ";foo", true)
|
||
|
f(".+foo|bar|baz.+", "foo", false)
|
||
|
f(".+foo|bar|baz.+", "afoo", true)
|
||
|
f(".+foo|bar|baz.+", "fooa", false)
|
||
|
f(".+foo|bar|baz.+", "afooa", true)
|
||
|
f(".+foo|bar|baz.+", "bar", true)
|
||
|
f(".+foo|bar|baz.+", "abar", true)
|
||
|
f(".+foo|bar|baz.+", "abara", true)
|
||
|
f(".+foo|bar|baz.+", "bara", true)
|
||
|
f(".+foo|bar|baz.+", "baz", false)
|
||
|
f(".+foo|bar|baz.+", "baza", true)
|
||
|
f(".+foo|bar|baz.+", "abaz", false)
|
||
|
f(".+foo|bar|baz.+", "abaza", true)
|
||
|
f(".+foo|bar|baz.+", "afoo|bar|baza", true)
|
||
|
f(".+(foo|bar|baz).+", "bar", false)
|
||
|
f(".+(foo|bar|baz).+", "bara", false)
|
||
|
f(".+(foo|bar|baz).+", "abar", false)
|
||
|
f(".+(foo|bar|baz).+", "abara", true)
|
||
|
f(".+(foo|bar|baz).+", "afooa", true)
|
||
|
f(".+(foo|bar|baz).+", "abaza", true)
|
||
|
|
||
|
f(".*;|;.*", ";", true)
|
||
|
f(".*;|;.*", "foo", false)
|
||
|
f(".*;|;.*", "foo;bar", true)
|
||
|
f(".*;|;.*", "foo;", true)
|
||
|
f(".*;|;.*", ";foo", true)
|
||
|
|
||
|
f("^bar", "foobarbaz", false)
|
||
|
f("^foo", "foobarbaz", true)
|
||
|
f("bar$", "foobarbaz", false)
|
||
|
f("baz$", "foobarbaz", true)
|
||
|
f("(bar$|^foo)", "foobarbaz", true)
|
||
|
f("(bar$^boo)", "foobarbaz", false)
|
||
|
}
|