Explorar o código

add more tests

kevin %!s(int64=4) %!d(string=hai) anos
pai
achega
d809bf2dca
Modificáronse 1 ficheiros con 82 adicións e 0 borrados
  1. 82 0
      core/cmdline/input_test.go

+ 82 - 0
core/cmdline/input_test.go

@@ -0,0 +1,82 @@
+package cmdline
+
+import (
+	"fmt"
+	"os"
+	"sync"
+	"testing"
+	"time"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/tal-tech/go-zero/core/lang"
+)
+
+func TestEnterToContinue(t *testing.T) {
+	r, w, err := os.Pipe()
+	assert.Nil(t, err)
+
+	var wg sync.WaitGroup
+	wg.Add(2)
+	go func() {
+		defer wg.Done()
+		ow := os.Stdout
+		os.Stdout = w
+		fmt.Println()
+		os.Stdout = ow
+	}()
+	go func() {
+		defer wg.Done()
+		or := os.Stdin
+		os.Stdin = r
+		EnterToContinue()
+		os.Stdin = or
+	}()
+
+	wait := make(chan lang.PlaceholderType)
+	go func() {
+		wg.Wait()
+		close(wait)
+	}()
+
+	select {
+	case <-time.After(time.Second):
+		t.Error("timeout")
+	case <-wait:
+	}
+}
+
+func TestReadLine(t *testing.T) {
+	r, w, err := os.Pipe()
+	assert.Nil(t, err)
+
+	const message = "hello"
+	var wg sync.WaitGroup
+	wg.Add(2)
+	go func() {
+		defer wg.Done()
+		ow := os.Stdout
+		os.Stdout = w
+		fmt.Println(message)
+		os.Stdout = ow
+	}()
+	go func() {
+		defer wg.Done()
+		or := os.Stdin
+		os.Stdin = r
+		input := ReadLine("")
+		assert.Equal(t, message, input)
+		os.Stdin = or
+	}()
+
+	wait := make(chan lang.PlaceholderType)
+	go func() {
+		wg.Wait()
+		close(wait)
+	}()
+
+	select {
+	case <-time.After(time.Second):
+		t.Error("timeout")
+	case <-wait:
+	}
+}