aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/regexp/onepass_test.go
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2016-02-03 21:58:02 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2016-02-03 21:58:02 +0000
commitf98dd1a338867a408f7c72d73fbad7fe7fc93e3a (patch)
tree2f8da9862a9c1fe0df138917f997b03439c02773 /libgo/go/regexp/onepass_test.go
parentb081ed4efc144da0c45a6484aebfd10e0eb9fda3 (diff)
downloadgcc-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.go99
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)
+ }
+ }
+}