]> Cypherpunks repositories - gostls13.git/commitdiff
fix string_lit test to be more thorough
authorRob Pike <r@golang.org>
Mon, 9 Jun 2008 02:08:00 +0000 (19:08 -0700)
committerRob Pike <r@golang.org>
Mon, 9 Jun 2008 02:08:00 +0000 (19:08 -0700)
SVN=121623

test/golden.out
test/string_lit.go

index e2c18f02d1597acd84ffdc899e0960af69712fc3..50be347dc30efa5fbb11e512f84c0c13ba876109 100644 (file)
@@ -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
 
index 1b106cdadf001698756776c77bbcf7739dd5ca27..56c4c6a668dabdf7b5472c8651ceea053beeaeb8 100644 (file)
@@ -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;
 }