From: Rob Pike Date: Mon, 9 Jun 2008 02:08:00 +0000 (-0700) Subject: fix string_lit test to be more thorough X-Git-Tag: weekly.2009-11-06~3717 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f07d2eea52b135575ff77b5446e1f8fe93146e0b;p=gostls13.git fix string_lit test to be more thorough SVN=121623 --- diff --git a/test/golden.out b/test/golden.out index e2c18f02d1..50be347dc3 100644 --- a/test/golden.out +++ b/test/golden.out @@ -41,9 +41,6 @@ sieve.go:8: fatal error: walktype: switch 1 unknown op SEND l(8) BUG: known to fail incorrectly =========== ./string_lit.go -string_lit.go:5: syntax error -string_lit.go:12: unknown escape sequence: \ -BUG: known to fail incorrectly =========== ./switch.go diff --git a/test/string_lit.go b/test/string_lit.go index 1b106cdadf..56c4c6a668 100644 --- a/test/string_lit.go +++ b/test/string_lit.go @@ -6,25 +6,74 @@ package main -func main() { - []string( - "", - " ", - "'`", - "a", - "ä", - "本", - "\a\b\f\n\r\t\v\\\"", - "\000\123\x00\xca\xFE\u0123\ubabe\U0123ABCD\Ucafebabe", - - ``, - ` `, - `'"`, - `a`, - `ä`, - `本`, - `\a\b\f\n\r\t\v\\\'\"`, - `\000\123\x00\xca\xFE\u0123\ubabe\U0123ABCD\Ucafebabe`, - `\x\u\U\` - ); +var ecode int; + +func assert(a, b, c string) { + if a != b { + ecode = 1; + print "FAIL: ", c, ": ", a, "!=", b, "\n"; + var max int = len(a); + if len(b) > max { + max = len(b); + } + for i := 0; i < max; i++ { + ac := 0; + bc := 0; + if i < len(a) { + ac = int(a[i]); + } + if i < len(b) { + bc = int(b[i]); + } + if ac != bc { + print "\ta[", i, "] = ", ac, "; b[", i, "] =", bc, "\n"; + } + } + } +} + +func main() int { + ecode = 0; + s := + "" + " " + "'`" + "a" + "ä" + "本" + "\a\b\f\n\r\t\v\\\"" + "\000\123\x00\xca\xFE\u0123\ubabe\U0000babe" + + `` + ` ` + `'"` + `a` + `ä` + `本` + `\a\b\f\n\r\t\v\\\'` + `\000\123\x00\xca\xFE\u0123\ubabe\U0000babe` + `\x\u\U\` + ; + assert("", ``, "empty"); + assert(" ", " ", "blank"); + assert("\x61", "a", "lowercase a"); + assert("\x61", `a`, "lowercase a (backquote)"); + assert("\u00e4", "ä", "a umlaut"); + assert("\u00e4", `ä`, "a umlaut (backquote)"); + assert("\u672c", "本", "nihon"); + assert("\u672c", `本`, "nihon (backquote)"); + assert("\x07\x08\x0c\x0a\x0d\x09\x0b\x5c\x22", + "\a\b\f\n\r\t\v\\\"", + "backslashes"); + assert("\\a\\b\\f\\n\\r\\t\\v\\\\\\\"", + `\a\b\f\n\r\t\v\\\"`, + "backslashes (backquote)"); + assert("\x00\x53\000\xca\376S몾몾", + "\000\123\x00\312\xFE\u0053\ubabe\U0000babe", + "backslashes 2"); + assert("\\000\\123\\x00\\312\\xFE\\u0123\\ubabe\\U0000babe", + `\000\123\x00\312\xFE\u0123\ubabe\U0000babe`, + "backslashes 2 (backquote)"); + assert("\\x\\u\\U\\", `\x\u\U\`, "backslash 3 (backquote)"); + return ecode; }