Reformat encoder tests. Other minor tweaks.
diff --git a/api_c.go b/api_c.go index 9cdb1aa..6d75786 100644 --- a/api_c.go +++ b/api_c.go
@@ -26,16 +26,15 @@ // Create a new parser object. func yaml_parser_initialize(parser *yaml_parser_t) bool { - // [Go] These should be initialized lazily instead. *parser = yaml_parser_t{ raw_buffer: make([]byte, 0, input_raw_buffer_size), buffer: make([]byte, 0, input_buffer_size), - tokens: make([]yaml_token_t, 0, initial_queue_size), - indents: make([]int, 0, initial_stack_size), - simple_keys: make([]yaml_simple_key_t, 0, initial_stack_size), - states: make([]yaml_parser_state_t, 0, initial_stack_size), - marks: make([]yaml_mark_t, 0, initial_stack_size), - tag_directives: make([]yaml_tag_directive_t, 0, initial_stack_size), + //tokens: make([]yaml_token_t, 0, initial_queue_size), + //indents: make([]int, 0, initial_stack_size), + //simple_keys: make([]yaml_simple_key_t, 0, initial_stack_size), + //states: make([]yaml_parser_state_t, 0, initial_stack_size), + //marks: make([]yaml_mark_t, 0, initial_stack_size), + //tag_directives: make([]yaml_tag_directive_t, 0, initial_stack_size), } return true }
diff --git a/decode_test.go b/decode_test.go index b341848..182eed0 100644 --- a/decode_test.go +++ b/decode_test.go
@@ -1,6 +1,7 @@ package goyaml_test import ( + "io/ioutil" . "launchpad.net/gocheck" "launchpad.net/goyaml" "math" @@ -266,3 +267,33 @@ c.Assert(m["abc"].value, Equals, 1) c.Assert(m["ghi"].value, Equals, 3) } + + +//var data []byte +//func init() { +// var err error +// data, err = ioutil.ReadFile("/tmp/file.yaml") +// if err != nil { +// panic(err) +// } +//} +// +//func (s *S) BenchmarkUnmarshal(c *C) { +// var err error +// for i := 0; i < c.N; i++ { +// var v map[string]interface{} +// err = goyaml.Unmarshal(data, &v) +// } +// if err != nil { +// panic(err) +// } +//} +// +//func (s *S) BenchmarkMarshal(c *C) { +// var v map[string]interface{} +// goyaml.Unmarshal(data, &v) +// c.ResetTimer() +// for i := 0; i < c.N; i++ { +// goyaml.Marshal(&v) +// } +//}
diff --git a/encode_test.go b/encode_test.go index 1d63c02..78e3112 100644 --- a/encode_test.go +++ b/encode_test.go
@@ -12,105 +12,191 @@ var marshalIntTest = 123 var marshalTests = []struct { - data string value interface{} + data string }{ - {"{}\n", &struct{}{}}, - {"v: hi\n", map[string]string{"v": "hi"}}, - {"v: hi\n", map[string]interface{}{"v": "hi"}}, - {"v: \"true\"\n", map[string]string{"v": "true"}}, - {"v: \"false\"\n", map[string]string{"v": "false"}}, - {"v: true\n", map[string]interface{}{"v": true}}, - {"v: false\n", map[string]interface{}{"v": false}}, - {"v: 10\n", map[string]interface{}{"v": 10}}, - {"v: -10\n", map[string]interface{}{"v": -10}}, - {"v: 42\n", map[string]uint{"v": 42}}, - {"v: 4294967296\n", map[string]interface{}{"v": int64(4294967296)}}, - {"v: 4294967296\n", map[string]int64{"v": int64(4294967296)}}, - {"v: 4294967296\n", map[string]uint64{"v": 4294967296}}, - {"v: \"10\"\n", map[string]interface{}{"v": "10"}}, - {"v: 0.1\n", map[string]interface{}{"v": 0.1}}, - {"v: 0.1\n", map[string]interface{}{"v": float64(0.1)}}, - {"v: -0.1\n", map[string]interface{}{"v": -0.1}}, - {"v: .inf\n", map[string]interface{}{"v": math.Inf(+1)}}, - {"v: -.inf\n", map[string]interface{}{"v": math.Inf(-1)}}, - {"v: .nan\n", map[string]interface{}{"v": math.NaN()}}, - {"v: null\n", map[string]interface{}{"v": nil}}, - {"v: \"\"\n", map[string]interface{}{"v": ""}}, - {"v:\n- A\n- B\n", map[string][]string{"v": []string{"A", "B"}}}, - {"v:\n- A\n- 1\n", map[string][]interface{}{"v": []interface{}{"A", 1}}}, - {"a:\n b: c\n", - map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}}}, + { + &struct{}{}, + "{}\n", + }, { + map[string]string{"v": "hi"}, + "v: hi\n", + }, { + map[string]interface{}{"v": "hi"}, + "v: hi\n", + }, { + map[string]string{"v": "true"}, + "v: \"true\"\n", + }, { + map[string]string{"v": "false"}, + "v: \"false\"\n", + }, { + map[string]interface{}{"v": true}, + "v: true\n", + }, { + map[string]interface{}{"v": false}, + "v: false\n", + }, { + map[string]interface{}{"v": 10}, + "v: 10\n", + }, { + map[string]interface{}{"v": -10}, + "v: -10\n", + }, { + map[string]uint{"v": 42}, + "v: 42\n", + }, { + map[string]interface{}{"v": int64(4294967296)}, + "v: 4294967296\n", + }, { + map[string]int64{"v": int64(4294967296)}, + "v: 4294967296\n", + }, { + map[string]uint64{"v": 4294967296}, + "v: 4294967296\n", + }, { + map[string]interface{}{"v": "10"}, + "v: \"10\"\n", + }, { + map[string]interface{}{"v": 0.1}, + "v: 0.1\n", + }, { + map[string]interface{}{"v": float64(0.1)}, + "v: 0.1\n", + }, { + map[string]interface{}{"v": -0.1}, + "v: -0.1\n", + }, { + map[string]interface{}{"v": math.Inf(+1)}, + "v: .inf\n", + }, { + map[string]interface{}{"v": math.Inf(-1)}, + "v: -.inf\n", + }, { + map[string]interface{}{"v": math.NaN()}, + "v: .nan\n", + }, { + map[string]interface{}{"v": nil}, + "v: null\n", + }, { + map[string]interface{}{"v": ""}, + "v: \"\"\n", + }, { + map[string][]string{"v": []string{"A", "B"}}, + "v:\n- A\n- B\n", + }, { + map[string][]interface{}{"v": []interface{}{"A", 1, map[string][]int{"B": []int{2, 3}}}}, + "v:\n- A\n- 1\n- B:\n - 2\n - 3\n", + }, { + map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}}, + "a:\n b: c\n", + }, // Simple values. - {"123\n", &marshalIntTest}, + { + &marshalIntTest, + "123\n", + }, // Structures - {"hello: world\n", &struct{ Hello string }{"world"}}, - {"a:\n b: c\n", &struct { - A struct { - B string - } - }{struct{ B string }{"c"}}}, - {"a:\n b: c\n", &struct { - A *struct { - B string - } - }{&struct{ B string }{"c"}}}, - {"a: null\n", &struct { - A *struct { - B string - } - }{}}, - {"a: 1\n", &struct{ A int }{1}}, - {"a:\n- 1\n- 2\n", &struct{ A []int }{[]int{1, 2}}}, - {"a: 1\n", &struct { - B int "a" - }{1}}, - {"a: true\n", &struct{ A bool }{true}}, - - // Conditional flag - {"a: 1\n", &struct { - A int "a,omitempty" - B int "b,omitempty" - }{1, 0}}, - {"{}\n", &struct { - A int "a,omitempty" - B int "b,omitempty" - }{0, 0}}, - {"{}\n", &struct { - A *struct{ X int } "a,omitempty" - B int "b,omitempty" - }{nil, 0}}, - - // Flow flag - {"a: [1, 2]\n", &struct { - A []int "a,flow" - }{[]int{1, 2}}}, - {"a: {b: c}\n", - &struct { - A map[string]string "a,flow" - }{map[string]string{"b": "c"}}}, - {"a: {b: c}\n", + { + &struct{ Hello string }{"world"}, + "hello: world\n", + }, { &struct { A struct { B string + } + }{struct{ B string }{"c"}}, + "a:\n b: c\n", + }, { + &struct { + A *struct { + B string + } + }{&struct{ B string }{"c"}}, + "a:\n b: c\n", + }, { + &struct { + A *struct { + B string + } + }{}, + "a: null\n", + }, { + &struct{ A int }{1}, + "a: 1\n", + }, { + &struct{ A []int }{[]int{1, 2}}, + "a:\n- 1\n- 2\n", + }, { + &struct { + B int "a" + }{1}, + "a: 1\n", + }, { + &struct{ A bool }{true}, + "a: true\n", + }, + + // Conditional flag + { + &struct { + A int "a,omitempty" + B int "b,omitempty" + }{1, 0}, + "a: 1\n", + }, { + &struct { + A int "a,omitempty" + B int "b,omitempty" + }{0, 0}, + "{}\n", + }, { + &struct { + A *struct{ X int } "a,omitempty" + B int "b,omitempty" + }{nil, 0}, + "{}\n", + }, + + // Flow flag + { + &struct { + A []int "a,flow" + }{[]int{1, 2}}, + "a: [1, 2]\n", + }, { + &struct { + A map[string]string "a,flow" + }{map[string]string{"b": "c", "d": "e"}}, + "a: {b: c, d: e}\n", + }, { + &struct { + A struct { + B, D string } "a,flow" - }{struct{ B string }{"c"}}}, + }{struct{ B, D string }{"c", "e"}}, + "a: {b: c, d: e}\n", + }, // Unexported field - {"a: 1\n", + { &struct { u int A int - }{0, 1}}, + }{0, 1}, + "a: 1\n", + }, // Ignored field - {"a: 1\n", + { &struct { A int B int "-" - }{1, 2}}, + }{1, 2}, + "a: 1\n", + }, } func (s *S) TestMarshal(c *C) {