Reformatted decoding tests.
diff --git a/decode_test.go b/decode_test.go index 182eed0..d68d546 100644 --- a/decode_test.go +++ b/decode_test.go
@@ -1,7 +1,6 @@ package goyaml_test import ( - "io/ioutil" . "launchpad.net/gocheck" "launchpad.net/goyaml" "math" @@ -14,140 +13,307 @@ data string value interface{} }{ - {"", &struct{}{}}, - {"{}", &struct{}{}}, - - {"v: hi", map[string]string{"v": "hi"}}, - {"v: hi", map[string]interface{}{"v": "hi"}}, - {"v: true", map[string]string{"v": "true"}}, - {"v: true", map[string]interface{}{"v": true}}, - {"v: 10", map[string]interface{}{"v": 10}}, - {"v: 0b10", map[string]interface{}{"v": 2}}, - {"v: 0xA", map[string]interface{}{"v": 10}}, - {"v: 4294967296", map[string]int64{"v": 4294967296}}, - {"v: 0.1", map[string]interface{}{"v": 0.1}}, - {"v: .1", map[string]interface{}{"v": 0.1}}, - {"v: .Inf", map[string]interface{}{"v": math.Inf(+1)}}, - {"v: -.Inf", map[string]interface{}{"v": math.Inf(-1)}}, - {"v: -10", map[string]interface{}{"v": -10}}, - {"v: -.1", map[string]interface{}{"v": -0.1}}, + { + "", + &struct{}{}, + }, { + "{}", &struct{}{}, + }, { + "v: hi", + map[string]string{"v": "hi"}, + }, { + "v: hi", map[string]interface{}{"v": "hi"}, + }, { + "v: true", + map[string]string{"v": "true"}, + }, { + "v: true", + map[string]interface{}{"v": true}, + }, { + "v: 10", + map[string]interface{}{"v": 10}, + }, { + "v: 0b10", + map[string]interface{}{"v": 2}, + }, { + "v: 0xA", + map[string]interface{}{"v": 10}, + }, { + "v: 4294967296", + map[string]int64{"v": 4294967296}, + }, { + "v: 0.1", + map[string]interface{}{"v": 0.1}, + }, { + "v: .1", + map[string]interface{}{"v": 0.1}, + }, { + "v: .Inf", + map[string]interface{}{"v": math.Inf(+1)}, + }, { + "v: -.Inf", + map[string]interface{}{"v": math.Inf(-1)}, + }, { + "v: -10", + map[string]interface{}{"v": -10}, + }, { + "v: -.1", + map[string]interface{}{"v": -0.1}, + }, // Simple values. - {"123", &unmarshalIntTest}, + { + "123", + &unmarshalIntTest, + }, // Floats from spec - {"canonical: 6.8523e+5", map[string]interface{}{"canonical": 6.8523e+5}}, - {"expo: 685.230_15e+03", map[string]interface{}{"expo": 685.23015e+03}}, - {"fixed: 685_230.15", map[string]interface{}{"fixed": 685230.15}}, + { + "canonical: 6.8523e+5", + map[string]interface{}{"canonical": 6.8523e+5}, + }, { + "expo: 685.230_15e+03", + map[string]interface{}{"expo": 685.23015e+03}, + }, { + "fixed: 685_230.15", + map[string]interface{}{"fixed": 685230.15}, + }, { + "neginf: -.inf", + map[string]interface{}{"neginf": math.Inf(-1)}, + }, { + "fixed: 685_230.15", + map[string]float64{"fixed": 685230.15}, + }, //{"sexa: 190:20:30.15", map[string]interface{}{"sexa": 0}}, // Unsupported - {"neginf: -.inf", map[string]interface{}{"neginf": math.Inf(-1)}}, //{"notanum: .NaN", map[string]interface{}{"notanum": math.NaN()}}, // Equality of NaN fails. - {"fixed: 685_230.15", map[string]float64{"fixed": 685230.15}}, // Bools from spec - {"canonical: y", map[string]interface{}{"canonical": true}}, - {"answer: NO", map[string]interface{}{"answer": false}}, - {"logical: True", map[string]interface{}{"logical": true}}, - {"option: on", map[string]interface{}{"option": true}}, - {"option: on", map[string]bool{"option": true}}, - + { + "canonical: y", + map[string]interface{}{"canonical": true}, + }, { + "answer: NO", + map[string]interface{}{"answer": false}, + }, { + "logical: True", + map[string]interface{}{"logical": true}, + }, { + "option: on", + map[string]interface{}{"option": true}, + }, { + "option: on", + map[string]bool{"option": true}, + }, // Ints from spec - {"canonical: 685230", map[string]interface{}{"canonical": 685230}}, - {"decimal: +685_230", map[string]interface{}{"decimal": 685230}}, - {"octal: 02472256", map[string]interface{}{"octal": 685230}}, - {"hexa: 0x_0A_74_AE", map[string]interface{}{"hexa": 685230}}, - {"bin: 0b1010_0111_0100_1010_1110", map[string]interface{}{"bin": 685230}}, - {"bin: -0b101010", map[string]interface{}{"bin": -42}}, + { + "canonical: 685230", + map[string]interface{}{"canonical": 685230}, + }, { + "decimal: +685_230", + map[string]interface{}{"decimal": 685230}, + }, { + "octal: 02472256", + map[string]interface{}{"octal": 685230}, + }, { + "hexa: 0x_0A_74_AE", + map[string]interface{}{"hexa": 685230}, + }, { + "bin: 0b1010_0111_0100_1010_1110", + map[string]interface{}{"bin": 685230}, + }, { + "bin: -0b101010", + map[string]interface{}{"bin": -42}, + }, { + "decimal: +685_230", + map[string]int{"decimal": 685230}, + }, + //{"sexa: 190:20:30", map[string]interface{}{"sexa": 0}}, // Unsupported - {"decimal: +685_230", map[string]int{"decimal": 685230}}, // Nulls from spec - {"empty:", map[string]interface{}{"empty": nil}}, - {"canonical: ~", map[string]interface{}{"canonical": nil}}, - {"english: null", map[string]interface{}{"english": nil}}, - {"~: null key", map[interface{}]string{nil: "null key"}}, - {"empty:", map[string]*bool{"empty": nil}}, + { + "empty:", + map[string]interface{}{"empty": nil}, + }, { + "canonical: ~", + map[string]interface{}{"canonical": nil}, + }, { + "english: null", + map[string]interface{}{"english": nil}, + }, { + "~: null key", + map[interface{}]string{nil: "null key"}, + }, { + "empty:", + map[string]*bool{"empty": nil}, + }, // Flow sequence - {"seq: [A,B]", map[string]interface{}{"seq": []interface{}{"A", "B"}}}, - {"seq: [A,B,C,]", map[string][]string{"seq": []string{"A", "B", "C"}}}, - {"seq: [A,1,C]", map[string][]string{"seq": []string{"A", "1", "C"}}}, - {"seq: [A,1,C]", map[string][]int{"seq": []int{1}}}, - {"seq: [A,1,C]", map[string]interface{}{"seq": []interface{}{"A", 1, "C"}}}, - + { + "seq: [A,B]", + map[string]interface{}{"seq": []interface{}{"A", "B"}}, + }, { + "seq: [A,B,C,]", + map[string][]string{"seq": []string{"A", "B", "C"}}, + }, { + "seq: [A,1,C]", + map[string][]string{"seq": []string{"A", "1", "C"}}, + }, { + "seq: [A,1,C]", + map[string][]int{"seq": []int{1}}, + }, { + "seq: [A,1,C]", + map[string]interface{}{"seq": []interface{}{"A", 1, "C"}}, + }, // Block sequence - {"seq:\n - A\n - B", map[string]interface{}{"seq": []interface{}{"A", "B"}}}, - {"seq:\n - A\n - B\n - C", map[string][]string{"seq": []string{"A", "B", "C"}}}, - {"seq:\n - A\n - 1\n - C", map[string][]string{"seq": []string{"A", "1", "C"}}}, - {"seq:\n - A\n - 1\n - C", map[string][]int{"seq": []int{1}}}, - {"seq:\n - A\n - 1\n - C", map[string]interface{}{"seq": []interface{}{"A", 1, "C"}}}, + { + "seq:\n - A\n - B", + map[string]interface{}{"seq": []interface{}{"A", "B"}}, + }, { + "seq:\n - A\n - B\n - C", + map[string][]string{"seq": []string{"A", "B", "C"}}, + }, { + "seq:\n - A\n - 1\n - C", + map[string][]string{"seq": []string{"A", "1", "C"}}, + }, { + "seq:\n - A\n - 1\n - C", + map[string][]int{"seq": []int{1}}, + }, { + "seq:\n - A\n - 1\n - C", + map[string]interface{}{"seq": []interface{}{"A", 1, "C"}}, + }, // Literal block scalar - {"scalar: | # Comment\n\n literal\n\n \ttext\n\n", - map[string]string{"scalar": "\nliteral\n\n\ttext\n"}}, + { + "scalar: | # Comment\n\n literal\n\n \ttext\n\n", + map[string]string{"scalar": "\nliteral\n\n\ttext\n"}, + }, // Folded block scalar - {"scalar: > # Comment\n\n folded\n line\n \n next\n line\n * one\n * two\n\n last\n line\n\n", - map[string]string{"scalar": "\nfolded line\nnext line\n * one\n * two\n\nlast line\n"}}, + { + "scalar: > # Comment\n\n folded\n line\n \n next\n line\n * one\n * two\n\n last\n line\n\n", + map[string]string{"scalar": "\nfolded line\nnext line\n * one\n * two\n\nlast line\n"}, + }, // Map inside interface with no type hints. - {"a: {b: c}", - map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}}}, + { + "a: {b: c}", + map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}}, + }, // Structs and type conversions. - {"hello: world", &struct{ Hello string }{"world"}}, - {"a: {b: c}", &struct{ A struct{ B string } }{struct{ B string }{"c"}}}, - {"a: {b: c}", &struct{ A *struct{ B string } }{&struct{ B string }{"c"}}}, - {"a: {b: c}", &struct{ A map[string]string }{map[string]string{"b": "c"}}}, - {"a: {b: c}", &struct{ A *map[string]string }{&map[string]string{"b": "c"}}}, - {"a:", &struct{ A map[string]string }{}}, - {"a: 1", &struct{ A int }{1}}, - {"a: [1, 2]", &struct{ A []int }{[]int{1, 2}}}, - {"a: 1", &struct{ B int }{0}}, - {"a: 1", &struct { - B int "a" - }{1}}, - {"a: y", &struct{ A bool }{true}}, + { + "hello: world", + &struct{ Hello string }{"world"}, + }, { + "a: {b: c}", + &struct{ A struct{ B string } }{struct{ B string }{"c"}}, + }, { + "a: {b: c}", + &struct{ A *struct{ B string } }{&struct{ B string }{"c"}}, + }, { + "a: {b: c}", + &struct{ A map[string]string }{map[string]string{"b": "c"}}, + }, { + "a: {b: c}", + &struct{ A *map[string]string }{&map[string]string{"b": "c"}}, + }, { + "a:", + &struct{ A map[string]string }{}, + }, { + "a: 1", + &struct{ A int }{1}, + }, { + "a: [1, 2]", + &struct{ A []int }{[]int{1, 2}}, + }, { + "a: 1", + &struct{ B int }{0}, + }, { + "a: 1", + &struct { + B int "a" + }{1}, + }, { + "a: y", + &struct{ A bool }{true}, + }, // Some cross type conversions - {"v: 42", map[string]uint{"v": 42}}, - {"v: -42", map[string]uint{}}, - {"v: 4294967296", map[string]uint64{"v": 4294967296}}, - {"v: -4294967296", map[string]uint64{}}, + { + "v: 42", + map[string]uint{"v": 42}, + }, { + "v: -42", + map[string]uint{}, + }, { + "v: 4294967296", + map[string]uint64{"v": 4294967296}, + }, { + "v: -4294967296", + map[string]uint64{}, + }, // Overflow cases. - {"v: 4294967297", map[string]int32{}}, - {"v: 128", map[string]int8{}}, + { + "v: 4294967297", + map[string]int32{}, + }, { + "v: 128", + map[string]int8{}, + }, // Quoted values. - {"'1': '\"2\"'", map[interface{}]interface{}{"1": "\"2\""}}, + { + "'1': '\"2\"'", + map[interface{}]interface{}{"1": "\"2\""}, + }, // Explicit tags. - {"v: !!float '1.1'", map[string]interface{}{"v": 1.1}}, - {"v: !!null ''", map[string]interface{}{"v": nil}}, - {"%TAG !y! tag:yaml.org,2002:\n---\nv: !y!int '1'", - map[string]interface{}{"v": 1}}, + { + "v: !!float '1.1'", + map[string]interface{}{"v": 1.1}, + }, { + "v: !!null ''", + map[string]interface{}{"v": nil}, + }, { + "%TAG !y! tag:yaml.org,2002:\n---\nv: !y!int '1'", + map[string]interface{}{"v": 1}, + }, // Anchors and aliases. - {"a: &x 1\nb: &y 2\nc: *x\nd: *y\n", &struct{ A, B, C, D int }{1, 2, 1, 2}}, - {"a: &a {c: 1}\nb: *a", + { + "a: &x 1\nb: &y 2\nc: *x\nd: *y\n", + &struct{ A, B, C, D int }{1, 2, 1, 2}, + }, { + "a: &a {c: 1}\nb: *a", &struct { A, B struct { C int } - }{struct{ C int }{1}, struct{ C int }{1}}}, - {"a: &a [1, 2]\nb: *a", &struct{ B []int }{[]int{1, 2}}}, + }{struct{ C int }{1}, struct{ C int }{1}}, + }, { + "a: &a [1, 2]\nb: *a", + &struct{ B []int }{[]int{1, 2}}, + }, // BUG #1133337 - {"foo: ''", map[string]*string{"foo": new(string)}}, - {"foo: null", map[string]string{}}, + { + "foo: ''", + map[string]*string{"foo": new(string)}, + }, { + "foo: null", + map[string]string{}, + }, // Ignored field - {"a: 1\nb: 2\n", + { + "a: 1\nb: 2\n", &struct { A int B int "-" - }{1, 0}}, + }{1, 0}, + }, } func (s *S) TestUnmarshal(c *C) { @@ -268,7 +434,6 @@ c.Assert(m["ghi"].value, Equals, 3) } - //var data []byte //func init() { // var err error