aboutsummaryrefslogtreecommitdiff
path: root/src/regexp/syntax/parse_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/regexp/syntax/parse_test.go')
-rw-r--r--src/regexp/syntax/parse_test.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/regexp/syntax/parse_test.go b/src/regexp/syntax/parse_test.go
index d7999046e0..0f885bd5c8 100644
--- a/src/regexp/syntax/parse_test.go
+++ b/src/regexp/syntax/parse_test.go
@@ -590,3 +590,39 @@ func TestToStringEquivalentParse(t *testing.T) {
}
}
}
+
+var stringTests = []struct {
+ re string
+ out string
+}{
+ {`x(?i:ab*c|d?e)1`, `x(?i:AB*C|D?E)1`},
+ {`x(?i:ab*cd?e)1`, `x(?i:AB*CD?E)1`},
+ {`0(?i:ab*c|d?e)1`, `(?i:0(?:AB*C|D?E)1)`},
+ {`0(?i:ab*cd?e)1`, `(?i:0AB*CD?E1)`},
+ {`x(?i:ab*c|d?e)`, `x(?i:AB*C|D?E)`},
+ {`x(?i:ab*cd?e)`, `x(?i:AB*CD?E)`},
+ {`0(?i:ab*c|d?e)`, `(?i:0(?:AB*C|D?E))`},
+ {`0(?i:ab*cd?e)`, `(?i:0AB*CD?E)`},
+ {`(?i:ab*c|d?e)1`, `(?i:(?:AB*C|D?E)1)`},
+ {`(?i:ab*cd?e)1`, `(?i:AB*CD?E1)`},
+ {`(?i:ab)[123](?i:cd)`, `(?i:AB[1-3]CD)`},
+ {`(?i:ab*c|d?e)`, `(?i:AB*C|D?E)`},
+ {`[Aa][Bb]`, `(?i:AB)`},
+ {`[Aa][Bb]*[Cc]`, `(?i:AB*C)`},
+ {`A(?:[Bb][Cc]|[Dd])[Zz]`, `A(?i:(?:BC|D)Z)`},
+ {`[Aa](?:[Bb][Cc]|[Dd])Z`, `(?i:A(?:BC|D))Z`},
+}
+
+func TestString(t *testing.T) {
+ for _, tt := range stringTests {
+ re, err := Parse(tt.re, Perl)
+ if err != nil {
+ t.Errorf("Parse(%#q): %v", tt.re, err)
+ continue
+ }
+ out := re.String()
+ if out != tt.out {
+ t.Errorf("Parse(%#q).String() = %#q, want %#q", tt.re, out, tt.out)
+ }
+ }
+}