about summary refs log tree commit diff
path: root/pkg/lang/vm/vm_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/lang/vm/vm_test.go')
-rw-r--r--pkg/lang/vm/vm_test.go28
1 files changed, 14 insertions, 14 deletions
diff --git a/pkg/lang/vm/vm_test.go b/pkg/lang/vm/vm_test.go
index 8f961ef..8c31d1f 100644
--- a/pkg/lang/vm/vm_test.go
+++ b/pkg/lang/vm/vm_test.go
@@ -5,7 +5,6 @@ import (
 	"jinx/pkg/lang/vm"
 	"jinx/pkg/lang/vm/code"
 	"jinx/pkg/lang/vm/text"
-	"os"
 	"strings"
 	"testing"
 
@@ -496,18 +495,7 @@ func TestCoreSay(t *testing.T) {
 	halt
 	`
 
-	previous := os.Stdout
-	r, w, _ := os.Pipe()
-	defer w.Close()
-	os.Stdout = w
-	test(t, src, "0")
-	os.Stdout = previous
-
-	result := make([]byte, 8)
-	_, err := r.Read(result)
-	require.NoError(t, err)
-
-	require.Equal(t, "\"Meow!!\"", string(result))
+	testOutput(t, src, "Meow!!")
 }
 
 func TestSetAtArray(t *testing.T) {
@@ -539,7 +527,7 @@ func TestSetAtArray(t *testing.T) {
 
 func test(t *testing.T, src string, expected string) {
 	bc := compile(t, src)
-	vm := vm.New(modules.NewUnknownModule(&bc))
+	vm := vm.New(modules.NewUnknownModule(&bc), vm.NewEmptyOutput())
 	err := vm.Run()
 	require.NoError(t, err)
 
@@ -549,6 +537,18 @@ func test(t *testing.T, src string, expected string) {
 	require.Equal(t, expected, res)
 }
 
+func testOutput(t *testing.T, src string, expected string) {
+	output := vm.NewGatheringOutput()
+
+	bc := compile(t, src)
+	vm := vm.New(modules.NewUnknownModule(&bc), output)
+	err := vm.Run()
+	require.NoError(t, err)
+
+	lastMessage := output.Messages()[len(output.Messages())-1]
+	require.Equal(t, expected, lastMessage)
+}
+
 func compile(t *testing.T, src string) code.Code {
 	comp := text.NewCompiler(strings.NewReader(src))
 	bc, err := comp.Compile()