From db62263e3ec25ece24301bb2a2b64a7602fac532 Mon Sep 17 00:00:00 2001 From: Thomas Pelletier Date: Mon, 1 Jun 2020 10:16:36 -0400 Subject: [PATCH] Added exta tests for GetArrayPath --- toml.go | 5 ----- toml_test.go | 45 ++++++++++++++++++++++++++++++++------------- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/toml.go b/toml.go index 1c16655..2b138d1 100644 --- a/toml.go +++ b/toml.go @@ -176,7 +176,6 @@ func (t *Tree) GetArrayPath(keys []string) interface{} { // if homogeneous array, then return slice type object over []interface{} func getArray(n []interface{}) interface{} { var s []string - var b []byte var i64 []int64 var f64 []float64 var bl []bool @@ -184,8 +183,6 @@ func getArray(n []interface{}) interface{} { switch v := value.(type) { case string: s = append(s, v) - case byte: - b = append(b, v) case int64: i64 = append(i64, v) case float64: @@ -198,8 +195,6 @@ func getArray(n []interface{}) interface{} { } if len(s) == len(n) { return s - } else if len(b) == len(n) { - return b } else if len(i64) == len(n) { return i64 } else if len(f64) == len(n) { diff --git a/toml_test.go b/toml_test.go index c2efdcd..0c7b6d3 100644 --- a/toml_test.go +++ b/toml_test.go @@ -64,7 +64,7 @@ func TestTomlGetArray(t *testing.T) { t.Errorf("GetArray should return the []bool value") } - expect3 := []float64{1.5,2.5} + expect3 := []float64{1.5, 2.5} actual3 := tree.GetArray("test.key3").([]float64) if !reflect.DeepEqual(actual3, expect3) { t.Errorf("GetArray should return the []float64 value") @@ -185,22 +185,41 @@ func TestTomlGetPath(t *testing.T) { } func TestTomlGetArrayPath(t *testing.T) { - node := newTree() - //TODO: set other node data - for idx, item := range []struct { - Path []string - Expected *Tree + Name string + Path []string + Make func() (tree *Tree, expected interface{}) }{ - { // empty path test - []string{}, - node, + { + Name: "empty", + Path: []string{}, + Make: func() (tree *Tree, expected interface{}) { + tree = newTree() + expected = tree + return + }, + }, + { + Name: "int64", + Path: []string{"a"}, + Make: func() (tree *Tree, expected interface{}) { + var err error + tree, err = Load(`a = [1,2,3]`) + if err != nil { + panic(err) + } + expected = []int64{1, 2, 3} + return + }, }, } { - result := node.GetArrayPath(item.Path) - if result != item.Expected { - t.Errorf("GetArrayPath[%d] %v - expected %v, got %v instead.", idx, item.Path, item.Expected, result) - } + t.Run(item.Name, func(t *testing.T) { + tree, expected := item.Make() + result := tree.GetArrayPath(item.Path) + if !reflect.DeepEqual(result, expected) { + t.Errorf("GetArrayPath[%d] %v - expected %#v, got %#v instead.", idx, item.Path, expected, result) + } + }) } tree, _ := Load("[foo.bar]\na=1\nb=2\n[baz.foo]\na=3\nb=4\n[gorf.foo]\na=5\nb=6")