Files
jira/vendor/github.com/AlecAivazis/survey/tests/autoplay/doubleSelect.go
T
2017-08-13 18:23:38 -07:00

105 lines
3.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
////////////////////////////////////////////////////////////////////////////////
// DO NOT MODIFY THIS FILE!
//
// This file was automatically generated via the commands:
//
// go get github.com/coryb/autoplay
// autoplay -n autoplay/doubleSelect.go go run doubleSelect.go
//
////////////////////////////////////////////////////////////////////////////////
package main
import (
"bufio"
"fmt"
"github.com/kr/pty"
"os"
"os/exec"
"strconv"
"strings"
)
const (
RED = "\033[31m"
RESET = "\033[0m"
)
func main() {
fh, tty, _ := pty.Open()
defer tty.Close()
defer fh.Close()
c := exec.Command("go", "run", "doubleSelect.go")
c.Stdin = tty
c.Stdout = tty
c.Stderr = tty
c.Start()
buf := bufio.NewReaderSize(fh, 1024)
expect("\x1b[0G\x1b[2K\x1b[1;92m? \x1b[0m\x1b[1;99mselect1:\x1b[0m\r\n", buf)
expect("\x1b[1;36m red\x1b[0m\r\n", buf)
expect("\x1b[1;99m blue\x1b[0m\r\n", buf)
expect("\x1b[1;99m green\x1b[0m\r\n", buf)
expect("\x1b[?25l", buf)
fh.Write([]byte("\x1b"))
fh.Write([]byte("["))
fh.Write([]byte("B"))
expect("\x1b[0G\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1;92m? \x1b[0m\x1b[1;99mselect1:\x1b[0m\r\n", buf)
expect("\x1b[1;99m red\x1b[0m\r\n", buf)
expect("\x1b[1;36m blue\x1b[0m\r\n", buf)
expect("\x1b[1;99m green\x1b[0m\r\n", buf)
fh.Write([]byte("\r"))
expect("\x1b[?25h\x1b[0G\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1;92m? \x1b[0m\x1b[1;99mselect1:\x1b[0m\x1b[36m blue\x1b[0m\r\n", buf)
expect("\x1b[0G\x1b[2K\x1b[1;92m? \x1b[0m\x1b[1;99mselect2:\x1b[0m\r\n", buf)
expect("\x1b[1;36m red\x1b[0m\r\n", buf)
expect("\x1b[1;99m blue\x1b[0m\r\n", buf)
expect("\x1b[1;99m green\x1b[0m\r\n", buf)
expect("\x1b[?25l", buf)
fh.Write([]byte("\x1b"))
fh.Write([]byte("["))
fh.Write([]byte("B"))
expect("\x1b[0G\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1;92m? \x1b[0m\x1b[1;99mselect2:\x1b[0m\r\n", buf)
expect("\x1b[1;99m red\x1b[0m\r\n", buf)
expect("\x1b[1;36m blue\x1b[0m\r\n", buf)
expect("\x1b[1;99m green\x1b[0m\r\n", buf)
fh.Write([]byte("\r"))
expect("\x1b[?25h\x1b[0G\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1F\x1b[2K\x1b[1;92m? \x1b[0m\x1b[1;99mselect2:\x1b[0m\x1b[36m blue\x1b[0m\r\n", buf)
expect("blue and blue.\r\n", buf)
c.Wait()
tty.Close()
fh.Close()
}
func expect(expected string, buf *bufio.Reader) {
sofar := []rune{}
for _, r := range expected {
got, _, _ := buf.ReadRune()
sofar = append(sofar, got)
if got != r {
fmt.Fprintln(os.Stderr, RESET)
// we want to quote the string but we also want to make the unexpected character RED
// so we use the strconv.Quote function but trim off the quoted characters so we can
// merge multiple quoted strings into one.
expStart := strings.TrimSuffix(strconv.Quote(expected[:len(sofar)-1]), "\"")
expMiss := strings.TrimSuffix(strings.TrimPrefix(strconv.Quote(string(expected[len(sofar)-1])), "\""), "\"")
expEnd := strings.TrimPrefix(strconv.Quote(expected[len(sofar):]), "\"")
fmt.Fprintf(os.Stderr, "Expected: %s%s%s%s%s\n", expStart, RED, expMiss, RESET, expEnd)
// read the rest of the buffer
p := make([]byte, buf.Buffered())
buf.Read(p)
gotStart := strings.TrimSuffix(strconv.Quote(string(sofar[:len(sofar)-1])), "\"")
gotMiss := strings.TrimSuffix(strings.TrimPrefix(strconv.Quote(string(sofar[len(sofar)-1])), "\""), "\"")
gotEnd := strings.TrimPrefix(strconv.Quote(string(p)), "\"")
fmt.Fprintf(os.Stderr, "Got: %s%s%s%s%s\n", gotStart, RED, gotMiss, RESET, gotEnd)
panic(fmt.Errorf("Unexpected Rune %q, Expected %q\n", got, r))
} else {
fmt.Printf("%c", r)
}
}
}