github.com/as/shiny@v0.8.2/screen/screen_test.go (about) 1 // Copyright 2017 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package screen 6 7 import ( 8 "testing" 9 ) 10 11 func TestSanitizeUTF8(t *testing.T) { 12 const n = 8 13 14 testCases := []struct { 15 s, want string 16 }{ 17 {"", ""}, 18 {"a", "a"}, 19 {"a\x00", "a"}, 20 {"a\x80", "a"}, 21 {"\x00a", ""}, 22 {"\x80a", ""}, 23 {"abc", "abc"}, 24 {"foo b\x00r qux", "foo b"}, 25 {"foo b\x80r qux", "foo b"}, 26 {"foo b\xffr qux", "foo b"}, 27 28 // "\xc3\xa0" is U+00E0 LATIN SMALL LETTER A WITH GRAVE. 29 {"\xc3\xa0pqrs", "\u00e0pqrs"}, 30 {"a\xc3\xa0pqrs", "a\u00e0pqrs"}, 31 {"ab\xc3\xa0pqrs", "ab\u00e0pqrs"}, 32 {"abc\xc3\xa0pqrs", "abc\u00e0pqr"}, 33 {"abcd\xc3\xa0pqrs", "abcd\u00e0pq"}, 34 {"abcde\xc3\xa0pqrs", "abcde\u00e0p"}, 35 {"abcdef\xc3\xa0pqrs", "abcdef\u00e0"}, 36 {"abcdefg\xc3\xa0pqrs", "abcdefg"}, 37 {"abcdefgh\xc3\xa0pqrs", "abcdefgh"}, 38 {"abcdefghi\xc3\xa0pqrs", "abcdefgh"}, 39 {"abcdefghij\xc3\xa0pqrs", "abcdefgh"}, 40 41 // "世" is "\xe4\xb8\x96". 42 // "界" is "\xe7\x95\x8c". 43 {"H 世界", "H 世界"}, 44 {"Hi 世界", "Hi 世"}, 45 {"Hello 世界", "Hello "}, 46 } 47 48 for _, tc := range testCases { 49 if got := sanitizeUTF8(tc.s, n); got != tc.want { 50 t.Errorf("sanitizeUTF8(%q): got %q, want %q", tc.s, got, tc.want) 51 } 52 } 53 }