diff --git a/data_navigator_test.go b/data_navigator_test.go index 82980165..40841a0a 100644 --- a/data_navigator_test.go +++ b/data_navigator_test.go @@ -7,14 +7,66 @@ import ( "testing" ) -var rawData = ` +func parseData(rawData string) map[interface{}]interface{} { + var parsedData map[interface{}]interface{} + err := yaml.Unmarshal([]byte(rawData), &parsedData) + if err != nil { + fmt.Println("Error parsing yaml: %v", err) + os.Exit(1) + } + return parsedData +} + +func TestReadMap_simple(t *testing.T) { + var data = parseData(` --- -a: Easy! b: c: 2 +`) + assertResult(t, 2, readMap(data, "b", []string{"c"})) +} + +func TestReadMap_key_doesnt_exist(t *testing.T) { + var data = parseData(` +--- +b: + c: 2 +`) + assertResult(t, nil, readMap(data, "b.x.f", []string{"c"})) +} + +func TestReadMap_recurse_against_string(t *testing.T) { + var data = parseData(` +--- +a: cat +`) + assertResult(t, nil, readMap(data, "a", []string{"b"})) +} + +func TestReadMap_with_array(t *testing.T) { + var data = parseData(` +--- +b: d: - 3 - 4 +`) + assertResult(t, 4, readMap(data, "b", []string{"d", "1"})) +} + +func TestReadMap_with_array_out_of_bounds(t *testing.T) { + var data = parseData(` +--- +b: + d: + - 3 + - 4 +`) + assertResult(t, nil, readMap(data, "b", []string{"d", "3"})) +} + +func TestReadMap_with_array_splat(t *testing.T) { + var data = parseData(` e: - name: Fred @@ -22,57 +74,30 @@ e: - name: Sam thing: dog -` - -var parsedData map[interface{}]interface{} - -func TestMain(m *testing.M) { - err := yaml.Unmarshal([]byte(rawData), &parsedData) - if err != nil { - fmt.Println("Error parsing yaml: %v", err) - os.Exit(1) - } - - os.Exit(m.Run()) -} - -func TestReadMap_simple(t *testing.T) { - assertResult(t, 2, readMap(parsedData, "b", []string{"c"})) -} - -func TestReadMap_key_doesnt_exist(t *testing.T) { - assertResult(t, nil, readMap(parsedData, "b.x.f", []string{"c"})) -} - -func TestReadMap_recurse_against_string(t *testing.T) { - assertResult(t, nil, readMap(parsedData, "a", []string{"b"})) -} - -func TestReadMap_with_array(t *testing.T) { - assertResult(t, 4, readMap(parsedData, "b", []string{"d", "1"})) -} - -func TestReadMap_with_array_out_of_bounds(t *testing.T) { - assertResult(t, nil, readMap(parsedData, "b", []string{"d", "3"})) -} - -func TestReadMap_with_array_splat(t *testing.T) { - assertResult(t, "[Fred Sam]", fmt.Sprintf("%v", readMap(parsedData, "e", []string{"*", "name"}))) +`) + assertResult(t, "[Fred Sam]", fmt.Sprintf("%v", readMap(data, "e", []string{"*", "name"}))) } func TestWrite_simple(t *testing.T) { + var data = parseData(` +b: + c: 2 +`) - write(parsedData, "b", []string{"c"}, "4") + write(data, "b", []string{"c"}, "4") - b := parsedData["b"].(map[interface{}]interface{}) + b := data["b"].(map[interface{}]interface{}) assertResult(t, "4", b["c"].(string)) } func TestWrite_with_no_tail(t *testing.T) { + var data = parseData(` +b: + c: 2 +`) + write(data, "b", []string{}, "4") - write(parsedData, "b", []string{}, "4") - - b := parsedData["b"] + b := data["b"] assertResult(t, "4", fmt.Sprintf("%v", b)) }