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