mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-20 22:58:44 +05:00
Added DynamicDataProvider to AgentRequest
This commit is contained in:
committed by
Dan Christian Bogos
parent
da9344128c
commit
1fd9ac009e
@@ -20,6 +20,7 @@ package utils
|
||||
|
||||
import (
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -93,7 +94,7 @@ func AppendNavMapVal(nm navMap, fldPath *FullPath, val NMInterface) (err error)
|
||||
} else {
|
||||
indx = prevItm.Len()
|
||||
}
|
||||
fldPath.PathItems[len(fldPath.PathItems)-1].Index = &indx
|
||||
fldPath.PathItems[len(fldPath.PathItems)-1].Index = StringPointer(strconv.Itoa(indx))
|
||||
_, err = nm.Set(fldPath, val)
|
||||
return
|
||||
}
|
||||
@@ -109,7 +110,7 @@ func ComposeNavMapVal(nm navMap, fldPath *FullPath, val NMInterface) (err error)
|
||||
} else {
|
||||
indx = prevItmSlice.Len() - 1
|
||||
var prevItm NMInterface
|
||||
if prevItm, err = prevItmSlice.Field(PathItems{{Index: &indx}}); err != nil {
|
||||
if prevItm, err = prevItmSlice.Field(PathItems{{Index: StringPointer(strconv.Itoa(indx))}}); err != nil {
|
||||
if err != ErrNotFound {
|
||||
return
|
||||
}
|
||||
@@ -117,7 +118,7 @@ func ComposeNavMapVal(nm navMap, fldPath *FullPath, val NMInterface) (err error)
|
||||
return
|
||||
}
|
||||
}
|
||||
fldPath.PathItems[len(fldPath.PathItems)-1].Index = &indx
|
||||
fldPath.PathItems[len(fldPath.PathItems)-1].Index = StringPointer(strconv.Itoa(indx))
|
||||
_, err = nm.Set(fldPath, val)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -189,12 +189,12 @@ func TestNavMapFieldAsInterface(t *testing.T) {
|
||||
nM := MapStorage{
|
||||
"FirstLevel": map[string]interface{}{
|
||||
"SecondLevel": []map[string]interface{}{
|
||||
map[string]interface{}{
|
||||
{
|
||||
"ThirdLevel": map[string]interface{}{
|
||||
"Fld1": "Val1",
|
||||
},
|
||||
},
|
||||
map[string]interface{}{
|
||||
{
|
||||
"Count": 10,
|
||||
"ThirdLevel2": map[string]interface{}{
|
||||
"Fld2": []string{"Val1", "Val2", "Val3"},
|
||||
@@ -297,9 +297,10 @@ func TestNavMapGetKeys(t *testing.T) {
|
||||
|
||||
func TestNavMapFieldAsInterface2(t *testing.T) {
|
||||
nM := MapStorage{
|
||||
"Slice": &[]struct{}{{}},
|
||||
"SliceString": []string{"1", "2"},
|
||||
"SliceInterface": []interface{}{1, "2"},
|
||||
"AnotherFirstLevel": "ValAnotherFirstLevel",
|
||||
"Slice": &[]struct{}{{}},
|
||||
"SliceString": []string{"1", "2"},
|
||||
"SliceInterface": []interface{}{1, "2"},
|
||||
}
|
||||
|
||||
path := []string{"Slice[1]"}
|
||||
@@ -379,12 +380,12 @@ func TestNavMapGetField2(t *testing.T) {
|
||||
},
|
||||
"FirstLevel2": MapStorage{
|
||||
"SecondLevel2": []MapStorage{
|
||||
MapStorage{
|
||||
{
|
||||
"ThirdLevel2": MapStorage{
|
||||
"Fld1": "Val1",
|
||||
},
|
||||
},
|
||||
MapStorage{
|
||||
{
|
||||
"Count": 10,
|
||||
"ThirdLevel2": MapStorage{
|
||||
"Fld2": []string{"Val1", "Val2", "Val3"},
|
||||
|
||||
@@ -58,7 +58,9 @@ func (nm NavigableMap2) Field(path PathItems) (val NMInterface, err error) {
|
||||
return nil, ErrNotFound
|
||||
case NMMapType:
|
||||
if path[0].Index != nil {
|
||||
return nil, ErrNotFound
|
||||
path[0].Field = *path[0].Index
|
||||
path[0].Index = nil
|
||||
return el.Field(path)
|
||||
}
|
||||
return el.Field(path[1:])
|
||||
case NMSliceType:
|
||||
|
||||
@@ -68,15 +68,15 @@ func TestNavigableMap2Field(t *testing.T) {
|
||||
t.Errorf("Expected %q ,received: %q", "1001", val.Interface())
|
||||
}
|
||||
|
||||
if _, err := nm.Field(PathItems{{Field: "Field1", Index: IntPointer(0)}}); err != ErrNotFound {
|
||||
if _, err := nm.Field(PathItems{{Field: "Field1", Index: StringPointer("0")}}); err != ErrNotFound {
|
||||
t.Error(err)
|
||||
}
|
||||
if val, err := nm.Field(PathItems{{Field: "Field5", Index: IntPointer(0)}}); err != nil {
|
||||
if val, err := nm.Field(PathItems{{Field: "Field5", Index: StringPointer("0")}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if val.Interface() != 10 {
|
||||
t.Errorf("Expected %q ,received: %q", 10, val.Interface())
|
||||
}
|
||||
if _, err := nm.Field(PathItems{{Field: "Field3", Index: IntPointer(0)}}); err != ErrNotFound {
|
||||
if _, err := nm.Field(PathItems{{Field: "Field3", Index: StringPointer("0")}}); err != ErrNotFound {
|
||||
t.Error(err)
|
||||
}
|
||||
if val, err := nm.Field(PathItems{{Field: "Field3"}, {Field: "Field4"}}); err != nil {
|
||||
@@ -91,11 +91,11 @@ func TestNavigableMap2Set(t *testing.T) {
|
||||
if _, err := nm.Set(nil, nil); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := nm.Set(PathItems{{Field: "Field1", Index: IntPointer(10)}}, NewNMData("1001")); err != ErrWrongPath {
|
||||
if _, err := nm.Set(PathItems{{Field: "Field1", Index: StringPointer("10")}}, NewNMData("1001")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
expected := NavigableMap2{"Field1": &NMSlice{NewNMData("1001")}}
|
||||
if _, err := nm.Set(PathItems{{Field: "Field1", Index: IntPointer(0)}}, NewNMData("1001")); err != nil {
|
||||
if _, err := nm.Set(PathItems{{Field: "Field1", Index: StringPointer("0")}}, NewNMData("1001")); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
@@ -109,14 +109,14 @@ func TestNavigableMap2Set(t *testing.T) {
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
if _, err := nm.Set(PathItems{{Field: "Field2", Index: IntPointer(1)}}, NewNMData("1003")); err != ErrWrongPath {
|
||||
if _, err := nm.Set(PathItems{{Field: "Field2", Index: StringPointer("1")}}, NewNMData("1003")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
expected = NavigableMap2{
|
||||
"Field1": &NMSlice{NewNMData("1001"), NewNMData("1003")},
|
||||
"Field2": NewNMData("1002"),
|
||||
}
|
||||
if _, err := nm.Set(PathItems{{Field: "Field1", Index: IntPointer(1)}}, NewNMData("1003")); err != nil {
|
||||
if _, err := nm.Set(PathItems{{Field: "Field1", Index: StringPointer("1")}}, NewNMData("1003")); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
@@ -131,7 +131,7 @@ func TestNavigableMap2Set(t *testing.T) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
|
||||
if _, err := nm.Set(PathItems{{Field: "Field3", Index: IntPointer(10)}, {}}, NewNMData("1001")); err != ErrWrongPath {
|
||||
if _, err := nm.Set(PathItems{{Field: "Field3", Index: StringPointer("10")}, {}}, NewNMData("1001")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
expected = NavigableMap2{
|
||||
@@ -139,13 +139,13 @@ func TestNavigableMap2Set(t *testing.T) {
|
||||
"Field2": NewNMData("1004"),
|
||||
"Field3": &NMSlice{NavigableMap2{"Field4": NewNMData("1005")}},
|
||||
}
|
||||
if _, err := nm.Set(PathItems{{Field: "Field3", Index: IntPointer(0)}, {Field: "Field4"}}, NewNMData("1005")); err != nil {
|
||||
if _, err := nm.Set(PathItems{{Field: "Field3", Index: StringPointer("0")}, {Field: "Field4"}}, NewNMData("1005")); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
|
||||
if _, err := nm.Set(PathItems{{Field: "Field5"}, {Field: "Field6", Index: IntPointer(10)}}, NewNMData("1006")); err != ErrWrongPath {
|
||||
if _, err := nm.Set(PathItems{{Field: "Field5"}, {Field: "Field6", Index: StringPointer("10")}}, NewNMData("1006")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ func TestNavigableMap2Set(t *testing.T) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
|
||||
if _, err := nm.Set(PathItems{{Field: "Field2", Index: IntPointer(0)}, {}}, NewNMData("1006")); err != ErrWrongPath {
|
||||
if _, err := nm.Set(PathItems{{Field: "Field2", Index: StringPointer("0")}, {}}, NewNMData("1006")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
expected = NavigableMap2{
|
||||
@@ -170,7 +170,7 @@ func TestNavigableMap2Set(t *testing.T) {
|
||||
"Field3": &NMSlice{NavigableMap2{"Field4": NewNMData("1005")}},
|
||||
"Field5": NavigableMap2{"Field6": NewNMData("1006")},
|
||||
}
|
||||
if _, err := nm.Set(PathItems{{Field: "Field1", Index: IntPointer(2)}, {Field: "Field6"}}, NewNMData("1006")); err != nil {
|
||||
if _, err := nm.Set(PathItems{{Field: "Field1", Index: StringPointer("2")}, {Field: "Field6"}}, NewNMData("1006")); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
@@ -238,7 +238,7 @@ func TestNavigableMap2Remove(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if err := nm.Remove(PathItems{{Index: IntPointer(-1)}, {}}); err != nil {
|
||||
if err := nm.Remove(PathItems{{Index: StringPointer("-1")}, {}}); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
expected := NavigableMap2{
|
||||
@@ -269,13 +269,13 @@ func TestNavigableMap2Remove(t *testing.T) {
|
||||
"Field5": &NMSlice{NewNMData(101)},
|
||||
}
|
||||
|
||||
if err := nm.Remove(PathItems{{Field: "Field5", Index: IntPointer(0)}}); err != nil {
|
||||
if err := nm.Remove(PathItems{{Field: "Field5", Index: StringPointer("0")}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
|
||||
if err := nm.Remove(PathItems{{Field: "Field1", Index: IntPointer(0)}, {}}); err != ErrWrongPath {
|
||||
if err := nm.Remove(PathItems{{Field: "Field1", Index: StringPointer("0")}, {}}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -284,7 +284,7 @@ func TestNavigableMap2Remove(t *testing.T) {
|
||||
"Field3": NavigableMap2{"Field4": NewNMData("Val")},
|
||||
}
|
||||
|
||||
if err := nm.Remove(PathItems{{Field: "Field5", Index: IntPointer(0)}}); err != nil {
|
||||
if err := nm.Remove(PathItems{{Field: "Field5", Index: StringPointer("0")}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
@@ -295,7 +295,7 @@ func TestNavigableMap2Remove(t *testing.T) {
|
||||
"Field3": NavigableMap2{"Field4": NewNMData("Val")},
|
||||
"Field5": &NMSlice{NavigableMap2{"Field42": NewNMData("Val2")}},
|
||||
}
|
||||
if err := nm.Remove(PathItems{{Field: "Field5", Index: IntPointer(0)}, {Field: "Field42", Index: IntPointer(0)}}); err != ErrWrongPath {
|
||||
if err := nm.Remove(PathItems{{Field: "Field5", Index: StringPointer("0")}, {Field: "Field42", Index: StringPointer("0")}}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -305,7 +305,7 @@ func TestNavigableMap2Remove(t *testing.T) {
|
||||
"Field3": NavigableMap2{"Field4": NewNMData("Val")},
|
||||
}
|
||||
|
||||
if err := nm.Remove(PathItems{{Field: "Field5", Index: IntPointer(0)}, {Field: "Field42"}}); err != nil {
|
||||
if err := nm.Remove(PathItems{{Field: "Field5", Index: StringPointer("0")}, {Field: "Field42"}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
@@ -314,7 +314,7 @@ func TestNavigableMap2Remove(t *testing.T) {
|
||||
if err := nm.Remove(PathItems{{Field: "Field1"}, {}}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
if err := nm.Remove(PathItems{{Field: "Field3"}, {Field: "Field4", Index: IntPointer(0)}}); err != ErrWrongPath {
|
||||
if err := nm.Remove(PathItems{{Field: "Field3"}, {Field: "Field4", Index: StringPointer("0")}}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
expected = NavigableMap2{
|
||||
@@ -357,7 +357,7 @@ func TestNavigableMap2GetSet(t *testing.T) {
|
||||
t.Errorf("Expected %q ,received: %q", 5, val.Interface())
|
||||
}
|
||||
|
||||
path = PathItems{{Field: "Field2", Index: IntPointer(2)}}
|
||||
path = PathItems{{Field: "Field2", Index: StringPointer("2")}}
|
||||
if _, err := nm.Set(path, NewNMData("500")); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -367,17 +367,17 @@ func TestNavigableMap2GetSet(t *testing.T) {
|
||||
t.Errorf("Expected %q ,received: %q", "500", val.Interface())
|
||||
}
|
||||
|
||||
path = PathItems{{Field: "Field2", Index: IntPointer(1)}, {Field: "Account"}}
|
||||
path = PathItems{{Field: "Field2", Index: StringPointer("1")}, {Field: "Account"}}
|
||||
if _, err := nm.Set(path, NewNMData("5")); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
path = PathItems{{Field: "Field2", Index: IntPointer(1)}, {Field: "Account"}}
|
||||
path = PathItems{{Field: "Field2", Index: StringPointer("1")}, {Field: "Account"}}
|
||||
if val, err := nm.Field(path); err != nil {
|
||||
t.Error(err)
|
||||
} else if val.Interface() != "5" {
|
||||
t.Errorf("Expected %q ,received: %q", "5", val.Interface())
|
||||
}
|
||||
path = PathItems{{Field: "Field2", Index: IntPointer(1)}, {Field: "Account", Index: IntPointer(0)}}
|
||||
path = PathItems{{Field: "Field2", Index: StringPointer("1")}, {Field: "Account", Index: StringPointer("0")}}
|
||||
if _, err := nm.Field(path); err != ErrNotFound {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
package utils
|
||||
|
||||
import "strconv"
|
||||
|
||||
// NMSlice is the basic slice of NM interface
|
||||
type NMSlice []NMInterface
|
||||
|
||||
@@ -46,7 +48,10 @@ func (nms *NMSlice) Field(path PathItems) (val NMInterface, err error) {
|
||||
if nms.Empty() || path[0].Index == nil {
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
idx := *path[0].Index
|
||||
var idx int
|
||||
if idx, err = strconv.Atoi(*path[0].Index); err != nil {
|
||||
return
|
||||
}
|
||||
if idx < 0 {
|
||||
idx = len(*nms) + idx
|
||||
}
|
||||
@@ -64,7 +69,10 @@ func (nms *NMSlice) Set(path PathItems, val NMInterface) (addedNew bool, err err
|
||||
if len(path) == 0 || path[0].Index == nil {
|
||||
return false, ErrWrongPath
|
||||
}
|
||||
idx := *path[0].Index
|
||||
var idx int
|
||||
if idx, err = strconv.Atoi(*path[0].Index); err != nil {
|
||||
return
|
||||
}
|
||||
if idx == len(*nms) { // append element
|
||||
addedNew = true
|
||||
if len(path) == 1 {
|
||||
@@ -84,7 +92,7 @@ func (nms *NMSlice) Set(path PathItems, val NMInterface) (addedNew bool, err err
|
||||
if idx < 0 || idx >= len(*nms) {
|
||||
return false, ErrWrongPath
|
||||
}
|
||||
path[0].Index = &idx
|
||||
path[0].Index = StringPointer(strconv.Itoa(idx))
|
||||
if len(path) == 1 {
|
||||
(*nms)[idx] = val
|
||||
return
|
||||
@@ -100,14 +108,17 @@ func (nms *NMSlice) Remove(path PathItems) (err error) {
|
||||
if len(path) == 0 || path[0].Index == nil {
|
||||
return ErrWrongPath
|
||||
}
|
||||
idx := *path[0].Index
|
||||
var idx int
|
||||
if idx, err = strconv.Atoi(*path[0].Index); err != nil {
|
||||
return
|
||||
}
|
||||
if idx < 0 {
|
||||
idx = len(*nms) + idx
|
||||
}
|
||||
if idx < 0 || idx >= len(*nms) { // already removed
|
||||
return
|
||||
}
|
||||
path[0].Index = &idx
|
||||
path[0].Index = StringPointer(strconv.Itoa(idx))
|
||||
if len(path) == 1 {
|
||||
*nms = append((*nms)[:idx], (*nms)[idx+1:]...)
|
||||
return
|
||||
|
||||
@@ -57,18 +57,18 @@ func TestNMSliceField(t *testing.T) {
|
||||
if _, err := nm.Field(PathItems{{}}); err != ErrNotFound {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := nm.Field(PathItems{{Index: IntPointer(4)}}); err != ErrNotFound {
|
||||
if _, err := nm.Field(PathItems{{Index: StringPointer("4")}}); err != ErrNotFound {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := nm.Field(nil); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
if val, err := nm.Field(PathItems{{Field: "None", Index: IntPointer(-1)}, {Field: "Field1"}}); err != nil {
|
||||
if val, err := nm.Field(PathItems{{Field: "None", Index: StringPointer("-1")}, {Field: "Field1"}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if val.Interface() != "Val" {
|
||||
t.Errorf("Expected %q ,received: %q", "Val", val.Interface())
|
||||
}
|
||||
if val, err := nm.Field(PathItems{{Field: "1234", Index: IntPointer(1)}}); err != nil {
|
||||
if val, err := nm.Field(PathItems{{Field: "1234", Index: StringPointer("1")}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if val.Interface() != "1003" {
|
||||
t.Errorf("Expected %q ,received: %q", "Val", val.Interface())
|
||||
@@ -81,31 +81,31 @@ func TestNMSliceSet(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
expected := &NMSlice{NewNMData("1001")}
|
||||
if _, err := nm.Set(PathItems{{Field: "1234", Index: IntPointer(0)}}, NewNMData("1001")); err != nil {
|
||||
if _, err := nm.Set(PathItems{{Field: "1234", Index: StringPointer("0")}}, NewNMData("1001")); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
if _, err := nm.Set(PathItems{{Field: "1234", Index: IntPointer(1)}, {Field: "Field1", Index: IntPointer(1)}},
|
||||
if _, err := nm.Set(PathItems{{Field: "1234", Index: StringPointer("1")}, {Field: "Field1", Index: StringPointer("1")}},
|
||||
NewNMData("1001")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
expected = &NMSlice{NewNMData("1001"), NavigableMap2{"Field1": NewNMData("1001")}}
|
||||
if _, err := nm.Set(PathItems{{Field: "1234", Index: IntPointer(1)}, {Field: "Field1"}},
|
||||
if _, err := nm.Set(PathItems{{Field: "1234", Index: StringPointer("1")}, {Field: "Field1"}},
|
||||
NewNMData("1001")); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
expected = &NMSlice{NewNMData("1001"), NewNMData("1001")}
|
||||
if _, err := nm.Set(PathItems{{Field: "1234", Index: IntPointer(-1)}}, NewNMData("1001")); err != nil {
|
||||
if _, err := nm.Set(PathItems{{Field: "1234", Index: StringPointer("-1")}}, NewNMData("1001")); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
|
||||
nm = &NMSlice{&NMSlice{}}
|
||||
if _, err := nm.Set(PathItems{{Field: "1234", Index: IntPointer(0)}, {}}, NewNMData("1001")); err != ErrWrongPath {
|
||||
if _, err := nm.Set(PathItems{{Field: "1234", Index: StringPointer("0")}, {}}, NewNMData("1001")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -156,7 +156,7 @@ func TestNMSliceRemove(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if err := nm.Remove(PathItems{{Index: IntPointer(-1)}, {}}); err != ErrWrongPath {
|
||||
if err := nm.Remove(PathItems{{Index: StringPointer("-1")}, {}}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
expected := &NMSlice{
|
||||
@@ -165,13 +165,13 @@ func TestNMSliceRemove(t *testing.T) {
|
||||
&NavigableMap2{"Field1": NewNMData("Val")},
|
||||
}
|
||||
|
||||
if err := nm.Remove(PathItems{{Index: IntPointer(-1)}}); err != nil {
|
||||
if err := nm.Remove(PathItems{{Index: StringPointer("-1")}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
|
||||
if err := nm.Remove(PathItems{{Index: IntPointer(1)}, {}}); err != ErrWrongPath {
|
||||
if err := nm.Remove(PathItems{{Index: StringPointer("1")}, {}}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -179,25 +179,25 @@ func TestNMSliceRemove(t *testing.T) {
|
||||
NewNMData("1001"),
|
||||
&NavigableMap2{"Field1": NewNMData("Val")},
|
||||
}
|
||||
if err := nm.Remove(PathItems{{Index: IntPointer(1)}}); err != nil {
|
||||
if err := nm.Remove(PathItems{{Index: StringPointer("1")}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
|
||||
if err := nm.Remove(PathItems{{Index: IntPointer(10)}}); err != nil {
|
||||
if err := nm.Remove(PathItems{{Index: StringPointer("10")}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
}
|
||||
|
||||
if err := nm.Remove(PathItems{{Index: IntPointer(1)}, {Field: "Field1", Index: IntPointer(1)}}); err != ErrWrongPath {
|
||||
if err := nm.Remove(PathItems{{Index: StringPointer("1")}, {Field: "Field1", Index: StringPointer("1")}}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
expected = &NMSlice{
|
||||
NewNMData("1001"),
|
||||
}
|
||||
if err := nm.Remove(PathItems{{Index: IntPointer(1)}, {Field: "Field1"}}); err != nil {
|
||||
if err := nm.Remove(PathItems{{Index: StringPointer("1")}, {Field: "Field1"}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(nm, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, nm)
|
||||
|
||||
@@ -20,6 +20,7 @@ package utils
|
||||
|
||||
import (
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -108,7 +109,7 @@ func (onm *OrderedNavigableMap) Set(fullPath *FullPath, val NMInterface) (addedN
|
||||
pathItmsSet = make([]PathItems, len(*val.(*NMSlice)))
|
||||
for i := 0; i < val.Len(); i++ {
|
||||
pathItms := fullPath.PathItems.Clone()
|
||||
pathItms[len(pathItms)-1].Index = IntPointer(i)
|
||||
pathItms[len(pathItms)-1].Index = StringPointer(strconv.Itoa(i))
|
||||
pathItmsSet[i] = pathItms
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -38,11 +38,11 @@ func TestOrderedNavigableMap(t *testing.T) {
|
||||
|
||||
onm.Set(&FullPath{
|
||||
Path: "Field2[0]",
|
||||
PathItems: PathItems{{Field: "Field2", Index: IntPointer(0)}},
|
||||
PathItems: PathItems{{Field: "Field2", Index: StringPointer("0")}},
|
||||
}, NewNMData("1001"))
|
||||
expOrder = []PathItems{
|
||||
PathItems{{Field: "Field1"}},
|
||||
PathItems{{Field: "Field2", Index: IntPointer(0)}},
|
||||
PathItems{{Field: "Field2", Index: StringPointer("0")}},
|
||||
}
|
||||
if !reflect.DeepEqual(expOrder, onm.GetOrder()) {
|
||||
t.Errorf("Expected %s ,received: %s", expOrder, ToJSON(onm.GetOrder()))
|
||||
@@ -51,15 +51,15 @@ func TestOrderedNavigableMap(t *testing.T) {
|
||||
onm.Set(&FullPath{
|
||||
Path: "Field2[1].Account[0]",
|
||||
PathItems: PathItems{
|
||||
{Field: "Field2", Index: IntPointer(1)},
|
||||
{Field: "Account", Index: IntPointer(0)}},
|
||||
{Field: "Field2", Index: StringPointer("1")},
|
||||
{Field: "Account", Index: StringPointer("0")}},
|
||||
}, NewNMData(10))
|
||||
expOrder = []PathItems{
|
||||
PathItems{{Field: "Field1"}},
|
||||
PathItems{{Field: "Field2", Index: IntPointer(0)}},
|
||||
PathItems{{Field: "Field2", Index: StringPointer("0")}},
|
||||
PathItems{
|
||||
{Field: "Field2", Index: IntPointer(1)},
|
||||
{Field: "Account", Index: IntPointer(0)}},
|
||||
{Field: "Field2", Index: StringPointer("1")},
|
||||
{Field: "Account", Index: StringPointer("0")}},
|
||||
}
|
||||
if !reflect.DeepEqual(expOrder, onm.GetOrder()) {
|
||||
t.Errorf("Expected %s ,received: %s", expOrder, ToJSON(onm.GetOrder()))
|
||||
@@ -68,18 +68,18 @@ func TestOrderedNavigableMap(t *testing.T) {
|
||||
onm.Set(&FullPath{
|
||||
Path: "Field2[1].Account[1]",
|
||||
PathItems: PathItems{
|
||||
{Field: "Field2", Index: IntPointer(1)},
|
||||
{Field: "Account", Index: IntPointer(1)}},
|
||||
{Field: "Field2", Index: StringPointer("1")},
|
||||
{Field: "Account", Index: StringPointer("1")}},
|
||||
}, NewNMData(11))
|
||||
expOrder = []PathItems{
|
||||
PathItems{{Field: "Field1"}},
|
||||
PathItems{{Field: "Field2", Index: IntPointer(0)}},
|
||||
PathItems{{Field: "Field2", Index: StringPointer("0")}},
|
||||
PathItems{
|
||||
{Field: "Field2", Index: IntPointer(1)},
|
||||
{Field: "Account", Index: IntPointer(0)}},
|
||||
{Field: "Field2", Index: StringPointer("1")},
|
||||
{Field: "Account", Index: StringPointer("0")}},
|
||||
PathItems{
|
||||
{Field: "Field2", Index: IntPointer(1)},
|
||||
{Field: "Account", Index: IntPointer(1)}},
|
||||
{Field: "Field2", Index: StringPointer("1")},
|
||||
{Field: "Account", Index: StringPointer("1")}},
|
||||
}
|
||||
if !reflect.DeepEqual(expOrder, onm.GetOrder()) {
|
||||
t.Errorf("Expected %s ,received: %s", expOrder, ToJSON(onm.GetOrder()))
|
||||
@@ -87,18 +87,18 @@ func TestOrderedNavigableMap(t *testing.T) {
|
||||
|
||||
onm.Set(&FullPath{
|
||||
Path: "Field2[2]",
|
||||
PathItems: PathItems{{Field: "Field2", Index: IntPointer(2)}},
|
||||
PathItems: PathItems{{Field: "Field2", Index: StringPointer("2")}},
|
||||
}, NewNMData(111))
|
||||
expOrder = []PathItems{
|
||||
PathItems{{Field: "Field1"}},
|
||||
PathItems{{Field: "Field2", Index: IntPointer(0)}},
|
||||
PathItems{{Field: "Field2", Index: StringPointer("0")}},
|
||||
PathItems{
|
||||
{Field: "Field2", Index: IntPointer(1)},
|
||||
{Field: "Account", Index: IntPointer(0)}},
|
||||
{Field: "Field2", Index: StringPointer("1")},
|
||||
{Field: "Account", Index: StringPointer("0")}},
|
||||
PathItems{
|
||||
{Field: "Field2", Index: IntPointer(1)},
|
||||
{Field: "Account", Index: IntPointer(1)}},
|
||||
PathItems{{Field: "Field2", Index: IntPointer(2)}},
|
||||
{Field: "Field2", Index: StringPointer("1")},
|
||||
{Field: "Account", Index: StringPointer("1")}},
|
||||
PathItems{{Field: "Field2", Index: StringPointer("2")}},
|
||||
}
|
||||
if !reflect.DeepEqual(expOrder, onm.GetOrder()) {
|
||||
t.Errorf("Expected %s ,received: %s", expOrder, ToJSON(onm.GetOrder()))
|
||||
@@ -113,14 +113,14 @@ func TestOrderedNavigableMap(t *testing.T) {
|
||||
}, NewNMData(5))
|
||||
expOrder = []PathItems{
|
||||
PathItems{{Field: "Field1"}},
|
||||
PathItems{{Field: "Field2", Index: IntPointer(0)}},
|
||||
PathItems{{Field: "Field2", Index: StringPointer("0")}},
|
||||
PathItems{
|
||||
{Field: "Field2", Index: IntPointer(1)},
|
||||
{Field: "Account", Index: IntPointer(0)}},
|
||||
{Field: "Field2", Index: StringPointer("1")},
|
||||
{Field: "Account", Index: StringPointer("0")}},
|
||||
PathItems{
|
||||
{Field: "Field2", Index: IntPointer(1)},
|
||||
{Field: "Account", Index: IntPointer(1)}},
|
||||
PathItems{{Field: "Field2", Index: IntPointer(2)}},
|
||||
{Field: "Field2", Index: StringPointer("1")},
|
||||
{Field: "Account", Index: StringPointer("1")}},
|
||||
PathItems{{Field: "Field2", Index: StringPointer("2")}},
|
||||
PathItems{
|
||||
{Field: "Field3"},
|
||||
{Field: "Field4"},
|
||||
@@ -173,14 +173,14 @@ func TestOrderedNavigableMap(t *testing.T) {
|
||||
{Field: "Field3"},
|
||||
{Field: "Field4"},
|
||||
{Field: "Field5"}},
|
||||
PathItems{{Field: "Field2", Index: IntPointer(0)}},
|
||||
PathItems{{Field: "Field2", Index: IntPointer(1)}},
|
||||
PathItems{{Field: "Field2", Index: StringPointer("0")}},
|
||||
PathItems{{Field: "Field2", Index: StringPointer("1")}},
|
||||
}
|
||||
if !reflect.DeepEqual(expOrder, onm.GetOrder()) {
|
||||
t.Errorf("Expected %s ,received: %s", expOrder, onm.GetOrder())
|
||||
}
|
||||
|
||||
path = PathItems{{Field: "Field2", Index: IntPointer(0)}}
|
||||
path = PathItems{{Field: "Field2", Index: StringPointer("0")}}
|
||||
if val, err := onm.Field(path); err != nil {
|
||||
t.Error(err)
|
||||
} else if val.Interface() != "500" {
|
||||
@@ -248,15 +248,15 @@ func TestOrderedNavigableMapField(t *testing.T) {
|
||||
t.Errorf("Expected %q ,received: %q", "1001", val.Interface())
|
||||
}
|
||||
|
||||
if _, err := nm.Field(PathItems{{Field: "Field1", Index: IntPointer(0)}}); err != ErrNotFound {
|
||||
if _, err := nm.Field(PathItems{{Field: "Field1", Index: StringPointer("0")}}); err != ErrNotFound {
|
||||
t.Error(err)
|
||||
}
|
||||
if val, err := nm.Field(PathItems{{Field: "Field5", Index: IntPointer(0)}}); err != nil {
|
||||
if val, err := nm.Field(PathItems{{Field: "Field5", Index: StringPointer("0")}}); err != nil {
|
||||
t.Error(err)
|
||||
} else if val.Interface() != 10 {
|
||||
t.Errorf("Expected %q ,received: %q", 10, val.Interface())
|
||||
}
|
||||
if _, err := nm.Field(PathItems{{Field: "Field3", Index: IntPointer(0)}}); err != ErrNotFound {
|
||||
if _, err := nm.Field(PathItems{{Field: "Field3", Index: StringPointer("0")}}); err != ErrNotFound {
|
||||
t.Error(err)
|
||||
}
|
||||
if val, err := nm.Field(PathItems{{Field: "Field3"}, {Field: "Field4"}}); err != nil {
|
||||
@@ -298,17 +298,17 @@ func TestOrderedNavigableMapLen(t *testing.T) {
|
||||
func TestOrderedNavigableMapGetSet(t *testing.T) {
|
||||
nm := NewOrderedNavigableMap()
|
||||
nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Account", Index: IntPointer(0)}},
|
||||
PathItems: PathItems{{Field: "Account", Index: StringPointer("0")}},
|
||||
Path: "Account",
|
||||
}, NewNMData(1001))
|
||||
nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Account", Index: IntPointer(1)}},
|
||||
PathItems: PathItems{{Field: "Account", Index: StringPointer("1")}},
|
||||
Path: "Account",
|
||||
}, NewNMData("account_on_new_branch"))
|
||||
|
||||
expectedOrder := []PathItems{
|
||||
{{Field: "Account", Index: IntPointer(0)}},
|
||||
{{Field: "Account", Index: IntPointer(1)}},
|
||||
{{Field: "Account", Index: StringPointer("0")}},
|
||||
{{Field: "Account", Index: StringPointer("1")}},
|
||||
}
|
||||
|
||||
if recivedOrder := nm.GetOrder(); !reflect.DeepEqual(expectedOrder, recivedOrder) {
|
||||
@@ -346,7 +346,7 @@ func TestOrderedNavigableMapGetSet(t *testing.T) {
|
||||
t.Errorf("Expected %q ,received: %q", 5, val.Interface())
|
||||
}
|
||||
|
||||
path = PathItems{{Field: "Field2", Index: IntPointer(2)}}
|
||||
path = PathItems{{Field: "Field2", Index: StringPointer("2")}}
|
||||
if _, err := nm.Set(&FullPath{Path: path.String(), PathItems: path}, NewNMData("500")); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -356,17 +356,17 @@ func TestOrderedNavigableMapGetSet(t *testing.T) {
|
||||
t.Errorf("Expected %q ,received: %q", "500", val.Interface())
|
||||
}
|
||||
|
||||
path = PathItems{{Field: "Field2", Index: IntPointer(1)}, {Field: "Account"}}
|
||||
path = PathItems{{Field: "Field2", Index: StringPointer("1")}, {Field: "Account"}}
|
||||
if _, err := nm.Set(&FullPath{Path: path.String(), PathItems: path}, NewNMData("5")); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
path = PathItems{{Field: "Field2", Index: IntPointer(1)}, {Field: "Account"}}
|
||||
path = PathItems{{Field: "Field2", Index: StringPointer("1")}, {Field: "Account"}}
|
||||
if val, err := nm.Field(path); err != nil {
|
||||
t.Error(err)
|
||||
} else if val.Interface() != "5" {
|
||||
t.Errorf("Expected %q ,received: %q", "5", val.Interface())
|
||||
}
|
||||
path = PathItems{{Field: "Field2", Index: IntPointer(1)}, {Field: "Account", Index: IntPointer(0)}}
|
||||
path = PathItems{{Field: "Field2", Index: StringPointer("1")}, {Field: "Account", Index: StringPointer("0")}}
|
||||
if _, err := nm.Field(path); err != ErrNotFound {
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -423,26 +423,26 @@ func TestOrderedNavigableMapFieldAsString(t *testing.T) {
|
||||
func TestOrderedNavigableMapGetOrder(t *testing.T) {
|
||||
nm := NewOrderedNavigableMap()
|
||||
nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field1"}, {Field: "Field2", Index: IntPointer(0)}},
|
||||
PathItems: PathItems{{Field: "Field1"}, {Field: "Field2", Index: StringPointer("0")}},
|
||||
Path: "Field1.Field2[0]",
|
||||
}, NewNMData("1003"))
|
||||
nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field1"}, {Field: "Field2", Index: IntPointer(1)}},
|
||||
PathItems: PathItems{{Field: "Field1"}, {Field: "Field2", Index: StringPointer("1")}},
|
||||
Path: "Field1.Field2[1]",
|
||||
}, NewNMData("Val"))
|
||||
nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field3"}, {Field: "Field4"}, {Field: "Field5", Index: IntPointer(0)}},
|
||||
PathItems: PathItems{{Field: "Field3"}, {Field: "Field4"}, {Field: "Field5", Index: StringPointer("0")}},
|
||||
Path: "Field3.Field4.Field5",
|
||||
}, NewNMData("1001"))
|
||||
nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field1"}, {Field: "Field2", Index: IntPointer(2)}},
|
||||
PathItems: PathItems{{Field: "Field1"}, {Field: "Field2", Index: StringPointer("2")}},
|
||||
Path: "Field1.Field2[2]",
|
||||
}, NewNMData(101))
|
||||
expected := []PathItems{
|
||||
{{Field: "Field1"}, {Field: "Field2", Index: IntPointer(0)}},
|
||||
{{Field: "Field1"}, {Field: "Field2", Index: IntPointer(1)}},
|
||||
{{Field: "Field3"}, {Field: "Field4"}, {Field: "Field5", Index: IntPointer(0)}},
|
||||
{{Field: "Field1"}, {Field: "Field2", Index: IntPointer(2)}},
|
||||
{{Field: "Field1"}, {Field: "Field2", Index: StringPointer("0")}},
|
||||
{{Field: "Field1"}, {Field: "Field2", Index: StringPointer("1")}},
|
||||
{{Field: "Field3"}, {Field: "Field4"}, {Field: "Field5", Index: StringPointer("0")}},
|
||||
{{Field: "Field1"}, {Field: "Field2", Index: StringPointer("2")}},
|
||||
}
|
||||
if rply := nm.GetOrder(); !reflect.DeepEqual(rply, expected) {
|
||||
t.Errorf("Expected %s ,received: %s", expected, rply)
|
||||
@@ -457,18 +457,18 @@ func TestOrderedNavigableMapSet(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field1", Index: IntPointer(10)}},
|
||||
PathItems: PathItems{{Field: "Field1", Index: StringPointer("10")}},
|
||||
Path: "Field1[10]",
|
||||
}, NewNMData("1001")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field1", Index: IntPointer(10)}, {Field: "Field2"}},
|
||||
PathItems: PathItems{{Field: "Field1", Index: StringPointer("10")}, {Field: "Field2"}},
|
||||
Path: "Field1[10].Field2",
|
||||
}, NewNMData("1001")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
path := PathItems{{Field: "Field1", Index: IntPointer(0)}}
|
||||
path := PathItems{{Field: "Field1", Index: StringPointer("0")}}
|
||||
if addedNew, err := nm.Set(&FullPath{
|
||||
PathItems: path,
|
||||
Path: path.String(),
|
||||
@@ -486,26 +486,26 @@ func TestOrderedNavigableMapSet(t *testing.T) {
|
||||
t.Errorf("Expected %s ,received: %s", order, nm.GetOrder())
|
||||
}
|
||||
if _, err := nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field1", Index: IntPointer(0)}, {}},
|
||||
PathItems: PathItems{{Field: "Field1", Index: StringPointer("0")}, {}},
|
||||
Path: "Field1[0]",
|
||||
}, NewNMData("1001")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field1", Index: IntPointer(10)}},
|
||||
PathItems: PathItems{{Field: "Field1", Index: StringPointer("10")}},
|
||||
Path: "Field1[10]",
|
||||
}, NewNMData("1001")); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if _, err := nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field1", Index: IntPointer(0)}, {}},
|
||||
PathItems: PathItems{{Field: "Field1", Index: StringPointer("0")}, {}},
|
||||
Path: "Field1[0]",
|
||||
}, &NMSlice{}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
if _, err := nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field1", Index: IntPointer(10)}},
|
||||
PathItems: PathItems{{Field: "Field1", Index: StringPointer("10")}},
|
||||
Path: "Field[10]",
|
||||
}, &NMSlice{}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
@@ -547,7 +547,7 @@ func TestOrderedNavigableMapSet(t *testing.T) {
|
||||
if !reflect.DeepEqual(nm.GetOrder(), order) {
|
||||
t.Errorf("Expected %s ,received: %s", order, nm.GetOrder())
|
||||
}
|
||||
path = PathItems{{Field: "Field1", Index: IntPointer(1)}}
|
||||
path = PathItems{{Field: "Field1", Index: StringPointer("1")}}
|
||||
nMap = NavigableMap2{
|
||||
"Field1": &NMSlice{NewNMData("1002"), NewNMData("1003")},
|
||||
"Field2": NewNMData("1002"),
|
||||
@@ -574,7 +574,7 @@ func TestOrderedNavigableMapSet(t *testing.T) {
|
||||
"Field2": NewNMData("1002"),
|
||||
"Field3": obj,
|
||||
}
|
||||
order = append(order, PathItems{{Field: "Field3", Index: IntPointer(0)}}, PathItems{{Field: "Field3", Index: IntPointer(1)}})
|
||||
order = append(order, PathItems{{Field: "Field3", Index: StringPointer("0")}}, PathItems{{Field: "Field3", Index: StringPointer("1")}})
|
||||
if addedNew, err := nm.Set(&FullPath{
|
||||
PathItems: path,
|
||||
Path: path.String(),
|
||||
@@ -597,10 +597,10 @@ func TestOrderedNavigableMapSet(t *testing.T) {
|
||||
}
|
||||
order = []PathItems{
|
||||
{{Field: "Field2"}},
|
||||
{{Field: "Field3", Index: IntPointer(0)}},
|
||||
{{Field: "Field3", Index: IntPointer(1)}},
|
||||
{{Field: "Field1", Index: IntPointer(0)}},
|
||||
{{Field: "Field1", Index: IntPointer(1)}},
|
||||
{{Field: "Field3", Index: StringPointer("0")}},
|
||||
{{Field: "Field3", Index: StringPointer("1")}},
|
||||
{{Field: "Field1", Index: StringPointer("0")}},
|
||||
{{Field: "Field1", Index: StringPointer("1")}},
|
||||
}
|
||||
if addedNew, err := nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field1"}},
|
||||
@@ -624,13 +624,13 @@ func TestOrderedNavigableMapSet(t *testing.T) {
|
||||
}
|
||||
order = []PathItems{
|
||||
{{Field: "Field2"}},
|
||||
{{Field: "Field3", Index: IntPointer(0)}},
|
||||
{{Field: "Field1", Index: IntPointer(0)}},
|
||||
{{Field: "Field1", Index: IntPointer(1)}},
|
||||
{{Field: "Field3", Index: IntPointer(1)}},
|
||||
{{Field: "Field3", Index: StringPointer("0")}},
|
||||
{{Field: "Field1", Index: StringPointer("0")}},
|
||||
{{Field: "Field1", Index: StringPointer("1")}},
|
||||
{{Field: "Field3", Index: StringPointer("1")}},
|
||||
}
|
||||
if addedNew, err := nm.Set(&FullPath{
|
||||
PathItems: PathItems{{Field: "Field3", Index: IntPointer(-1)}},
|
||||
PathItems: PathItems{{Field: "Field3", Index: StringPointer("-1")}},
|
||||
Path: "Field3[-1]",
|
||||
}, NewNMData("1007")); err != nil {
|
||||
t.Error(err)
|
||||
@@ -673,7 +673,7 @@ func TestOrderedNavigableMapRemove(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if err := nm.Remove(&FullPath{PathItems: PathItems{{Index: IntPointer(-1)}, {}}}); err != ErrWrongPath {
|
||||
if err := nm.Remove(&FullPath{PathItems: PathItems{{Index: StringPointer("-1")}, {}}}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
nMap := NavigableMap2{
|
||||
@@ -686,8 +686,8 @@ func TestOrderedNavigableMapRemove(t *testing.T) {
|
||||
{{Field: "Field2"}},
|
||||
{{Field: "Field3"}, {Field: "Field4"}},
|
||||
{{Field: "Field1"}},
|
||||
{{Field: "Field5", Index: IntPointer(0)}},
|
||||
{{Field: "Field5", Index: IntPointer(1)}},
|
||||
{{Field: "Field5", Index: StringPointer("0")}},
|
||||
{{Field: "Field5", Index: StringPointer("1")}},
|
||||
}
|
||||
if !reflect.DeepEqual(nm.nm, nMap) {
|
||||
t.Errorf("Expected %s ,received: %s", nMap, nm)
|
||||
@@ -703,8 +703,8 @@ func TestOrderedNavigableMapRemove(t *testing.T) {
|
||||
order = []PathItems{
|
||||
{{Field: "Field3"}, {Field: "Field4"}},
|
||||
{{Field: "Field1"}},
|
||||
{{Field: "Field5", Index: IntPointer(0)}},
|
||||
{{Field: "Field5", Index: IntPointer(1)}},
|
||||
{{Field: "Field5", Index: StringPointer("0")}},
|
||||
{{Field: "Field5", Index: StringPointer("1")}},
|
||||
}
|
||||
|
||||
if err := nm.Remove(&FullPath{PathItems: PathItems{{Field: "Field2"}}, Path: "Field2"}); err != nil {
|
||||
@@ -734,7 +734,7 @@ func TestOrderedNavigableMapRemove(t *testing.T) {
|
||||
if !reflect.DeepEqual(nm.GetOrder(), order) {
|
||||
t.Errorf("Expected %s ,received: %s", order, nm.GetOrder())
|
||||
}
|
||||
if err := nm.Remove(&FullPath{PathItems: PathItems{{Field: "Field1", Index: IntPointer(0)}, {}}}); err != ErrWrongPath {
|
||||
if err := nm.Remove(&FullPath{PathItems: PathItems{{Field: "Field1", Index: StringPointer("0")}, {}}}); err != ErrWrongPath {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ type FullPath struct {
|
||||
func NewPathItems(path []string) (pItms PathItems) {
|
||||
pItms = make(PathItems, len(path))
|
||||
for i, v := range path {
|
||||
field, indx := GetPathIndex(v)
|
||||
field, indx := GetPathIndexString(v)
|
||||
pItms[i] = PathItem{
|
||||
Field: field,
|
||||
Index: indx,
|
||||
@@ -82,7 +82,7 @@ func (path PathItems) String() (out string) {
|
||||
// PathItem used by the NM interface to store the path information
|
||||
type PathItem struct {
|
||||
Field string
|
||||
Index *int
|
||||
Index *string
|
||||
}
|
||||
|
||||
// Equal returns true if p==p2
|
||||
@@ -102,7 +102,7 @@ func (p PathItem) Equal(p2 PathItem) bool {
|
||||
func (p PathItem) String() (out string) {
|
||||
out = p.Field
|
||||
if p.Index != nil {
|
||||
out += IdxStart + strconv.Itoa(*p.Index) + IdxEnd
|
||||
out += IdxStart + *p.Index + IdxEnd
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -114,7 +114,7 @@ func (p PathItem) Clone() (c PathItem) {
|
||||
// }
|
||||
c.Field = p.Field
|
||||
if p.Index != nil {
|
||||
c.Index = IntPointer(*p.Index)
|
||||
c.Index = StringPointer(*p.Index)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -148,6 +148,9 @@ func GetPathWithoutIndex(spath string) (opath string) {
|
||||
return
|
||||
}
|
||||
|
||||
// GetPathIndexString returns the path and index as string if index present
|
||||
// path[index]=>path,index
|
||||
// path=>path,nil
|
||||
func GetPathIndexString(spath string) (opath string, idx *string) {
|
||||
idxStart := strings.Index(spath, IdxStart)
|
||||
if idxStart == -1 || !strings.HasSuffix(spath, IdxEnd) {
|
||||
|
||||
@@ -56,7 +56,7 @@ func TestStripIdxFromLastPathElm(t *testing.T) {
|
||||
|
||||
func TestNewPathItems(t *testing.T) {
|
||||
pathSlice := strings.Split("*req.Field1[0].Account", NestingSep)
|
||||
expected := PathItems{{Field: MetaReq}, {Field: "Field1", Index: IntPointer(0)}, {Field: Account}}
|
||||
expected := PathItems{{Field: MetaReq}, {Field: "Field1", Index: StringPointer("0")}, {Field: Account}}
|
||||
if rply := NewPathItems(pathSlice); !reflect.DeepEqual(expected, rply) {
|
||||
t.Errorf("Expected: %s, received: %s", ToJSON(expected), ToJSON(rply))
|
||||
}
|
||||
@@ -73,7 +73,7 @@ func TestPathItemString(t *testing.T) {
|
||||
if rply := path.String(); expected != rply {
|
||||
t.Errorf("Expected: %q, received: %q", expected, rply)
|
||||
}
|
||||
path = PathItem{Field: MetaReq, Index: IntPointer(10)}
|
||||
path = PathItem{Field: MetaReq, Index: StringPointer("10")}
|
||||
expected = MetaReq + "[10]"
|
||||
if rply := path.String(); expected != rply {
|
||||
t.Errorf("Expected: %q, received: %q", expected, rply)
|
||||
@@ -90,21 +90,21 @@ func TestPathItemEqual(t *testing.T) {
|
||||
if path.Equal(p1) {
|
||||
t.Errorf("Expected %s to not be equal to %s", ToJSON(path), ToJSON(p1))
|
||||
}
|
||||
p1 = PathItem{Field: MetaReq, Index: IntPointer(0)}
|
||||
p1 = PathItem{Field: MetaReq, Index: StringPointer("0")}
|
||||
if path.Equal(p1) {
|
||||
t.Errorf("Expected %s to not be equal to %s", ToJSON(path), ToJSON(p1))
|
||||
}
|
||||
path = PathItem{Field: MetaReq, Index: IntPointer(0)}
|
||||
path = PathItem{Field: MetaReq, Index: StringPointer("0")}
|
||||
if !path.Equal(p1) {
|
||||
t.Errorf("Expected %s to be equal to %s", ToJSON(path), ToJSON(p1))
|
||||
}
|
||||
}
|
||||
|
||||
func TestPathItemClone(t *testing.T) {
|
||||
path := PathItem{Field: MetaReq, Index: IntPointer(0)}
|
||||
expected := PathItem{Field: MetaReq, Index: IntPointer(0)}
|
||||
path := PathItem{Field: MetaReq, Index: StringPointer("0")}
|
||||
expected := PathItem{Field: MetaReq, Index: StringPointer("0")}
|
||||
rply := path.Clone()
|
||||
*path.Index = 1
|
||||
*path.Index = "1"
|
||||
if !reflect.DeepEqual(expected, rply) {
|
||||
t.Errorf("Expected: %s, received: %s", ToJSON(expected), ToJSON(rply))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user