More tests

This commit is contained in:
Mike Farah
2026-02-01 10:27:18 +11:00
parent 2be0094729
commit eb04fa87af
7 changed files with 576 additions and 8 deletions
+176
View File
@@ -49,3 +49,179 @@ func TestNodeInfoPrinter_PrintResults(t *testing.T) {
test.AssertResult(t, true, strings.Contains(outStr, "footComment: foot"))
test.AssertResult(t, true, strings.Contains(outStr, "anchor: anchor"))
}
func TestNodeInfoPrinter_PrintedAnything_True(t *testing.T) {
node := &CandidateNode{
Kind: ScalarNode,
Tag: "!!str",
Value: "test",
}
listNodes := list.New()
listNodes.PushBack(node)
var output bytes.Buffer
writer := bufio.NewWriter(&output)
printer := NewNodeInfoPrinter(NewSinglePrinterWriter(writer))
// Before printing, should be false
test.AssertResult(t, false, printer.PrintedAnything())
err := printer.PrintResults(listNodes)
writer.Flush()
if err != nil {
t.Fatalf("PrintResults error: %v", err)
}
// After printing, should be true
test.AssertResult(t, true, printer.PrintedAnything())
}
func TestNodeInfoPrinter_PrintedAnything_False(t *testing.T) {
listNodes := list.New()
var output bytes.Buffer
writer := bufio.NewWriter(&output)
printer := NewNodeInfoPrinter(NewSinglePrinterWriter(writer))
err := printer.PrintResults(listNodes)
writer.Flush()
if err != nil {
t.Fatalf("PrintResults error: %v", err)
}
// No nodes printed, should still be false
test.AssertResult(t, false, printer.PrintedAnything())
}
func TestNodeInfoPrinter_SetNulSepOutput(_ *testing.T) {
var output bytes.Buffer
writer := bufio.NewWriter(&output)
printer := NewNodeInfoPrinter(NewSinglePrinterWriter(writer))
// Should not panic or error
printer.SetNulSepOutput(true)
printer.SetNulSepOutput(false)
}
func TestNodeInfoPrinter_SetAppendix(t *testing.T) {
node := &CandidateNode{
Kind: ScalarNode,
Tag: "!!str",
Value: "test",
}
listNodes := list.New()
listNodes.PushBack(node)
var output bytes.Buffer
writer := bufio.NewWriter(&output)
printer := NewNodeInfoPrinter(NewSinglePrinterWriter(writer))
appendixText := "This is appendix text\n"
appendixReader := strings.NewReader(appendixText)
printer.SetAppendix(appendixReader)
err := printer.PrintResults(listNodes)
writer.Flush()
if err != nil {
t.Fatalf("PrintResults error: %v", err)
}
outStr := output.String()
test.AssertResult(t, true, strings.Contains(outStr, "test"))
test.AssertResult(t, true, strings.Contains(outStr, appendixText))
}
func TestNodeInfoPrinter_MultipleNodes(t *testing.T) {
node1 := &CandidateNode{
Kind: ScalarNode,
Tag: "!!str",
Value: "first",
}
node2 := &CandidateNode{
Kind: ScalarNode,
Tag: "!!str",
Value: "second",
}
listNodes := list.New()
listNodes.PushBack(node1)
listNodes.PushBack(node2)
var output bytes.Buffer
writer := bufio.NewWriter(&output)
printer := NewNodeInfoPrinter(NewSinglePrinterWriter(writer))
err := printer.PrintResults(listNodes)
writer.Flush()
if err != nil {
t.Fatalf("PrintResults error: %v", err)
}
outStr := output.String()
test.AssertResult(t, true, strings.Contains(outStr, "value: first"))
test.AssertResult(t, true, strings.Contains(outStr, "value: second"))
}
func TestNodeInfoPrinter_SequenceNode(t *testing.T) {
node := &CandidateNode{
Kind: SequenceNode,
Tag: "!!seq",
Style: FlowStyle,
}
listNodes := list.New()
listNodes.PushBack(node)
var output bytes.Buffer
writer := bufio.NewWriter(&output)
printer := NewNodeInfoPrinter(NewSinglePrinterWriter(writer))
err := printer.PrintResults(listNodes)
writer.Flush()
if err != nil {
t.Fatalf("PrintResults error: %v", err)
}
outStr := output.String()
test.AssertResult(t, true, strings.Contains(outStr, "kind: SequenceNode"))
test.AssertResult(t, true, strings.Contains(outStr, "tag: '!!seq'"))
test.AssertResult(t, true, strings.Contains(outStr, "style: FlowStyle"))
}
func TestNodeInfoPrinter_MappingNode(t *testing.T) {
node := &CandidateNode{
Kind: MappingNode,
Tag: "!!map",
}
listNodes := list.New()
listNodes.PushBack(node)
var output bytes.Buffer
writer := bufio.NewWriter(&output)
printer := NewNodeInfoPrinter(NewSinglePrinterWriter(writer))
err := printer.PrintResults(listNodes)
writer.Flush()
if err != nil {
t.Fatalf("PrintResults error: %v", err)
}
outStr := output.String()
test.AssertResult(t, true, strings.Contains(outStr, "kind: MappingNode"))
test.AssertResult(t, true, strings.Contains(outStr, "tag: '!!map'"))
}
func TestNodeInfoPrinter_EmptyList(t *testing.T) {
listNodes := list.New()
var output bytes.Buffer
writer := bufio.NewWriter(&output)
printer := NewNodeInfoPrinter(NewSinglePrinterWriter(writer))
err := printer.PrintResults(listNodes)
writer.Flush()
if err != nil {
t.Fatalf("PrintResults error: %v", err)
}
test.AssertResult(t, "", output.String())
test.AssertResult(t, false, printer.PrintedAnything())
}