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  }