OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / github.com / hashicorp / hcl / hcl / strconv / quote_test.go
diff --git a/vendor/github.com/hashicorp/hcl/hcl/strconv/quote_test.go b/vendor/github.com/hashicorp/hcl/hcl/strconv/quote_test.go
new file mode 100644 (file)
index 0000000..65be375
--- /dev/null
@@ -0,0 +1,96 @@
+package strconv
+
+import "testing"
+
+type quoteTest struct {
+       in    string
+       out   string
+       ascii string
+}
+
+var quotetests = []quoteTest{
+       {"\a\b\f\r\n\t\v", `"\a\b\f\r\n\t\v"`, `"\a\b\f\r\n\t\v"`},
+       {"\\", `"\\"`, `"\\"`},
+       {"abc\xffdef", `"abc\xffdef"`, `"abc\xffdef"`},
+       {"\u263a", `"☺"`, `"\u263a"`},
+       {"\U0010ffff", `"\U0010ffff"`, `"\U0010ffff"`},
+       {"\x04", `"\x04"`, `"\x04"`},
+}
+
+type unQuoteTest struct {
+       in  string
+       out string
+}
+
+var unquotetests = []unQuoteTest{
+       {`""`, ""},
+       {`"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\\\""},
+       {`"'"`, "'"},
+       {`"${file("foo")}"`, `${file("foo")}`},
+       {`"${file("\"foo\"")}"`, `${file("\"foo\"")}`},
+       {`"echo ${var.region}${element(split(",",var.zones),0)}"`,
+               `echo ${var.region}${element(split(",",var.zones),0)}`},
+       {`"${HH\\:mm\\:ss}"`, `${HH\\:mm\\:ss}`},
+       {`"${\n}"`, `${\n}`},
+}
+
+var misquoted = []string{
+       ``,
+       `"`,
+       `"a`,
+       `"'`,
+       `b"`,
+       `"\"`,
+       `"\9"`,
+       `"\19"`,
+       `"\129"`,
+       `'\'`,
+       `'\9'`,
+       `'\19'`,
+       `'\129'`,
+       `'ab'`,
+       `"\x1!"`,
+       `"\U12345678"`,
+       `"\z"`,
+       "`",
+       "`xxx",
+       "`\"",
+       `"\'"`,
+       `'\"'`,
+       "\"\n\"",
+       "\"\\n\n\"",
+       "'\n'",
+       `"${"`,
+       `"${foo{}"`,
+       "\"${foo}\n\"",
+}
+
+func TestUnquote(t *testing.T) {
+       for _, tt := range unquotetests {
+               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 _, tt := range quotetests {
+               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 _, s := range misquoted {
+               if out, err := Unquote(s); out != "" || err != ErrSyntax {
+                       t.Errorf("Unquote(%#q) = %q, %v want %q, %v", s, out, err, "", ErrSyntax)
+               }
+       }
+}