From be6cd2217b6bb1bb411d46ebd9d003dfd928af96 Mon Sep 17 00:00:00 2001 From: Mel Date: Wed, 17 Aug 2022 00:07:35 +0000 Subject: Add different "say" outputs to VM --- pkg/lang/vm/vm_test.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'pkg/lang/vm/vm_test.go') 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() -- cgit 1.4.1