diff options
author | Ian Lance Taylor <iant@google.com> | 2016-02-03 21:58:02 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-02-03 21:58:02 +0000 |
commit | f98dd1a338867a408f7c72d73fbad7fe7fc93e3a (patch) | |
tree | 2f8da9862a9c1fe0df138917f997b03439c02773 /libgo/go/regexp/onepass_test.go | |
parent | b081ed4efc144da0c45a6484aebfd10e0eb9fda3 (diff) | |
download | gcc-f98dd1a338867a408f7c72d73fbad7fe7fc93e3a.zip gcc-f98dd1a338867a408f7c72d73fbad7fe7fc93e3a.tar.gz gcc-f98dd1a338867a408f7c72d73fbad7fe7fc93e3a.tar.bz2 |
libgo: Update to go1.6rc1.
Reviewed-on: https://go-review.googlesource.com/19200
From-SVN: r233110
Diffstat (limited to 'libgo/go/regexp/onepass_test.go')
-rw-r--r-- | libgo/go/regexp/onepass_test.go | 99 |
1 files changed, 59 insertions, 40 deletions
diff --git a/libgo/go/regexp/onepass_test.go b/libgo/go/regexp/onepass_test.go index 7b2beea..8202ebe 100644 --- a/libgo/go/regexp/onepass_test.go +++ b/libgo/go/regexp/onepass_test.go @@ -140,47 +140,41 @@ var onePass = &onePassProg{} var onePassTests = []struct { re string onePass *onePassProg - prog string }{ - {`^(?:a|(?:a*))$`, notOnePass, noStr}, - {`^(?:(a)|(?:a*))$`, notOnePass, noStr}, - {`^(?:(?:(?:.(?:$))?))$`, onePass, `a`}, - {`^abcd$`, onePass, `abcd`}, - {`^abcd$`, onePass, `abcde`}, - {`^(?:(?:a{0,})*?)$`, onePass, `a`}, - {`^(?:(?:a+)*)$`, onePass, ``}, - {`^(?:(?:a|(?:aa)))$`, onePass, ``}, - {`^(?:[^\s\S])$`, onePass, ``}, - {`^(?:(?:a{3,4}){0,})$`, notOnePass, `aaaaaa`}, - {`^(?:(?:a+)*)$`, onePass, `a`}, - {`^(?:(?:(?:a*)+))$`, onePass, noStr}, - {`^(?:(?:a+)*)$`, onePass, ``}, - {`^[a-c]+$`, onePass, `abc`}, - {`^[a-c]*$`, onePass, `abcdabc`}, - {`^(?:a*)$`, onePass, `aaaaaaa`}, - {`^(?:(?:aa)|a)$`, onePass, `a`}, - {`^[a-c]*`, notOnePass, `abcdabc`}, - {`^[a-c]*$`, onePass, `abc`}, - {`^...$`, onePass, ``}, - {`^(?:a|(?:aa))$`, onePass, `a`}, - {`^[a-c]*`, notOnePass, `abcabc`}, - {`^a((b))c$`, onePass, noStr}, - {`^a.[l-nA-Cg-j]?e$`, onePass, noStr}, - {`^a((b))$`, onePass, noStr}, - {`^a(?:(b)|(c))c$`, onePass, noStr}, - {`^a(?:(b*)|(c))c$`, notOnePass, noStr}, - {`^a(?:b|c)$`, onePass, noStr}, - {`^a(?:b?|c)$`, onePass, noStr}, - {`^a(?:b?|c?)$`, notOnePass, noStr}, - {`^a(?:b?|c+)$`, onePass, noStr}, - {`^a(?:b+|(bc))d$`, notOnePass, noStr}, - {`^a(?:bc)+$`, onePass, noStr}, - {`^a(?:[bcd])+$`, onePass, noStr}, - {`^a((?:[bcd])+)$`, onePass, noStr}, - {`^a(:?b|c)*d$`, onePass, `abbbccbbcbbd"`}, - {`^.bc(d|e)*$`, onePass, `abcddddddeeeededd`}, - {`^(?:(?:aa)|.)$`, notOnePass, `a`}, - {`^(?:(?:a{1,2}){1,2})$`, notOnePass, `aaaa`}, + {`^(?:a|(?:a*))$`, notOnePass}, + {`^(?:(a)|(?:a*))$`, notOnePass}, + {`^(?:(?:(?:.(?:$))?))$`, onePass}, + {`^abcd$`, onePass}, + {`^(?:(?:a{0,})*?)$`, onePass}, + {`^(?:(?:a+)*)$`, onePass}, + {`^(?:(?:a|(?:aa)))$`, onePass}, + {`^(?:[^\s\S])$`, onePass}, + {`^(?:(?:a{3,4}){0,})$`, notOnePass}, + {`^(?:(?:(?:a*)+))$`, onePass}, + {`^[a-c]+$`, onePass}, + {`^[a-c]*$`, onePass}, + {`^(?:a*)$`, onePass}, + {`^(?:(?:aa)|a)$`, onePass}, + {`^[a-c]*`, notOnePass}, + {`^...$`, onePass}, + {`^(?:a|(?:aa))$`, onePass}, + {`^a((b))c$`, onePass}, + {`^a.[l-nA-Cg-j]?e$`, onePass}, + {`^a((b))$`, onePass}, + {`^a(?:(b)|(c))c$`, onePass}, + {`^a(?:(b*)|(c))c$`, notOnePass}, + {`^a(?:b|c)$`, onePass}, + {`^a(?:b?|c)$`, onePass}, + {`^a(?:b?|c?)$`, notOnePass}, + {`^a(?:b?|c+)$`, onePass}, + {`^a(?:b+|(bc))d$`, notOnePass}, + {`^a(?:bc)+$`, onePass}, + {`^a(?:[bcd])+$`, onePass}, + {`^a((?:[bcd])+)$`, onePass}, + {`^a(:?b|c)*d$`, onePass}, + {`^.bc(d|e)*$`, onePass}, + {`^(?:(?:aa)|.)$`, notOnePass}, + {`^(?:(?:a{1,2}){1,2})$`, notOnePass}, } func TestCompileOnePass(t *testing.T) { @@ -206,3 +200,28 @@ func TestCompileOnePass(t *testing.T) { } } } + +// TODO(cespare): Unify with onePassTests and rationalize one-pass test cases. +var onePassTests1 = []struct { + re string + match string +}{ + {`^a(/b+(#c+)*)*$`, "a/b#c"}, // golang.org/issue/11905 +} + +func TestRunOnePass(t *testing.T) { + for _, test := range onePassTests1 { + re, err := Compile(test.re) + if err != nil { + t.Errorf("Compile(%q): got err: %s", test.re, err) + continue + } + if re.onepass == notOnePass { + t.Errorf("Compile(%q): got notOnePass, want one-pass", test.re) + continue + } + if !re.MatchString(test.match) { + t.Errorf("onepass %q did not match %q", test.re, test.match) + } + } +} |