diff options
Diffstat (limited to 'src/regexp/syntax/parse_test.go')
| -rw-r--r-- | src/regexp/syntax/parse_test.go | 36 |
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) + } + } +} |
