diff --git a/utils/datanode_test.go b/utils/datanode_test.go
index 854151314..6cb594a60 100644
--- a/utils/datanode_test.go
+++ b/utils/datanode_test.go
@@ -19,6 +19,7 @@ along with this program. If not, see
package utils
import (
+ "fmt"
"reflect"
"regexp"
"strings"
@@ -365,7 +366,7 @@ func TestAppend2(t *testing.T) {
dn.Type = NMDataType
testPath := []string{"0", "testPath"}
val1 := &DataLeaf{
- Data: "data",
+ AttributeID: "ID1",
}
if rcv, err := dn.Append(testPath, val1); err != ErrWrongPath {
t.Errorf("Expected %v but received %v", ErrWrongPath, err)
@@ -383,6 +384,7 @@ func TestAppend2(t *testing.T) {
} else if rcv != 0 {
t.Errorf("Expected %+v, received %+v", 0, rcv)
}
+ fmt.Println(ToJSON(dn.Map))
///
dn.Type = NMSliceType
diff --git a/utils/orderednavigablemap_test.go b/utils/orderednavigablemap_test.go
index bf8295d49..523095b0b 100644
--- a/utils/orderednavigablemap_test.go
+++ b/utils/orderednavigablemap_test.go
@@ -871,7 +871,7 @@ func TestOrderedNavigableMapOrderedFields(t *testing.T) {
}
}
-func TestSetAsSliceErr(t *testing.T) {
+func TestOrderedNavigableMapSetAsSliceErr(t *testing.T) {
nm := NewOrderedNavigableMap()
err := nm.SetAsSlice(&FullPath{}, []*DataNode{NewLeafNode(10), NewLeafNode(101)})
if err == nil || err != ErrWrongPath {
@@ -879,7 +879,7 @@ func TestSetAsSliceErr(t *testing.T) {
}
}
-func TestFieldAsString(t *testing.T) {
+func TestOrderedNavigableMapFieldAsStringErr(t *testing.T) {
nm := NewOrderedNavigableMap()
path := []string{"0", "path"}
_, err := nm.FieldAsString(path)
@@ -887,3 +887,74 @@ func TestFieldAsString(t *testing.T) {
t.Errorf("Expected %+v, received %+v", ErrNotFound, err)
}
}
+
+func TestOrderedNavigableMapString(t *testing.T) {
+ onm := NewOrderedNavigableMap()
+ onm.nm = &DataNode{
+ Type: NMMapType,
+ Map: map[string]*DataNode{
+ "test1": &DataNode{
+ Value: &DataLeaf{
+ Data: "data!",
+ },
+ },
+ },
+ }
+ onmExpect := `{"Map":{"test1":{"Value":{"Data":"data!"}}}}`
+ // fmt.Println(onm.nm)
+ // fmt.Println(onm.String())
+ if onm.String() != onmExpect {
+ t.Errorf("Expected %s but received %s", onmExpect, onm.String())
+ }
+}
+
+func TestOrderedNavigableMapInterface(t *testing.T) {
+ onm := NewOrderedNavigableMap()
+ onm.nm = &DataNode{
+ Type: NMMapType,
+ Map: map[string]*DataNode{
+ "test1": &DataNode{
+ Value: &DataLeaf{
+ Data: "data!",
+ },
+ },
+ },
+ }
+ if !reflect.DeepEqual(onm.nm, onm.Interface()) {
+ t.Errorf("Expected %v but received %v", onm.nm, onm.Interface())
+ }
+}
+
+func TestOrderedNavigableMapAppend(t *testing.T) {
+ onm := NewOrderedNavigableMap()
+ onm.nm.Type = NMMapType
+ onm.Set(&FullPath{
+ PathSlice: []string{"Field1", "Field2", "0"},
+ Path: "Field1.Field2[0]",
+ }, NewLeafNode("1003"))
+ if err := onm.Append(&FullPath{
+ PathSlice: []string{"Field1", "Field2", "0"},
+ Path: "Field1.Field2[0]",
+ }, &DataLeaf{Data: "dataTest"}); err == nil || err != ErrWrongPath {
+ t.Errorf("Expected %v but received %v", ErrWrongPath, err)
+ }
+}
+
+func TestOrderedNavigableMapCompose(t *testing.T) {
+ onm := NewOrderedNavigableMap()
+ onm.nm.Type = NMMapType
+ onm.Set(&FullPath{
+ PathSlice: []string{"Field1", "Field2", "0"},
+ Path: "Field1.Field2[0]",
+ }, NewLeafNode("1003"))
+ onm.orderRef = make(map[string][]*PathItemElement)
+ onm.orderRef = map[string][]*PathItemElement{
+ "Field1.Field2[0]": []*PathItemElement{&PathItemElement{Value: []string{"test"}}},
+ }
+ if err := onm.Compose(&FullPath{
+ PathSlice: []string{"Field1", "Field2", "0"},
+ Path: "Field1.Field2[0]",
+ }, &DataLeaf{Data: "dataTest"}); err != nil {
+ t.Error(err)
+ }
+}
diff --git a/utils/reflect_test.go b/utils/reflect_test.go
index 2cfd5f400..1ed7fe1fd 100644
--- a/utils/reflect_test.go
+++ b/utils/reflect_test.go
@@ -24,6 +24,8 @@ import (
"strings"
"testing"
"time"
+
+ "github.com/ericlagergren/decimal"
)
func TestReflectFieldAsStringOnStruct(t *testing.T) {
@@ -1639,3 +1641,195 @@ func TestMultiplyInt64Error(t *testing.T) {
t.Errorf("Expected ,received: <%+v>", err)
}
}
+
+func TestIfaceAsBigTimeDuration(t *testing.T) {
+ itm := 5 * time.Second
+ exp := decimal.New(int64(itm), 0)
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigInt(t *testing.T) {
+ itm := 20
+ exp := decimal.New(int64(itm), 0)
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigInt8(t *testing.T) {
+ itm := int8(20)
+ exp := decimal.New(int64(itm), 0)
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigInt16(t *testing.T) {
+ itm := int16(4363)
+ exp := decimal.New(int64(itm), 0)
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigInt32(t *testing.T) {
+ itm := int32(4363)
+ exp := decimal.New(int64(itm), 0)
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigInt64(t *testing.T) {
+ itm := int64(4363)
+ exp := decimal.New(int64(itm), 0)
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigUint(t *testing.T) {
+ itm := uint(20)
+ exp := new(decimal.Big).SetUint64(uint64(itm))
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigUint8(t *testing.T) {
+ itm := uint8(20)
+ exp := new(decimal.Big).SetUint64(uint64(itm))
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigUint16(t *testing.T) {
+ itm := uint16(4363)
+ exp := new(decimal.Big).SetUint64(uint64(itm))
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigUint32(t *testing.T) {
+ itm := uint32(4363)
+ exp := new(decimal.Big).SetUint64(uint64(itm))
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigUint64(t *testing.T) {
+ itm := uint64(4363)
+ exp := new(decimal.Big).SetUint64(uint64(itm))
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigFloat32(t *testing.T) {
+ itm := float32(42.2)
+ exp := new(decimal.Big).SetFloat64(float64(itm))
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigFloat64(t *testing.T) {
+ itm := float64(42.2)
+ exp := new(decimal.Big).SetFloat64(itm)
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigString(t *testing.T) {
+ itm := "32ns"
+ exp := new(decimal.Big).SetUint64(32)
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigStringConvert(t *testing.T) {
+ itm := "1.234"
+ exp, _ := new(decimal.Big).SetString(itm)
+ rcv, err := IfaceAsBig(itm)
+ if err != nil {
+ t.Error(err)
+ } else if !reflect.DeepEqual(exp, rcv) {
+ fmt.Printf("%T and %T", exp, rcv)
+ t.Errorf("Expected %v but received %v", exp, rcv)
+ }
+}
+
+func TestIfaceAsBigStringErr1(t *testing.T) {
+ itm := "32ps"
+ _, err := IfaceAsBig(itm)
+ errExpect := `time: unknown unit "ps" in duration "32ps"`
+ if err == nil || err.Error() != errExpect {
+ t.Errorf("Expected %v but received %v", errExpect, err)
+ }
+}
+
+func TestIfaceAsBigStringErr2(t *testing.T) {
+ itm := "can't convert"
+ _, err := IfaceAsBig(itm)
+ errExpect := "can't convert to decimal"
+ if err == nil || err.Error() != errExpect {
+ t.Errorf("Expected %v but received %v", errExpect, err)
+ }
+}
+func TestIfaceAsBigDefault(t *testing.T) {
+ itm := []string{"defaultCase"}
+ _, err := IfaceAsBig(itm)
+ errExpect := "cannot convert field: [defaultCase] to time.Duration"
+ if err == nil || err.Error() != errExpect {
+ t.Errorf("Expected %v but received %v", errExpect, err)
+ }
+}