mirror of
https://github.com/mikefarah/yq.git
synced 2024-11-15 07:38:14 +00:00
177 lines
4.0 KiB
Go
177 lines
4.0 KiB
Go
package yqlib
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/mikefarah/yq/v3/test"
|
|
)
|
|
|
|
func TestLib(t *testing.T) {
|
|
|
|
subject := NewYqLib()
|
|
|
|
t.Run("PathStackToString_Empty", func(t *testing.T) {
|
|
emptyArray := make([]interface{}, 0)
|
|
got := subject.PathStackToString(emptyArray)
|
|
test.AssertResult(t, ``, got)
|
|
})
|
|
|
|
t.Run("PathStackToString", func(t *testing.T) {
|
|
array := make([]interface{}, 3)
|
|
array[0] = "a"
|
|
array[1] = 0
|
|
array[2] = "b"
|
|
got := subject.PathStackToString(array)
|
|
test.AssertResult(t, `a.[0].b`, got)
|
|
})
|
|
|
|
t.Run("MergePathStackToString", func(t *testing.T) {
|
|
array := make([]interface{}, 3)
|
|
array[0] = "a"
|
|
array[1] = 0
|
|
array[2] = "b"
|
|
got := subject.MergePathStackToString(array, AppendArrayMergeStrategy)
|
|
test.AssertResult(t, `a.[+].b`, got)
|
|
})
|
|
|
|
// t.Run("TestReadPath_WithError", func(t *testing.T) {
|
|
// var data = test.ParseData(`
|
|
// ---
|
|
// b:
|
|
// - c
|
|
// `)
|
|
|
|
// _, err := subject.ReadPath(data, "b.[a]")
|
|
// if err == nil {
|
|
// t.Fatal("Expected error due to invalid path")
|
|
// }
|
|
// })
|
|
|
|
// t.Run("TestWritePath", func(t *testing.T) {
|
|
// var data = test.ParseData(`
|
|
// ---
|
|
// b:
|
|
// 2: c
|
|
// `)
|
|
|
|
// got := subject.WritePath(data, "b.3", "a")
|
|
// test.AssertResult(t, `[{b [{2 c} {3 a}]}]`, fmt.Sprintf("%v", got))
|
|
// })
|
|
|
|
// t.Run("TestPrefixPath", func(t *testing.T) {
|
|
// var data = test.ParseData(`
|
|
// ---
|
|
// b:
|
|
// 2: c
|
|
// `)
|
|
|
|
// got := subject.PrefixPath(data, "a.d")
|
|
// test.AssertResult(t, `[{a [{d [{b [{2 c}]}]}]}]`, fmt.Sprintf("%v", got))
|
|
// })
|
|
|
|
// t.Run("TestDeletePath", func(t *testing.T) {
|
|
// var data = test.ParseData(`
|
|
// ---
|
|
// b:
|
|
// 2: c
|
|
// 3: a
|
|
// `)
|
|
|
|
// got, _ := subject.DeletePath(data, "b.2")
|
|
// test.AssertResult(t, `[{b [{3 a}]}]`, fmt.Sprintf("%v", got))
|
|
// })
|
|
|
|
// t.Run("TestDeletePath_WithError", func(t *testing.T) {
|
|
// var data = test.ParseData(`
|
|
// ---
|
|
// b:
|
|
// - c
|
|
// `)
|
|
|
|
// _, err := subject.DeletePath(data, "b.[a]")
|
|
// if err == nil {
|
|
// t.Fatal("Expected error due to invalid path")
|
|
// }
|
|
// })
|
|
|
|
// t.Run("TestMerge", func(t *testing.T) {
|
|
// var dst = test.ParseData(`
|
|
// ---
|
|
// a: b
|
|
// c: d
|
|
// `)
|
|
// var src = test.ParseData(`
|
|
// ---
|
|
// a: 1
|
|
// b: 2
|
|
// `)
|
|
|
|
// var mergedData = make(map[interface{}]interface{})
|
|
// mergedData["root"] = dst
|
|
// var mapDataBucket = make(map[interface{}]interface{})
|
|
// mapDataBucket["root"] = src
|
|
|
|
// err := subject.Merge(&mergedData, mapDataBucket, false, false)
|
|
// if err != nil {
|
|
// t.Fatal("Unexpected error")
|
|
// }
|
|
// test.AssertResult(t, `[{a b} {c d}]`, fmt.Sprintf("%v", mergedData["root"]))
|
|
// })
|
|
|
|
// t.Run("TestMerge_WithOverwrite", func(t *testing.T) {
|
|
// var dst = test.ParseData(`
|
|
// ---
|
|
// a: b
|
|
// c: d
|
|
// `)
|
|
// var src = test.ParseData(`
|
|
// ---
|
|
// a: 1
|
|
// b: 2
|
|
// `)
|
|
|
|
// var mergedData = make(map[interface{}]interface{})
|
|
// mergedData["root"] = dst
|
|
// var mapDataBucket = make(map[interface{}]interface{})
|
|
// mapDataBucket["root"] = src
|
|
|
|
// err := subject.Merge(&mergedData, mapDataBucket, true, false)
|
|
// if err != nil {
|
|
// t.Fatal("Unexpected error")
|
|
// }
|
|
// test.AssertResult(t, `[{a 1} {b 2}]`, fmt.Sprintf("%v", mergedData["root"]))
|
|
// })
|
|
|
|
// t.Run("TestMerge_WithAppend", func(t *testing.T) {
|
|
// var dst = test.ParseData(`
|
|
// ---
|
|
// a: b
|
|
// c: d
|
|
// `)
|
|
// var src = test.ParseData(`
|
|
// ---
|
|
// a: 1
|
|
// b: 2
|
|
// `)
|
|
|
|
// var mergedData = make(map[interface{}]interface{})
|
|
// mergedData["root"] = dst
|
|
// var mapDataBucket = make(map[interface{}]interface{})
|
|
// mapDataBucket["root"] = src
|
|
|
|
// err := subject.Merge(&mergedData, mapDataBucket, false, true)
|
|
// if err != nil {
|
|
// t.Fatal("Unexpected error")
|
|
// }
|
|
// test.AssertResult(t, `[{a b} {c d} {a 1} {b 2}]`, fmt.Sprintf("%v", mergedData["root"]))
|
|
// })
|
|
|
|
// t.Run("TestMerge_WithError", func(t *testing.T) {
|
|
// err := subject.Merge(nil, nil, false, false)
|
|
// if err == nil {
|
|
// t.Fatal("Expected error due to nil")
|
|
// }
|
|
// })
|
|
|
|
}
|