Improve tests

This commit is contained in:
Donny Xia
2020-07-14 11:36:49 -07:00
parent 23bd4390d3
commit 3a828941fa
2 changed files with 35 additions and 26 deletions

View File

@@ -182,6 +182,28 @@ func NewListRNode(values ...string) *RNode {
return seq return seq
} }
// NewMapRNode returns a new Map *RNode containing the provided values
func NewMapRNode(values *map[string]string) *RNode {
m := &RNode{value: &yaml.Node{
Kind: yaml.MappingNode,
}}
if values == nil {
return m
}
for k, v := range *values {
m.value.Content = append(m.value.Content, &yaml.Node{
Kind: yaml.ScalarNode,
Value: k,
}, &yaml.Node{
Kind: yaml.ScalarNode,
Value: v,
})
}
return m
}
// NewRNode returns a new RNode pointer containing the provided Node. // NewRNode returns a new RNode pointer containing the provided Node.
func NewRNode(value *yaml.Node) *RNode { func NewRNode(value *yaml.Node) *RNode {
return &RNode{value: value} return &RNode{value: value}

View File

@@ -8,7 +8,6 @@ import (
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"gopkg.in/yaml.v3"
) )
// Test that non-UTF8 characters in comments don't cause failures // Test that non-UTF8 characters in comments don't cause failures
@@ -173,25 +172,17 @@ func TestIsMissingOrNull(t *testing.T) {
t.Fatalf("input: nil") t.Fatalf("input: nil")
} }
// missing value or null value // missing value or null value
node := &RNode{value: nil} if !IsMissingOrNull(NewRNode(nil)) {
if !IsMissingOrNull(node) {
t.Fatalf("input: nil value") t.Fatalf("input: nil value")
} }
node.value = &yaml.Node{} if IsMissingOrNull(NewScalarRNode("foo")) {
if IsMissingOrNull(node) {
t.Fatalf("input: valid node") t.Fatalf("input: valid node")
} }
// node with NullNodeTag // node with NullNodeTag
node.value.Tag = NullNodeTag if !IsMissingOrNull(NullNode()) {
if !IsMissingOrNull(node) {
t.Fatalf("input: with NullNodeTag") t.Fatalf("input: with NullNodeTag")
} }
node.value = &yaml.Node{}
if IsMissingOrNull(node) {
t.Fatalf("input: valid node")
}
} }
func TestIsEmpty(t *testing.T) { func TestIsEmpty(t *testing.T) {
@@ -200,52 +191,48 @@ func TestIsEmpty(t *testing.T) {
} }
// missing value or null value // missing value or null value
node := &RNode{value: nil} if !IsEmpty(NewRNode(nil)) {
if !IsEmpty(node) {
t.Fatalf("input: nil value") t.Fatalf("input: nil value")
} }
// not array or map // not array or map
node.value = &yaml.Node{} if IsEmpty(NewScalarRNode("foo")) {
if IsEmpty(node) {
t.Fatalf("input: not array or map") t.Fatalf("input: not array or map")
} }
} }
func TestIsEmpty_Arrays(t *testing.T) { func TestIsEmpty_Arrays(t *testing.T) {
node := &RNode{value: &yaml.Node{ node := NewListRNode()
Kind: yaml.SequenceNode,
}}
// empty array. empty array is not expected as empty // empty array. empty array is not expected as empty
if IsEmpty(node) { if IsEmpty(node) {
t.Fatalf("input: empty array") t.Fatalf("input: empty array")
} }
// array with 1 item // array with 1 item
node.value.Content = append(node.value.Content, &yaml.Node{}) node = NewListRNode("foo")
if IsEmpty(node) { if IsEmpty(node) {
t.Fatalf("input: array with 1 item") t.Fatalf("input: array with 1 item")
} }
// delete the item in array // delete the item in array
node.value.Content = node.value.Content[:len(node.value.Content)-1] node.value.Content = nil
if IsEmpty(node) { if IsEmpty(node) {
t.Fatalf("input: empty array") t.Fatalf("input: empty array")
} }
} }
func TestIsEmpty_Maps(t *testing.T) { func TestIsEmpty_Maps(t *testing.T) {
node := &RNode{value: &yaml.Node{ node := NewMapRNode(nil)
Kind: yaml.MappingNode,
}}
// empty map // empty map
if !IsEmpty(node) { if !IsEmpty(node) {
t.Fatalf("input: empty map") t.Fatalf("input: empty map")
} }
// map with 1 item // map with 1 item
node.value.Content = append(node.value.Content, &yaml.Node{}) node = NewMapRNode(&map[string]string{
"foo": "bar",
})
if IsEmpty(node) { if IsEmpty(node) {
t.Fatalf("input: map with 1 item") t.Fatalf("input: map with 1 item")
} }
// delete the item in map // delete the item in map
node.value.Content = node.value.Content[:len(node.value.Content)-1] node.value.Content = nil
if !IsEmpty(node) { if !IsEmpty(node) {
t.Fatalf("input: empty map") t.Fatalf("input: empty map")
} }