7a9389330e
gcc/: * gcc.c (default_compilers): Add entry for ".go". * common.opt: Add -static-libgo as a driver option. * doc/install.texi (Configuration): Mention libgo as an option for --enable-shared. Mention go as an option for --enable-languages. * doc/invoke.texi (Overall Options): Mention .go as a file name suffix. Mention go as a -x option. * doc/frontends.texi (G++ and GCC): Mention Go as a supported language. * doc/sourcebuild.texi (Top Level): Mention libgo. * doc/standards.texi (Standards): Add section on Go language. Move references for other languages into their own section. * doc/contrib.texi (Contributors): Mention that I contributed the Go frontend. gcc/testsuite/: * lib/go.exp: New file. * lib/go-dg.exp: New file. * lib/go-torture.exp: New file. * lib/target-supports.exp (check_compile): Match // Go. From-SVN: r167407
171 lines
3.4 KiB
Go
171 lines
3.4 KiB
Go
// Copyright 2009 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package strconv_test
|
|
|
|
import (
|
|
"os"
|
|
. "strconv"
|
|
"testing"
|
|
)
|
|
|
|
type quoteTest struct {
|
|
in string
|
|
out string
|
|
}
|
|
|
|
var quotetests = []quoteTest{
|
|
{"\a\b\f\r\n\t\v", `"\a\b\f\r\n\t\v"`},
|
|
{"\\", `"\\"`},
|
|
{"abc\xffdef", `"abc\xffdef"`},
|
|
{"\u263a", `"\u263a"`},
|
|
{"\U0010ffff", `"\U0010ffff"`},
|
|
{"\x04", `"\x04"`},
|
|
}
|
|
|
|
func TestQuote(t *testing.T) {
|
|
for i := 0; i < len(quotetests); i++ {
|
|
tt := quotetests[i]
|
|
if out := Quote(tt.in); out != tt.out {
|
|
t.Errorf("Quote(%s) = %s, want %s", tt.in, out, tt.out)
|
|
}
|
|
}
|
|
}
|
|
|
|
type canBackquoteTest struct {
|
|
in string
|
|
out bool
|
|
}
|
|
|
|
var canbackquotetests = []canBackquoteTest{
|
|
{"`", false},
|
|
{string(0), false},
|
|
{string(1), false},
|
|
{string(2), false},
|
|
{string(3), false},
|
|
{string(4), false},
|
|
{string(5), false},
|
|
{string(6), false},
|
|
{string(7), false},
|
|
{string(8), false},
|
|
{string(9), true}, // \t
|
|
{string(10), false},
|
|
{string(11), false},
|
|
{string(12), false},
|
|
{string(13), false},
|
|
{string(14), false},
|
|
{string(15), false},
|
|
{string(16), false},
|
|
{string(17), false},
|
|
{string(18), false},
|
|
{string(19), false},
|
|
{string(20), false},
|
|
{string(21), false},
|
|
{string(22), false},
|
|
{string(23), false},
|
|
{string(24), false},
|
|
{string(25), false},
|
|
{string(26), false},
|
|
{string(27), false},
|
|
{string(28), false},
|
|
{string(29), false},
|
|
{string(30), false},
|
|
{string(31), false},
|
|
{`' !"#$%&'()*+,-./:;<=>?@[\]^_{|}~`, true},
|
|
{`0123456789`, true},
|
|
{`ABCDEFGHIJKLMNOPQRSTUVWXYZ`, true},
|
|
{`abcdefghijklmnopqrstuvwxyz`, true},
|
|
{`☺`, true},
|
|
}
|
|
|
|
func TestCanBackquote(t *testing.T) {
|
|
for i := 0; i < len(canbackquotetests); i++ {
|
|
tt := canbackquotetests[i]
|
|
if out := CanBackquote(tt.in); out != tt.out {
|
|
t.Errorf("CanBackquote(%q) = %v, want %v", tt.in, out, tt.out)
|
|
}
|
|
}
|
|
}
|
|
|
|
var unquotetests = []quoteTest{
|
|
{`""`, ""},
|
|
{`"a"`, "a"},
|
|
{`"abc"`, "abc"},
|
|
{`"☺"`, "☺"},
|
|
{`"hello world"`, "hello world"},
|
|
{`"\xFF"`, "\xFF"},
|
|
{`"\377"`, "\377"},
|
|
{`"\u1234"`, "\u1234"},
|
|
{`"\U00010111"`, "\U00010111"},
|
|
{`"\U0001011111"`, "\U0001011111"},
|
|
{`"\a\b\f\n\r\t\v\\\""`, "\a\b\f\n\r\t\v\\\""},
|
|
{`"'"`, "'"},
|
|
|
|
{`'a'`, "a"},
|
|
{`'☹'`, "☹"},
|
|
{`'\a'`, "\a"},
|
|
{`'\x10'`, "\x10"},
|
|
{`'\377'`, "\377"},
|
|
{`'\u1234'`, "\u1234"},
|
|
{`'\U00010111'`, "\U00010111"},
|
|
{`'\t'`, "\t"},
|
|
{`' '`, " "},
|
|
{`'\''`, "'"},
|
|
{`'"'`, "\""},
|
|
|
|
{"``", ``},
|
|
{"`a`", `a`},
|
|
{"`abc`", `abc`},
|
|
{"`☺`", `☺`},
|
|
{"`hello world`", `hello world`},
|
|
{"`\\xFF`", `\xFF`},
|
|
{"`\\377`", `\377`},
|
|
{"`\\`", `\`},
|
|
{"` `", ` `},
|
|
{"` `", ` `},
|
|
}
|
|
|
|
var misquoted = []string{
|
|
``,
|
|
`"`,
|
|
`"a`,
|
|
`"'`,
|
|
`b"`,
|
|
`"\"`,
|
|
`'\'`,
|
|
`'ab'`,
|
|
`"\x1!"`,
|
|
`"\U12345678"`,
|
|
`"\z"`,
|
|
"`",
|
|
"`xxx",
|
|
"`\"",
|
|
`"\'"`,
|
|
`'\"'`,
|
|
}
|
|
|
|
func TestUnquote(t *testing.T) {
|
|
for i := 0; i < len(unquotetests); i++ {
|
|
tt := unquotetests[i]
|
|
if out, err := Unquote(tt.in); err != nil && out != tt.out {
|
|
t.Errorf("Unquote(%#q) = %q, %v want %q, nil", tt.in, out, err, tt.out)
|
|
}
|
|
}
|
|
|
|
// run the quote tests too, backward
|
|
for i := 0; i < len(quotetests); i++ {
|
|
tt := quotetests[i]
|
|
if in, err := Unquote(tt.out); in != tt.in {
|
|
t.Errorf("Unquote(%#q) = %q, %v, want %q, nil", tt.out, in, err, tt.in)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < len(misquoted); i++ {
|
|
s := misquoted[i]
|
|
if out, err := Unquote(s); out != "" || err != os.EINVAL {
|
|
t.Errorf("Unquote(%#q) = %q, %v want %q, %v", s, out, err, "", os.EINVAL)
|
|
}
|
|
}
|
|
}
|