mirror of
https://github.com/mikefarah/yq.git
synced 2024-11-12 13:48:06 +00:00
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package yqlib
|
|
|
|
import (
|
|
"container/list"
|
|
"testing"
|
|
|
|
"github.com/mikefarah/yq/v4/test"
|
|
)
|
|
|
|
func TestChildContext(t *testing.T) {
|
|
|
|
expectedOriginal := make(map[string]*list.List)
|
|
expectedOriginal["dog"] = list.New()
|
|
expectedOriginal["dog"].PushBack(&CandidateNode{Value: "woof"})
|
|
|
|
originalVariables := make(map[string]*list.List)
|
|
originalVariables["dog"] = list.New()
|
|
originalVariables["dog"].PushBack(&CandidateNode{Value: "woof"})
|
|
|
|
original := Context{
|
|
DontAutoCreate: true,
|
|
datetimeLayout: "cat",
|
|
Variables: originalVariables,
|
|
}
|
|
|
|
newResults := list.New()
|
|
newResults.PushBack(&CandidateNode{Value: "bar"})
|
|
|
|
clone := original.ChildContext(newResults)
|
|
test.AssertResultComplex(t, originalVariables, clone.Variables)
|
|
|
|
clone.Variables["dog"].PushBack("bark")
|
|
// ensure this is a separate copy
|
|
test.AssertResultComplex(t, 1, originalVariables["dog"].Len())
|
|
|
|
}
|
|
|
|
func TestChildContextNoVariables(t *testing.T) {
|
|
|
|
original := Context{
|
|
DontAutoCreate: true,
|
|
datetimeLayout: "cat",
|
|
}
|
|
|
|
newResults := list.New()
|
|
newResults.PushBack(&CandidateNode{Value: "bar"})
|
|
|
|
clone := original.ChildContext(newResults)
|
|
test.AssertResultComplex(t, make(map[string]*list.List), clone.Variables)
|
|
|
|
}
|