2025-09-06 21:38:50 +02:00
|
|
|
package wand
|
|
|
|
|
|
2025-09-06 22:00:22 +02:00
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
"time"
|
|
|
|
|
"io"
|
|
|
|
|
"bytes"
|
|
|
|
|
)
|
2025-09-06 21:38:50 +02:00
|
|
|
|
|
|
|
|
func TestOutput(t *testing.T) {
|
2025-09-06 22:00:22 +02:00
|
|
|
f0 := func() any { return nil }
|
|
|
|
|
f1 := func() int { return 42 }
|
|
|
|
|
f2 := func() time.Duration { return 9 * time.Second }
|
|
|
|
|
f3 := func() *int { i := 42; return &i }
|
|
|
|
|
f4 := func() chan int { return make(chan int) }
|
|
|
|
|
f5 := func() io.Reader { return bytes.NewBufferString("foo") }
|
|
|
|
|
f6 := func() ([]string, int, io.Reader) {
|
|
|
|
|
return []string{"foo", "bar", "baz"}, 42, bytes.NewBufferString("foo")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
t.Run("nil", testExec(testCase{impl: f0, command: "foo"}, "", ""))
|
|
|
|
|
t.Run("simple", testExec(testCase{impl: f1, command: "foo"}, "", "42"))
|
|
|
|
|
t.Run("stringer", testExec(testCase{impl: f2, command: "foo"}, "", "9s"))
|
|
|
|
|
t.Run("pointer", testExec(testCase{impl: f3, command: "foo"}, "", "42"))
|
|
|
|
|
t.Run("complex", testExec(testCase{impl: f4, command: "foo"}, "", "chan int"))
|
|
|
|
|
t.Run("reader", testExec(testCase{impl: f5, command: "foo"}, "", "foo"))
|
|
|
|
|
t.Run("mixed", testExec(testCase{impl: f6, command: "foo"}, "", "foo\nbar\nbaz\n42\nfoo"))
|
2025-09-06 21:38:50 +02:00
|
|
|
}
|