github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/cli/term/read_rune_test.go (about) 1 //go:build !windows && !plan9 2 // +build !windows,!plan9 3 4 package term 5 6 import "testing" 7 8 // TODO(xiaq): Do not depend on Unix for this test. 9 10 var contents = []string{ 11 "English", 12 "Ελληνικά", 13 "你好 こんにちは", 14 "𐌰𐌱", 15 } 16 17 func TestReadRune(t *testing.T) { 18 for _, content := range contents { 19 t.Run(content, func(t *testing.T) { 20 rd, w, cleanup := setupFileReader() 21 defer cleanup() 22 23 w.Write([]byte(content)) 24 for _, wantRune := range content { 25 r, err := readRune(rd, 0) 26 if r != wantRune { 27 t.Errorf("got rune %q, want %q", r, wantRune) 28 } 29 if err != nil { 30 t.Errorf("got err %v, want nil", err) 31 } 32 } 33 }) 34 } 35 } 36 37 func TestReadRune_ErrorAtFirstByte(t *testing.T) { 38 rd, _, cleanup := setupFileReader() 39 defer cleanup() 40 41 r, err := readRune(rd, 0) 42 if r != '\ufffd' { 43 t.Errorf("got rune %q, want %q", r, '\ufffd') 44 } 45 if err == nil { 46 t.Errorf("got err %v, want non-nil", err) 47 } 48 } 49 50 func TestReadRune_ErrorAtNonFirstByte(t *testing.T) { 51 rd, w, cleanup := setupFileReader() 52 defer cleanup() 53 54 w.Write([]byte{0xe4}) 55 56 r, err := readRune(rd, 0) 57 if r != '\ufffd' { 58 t.Errorf("got rune %q, want %q", r, '\ufffd') 59 } 60 if err == nil { 61 t.Errorf("got err %v, want non-nil", err) 62 } 63 }