// Copyright 2017 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package screen import ( "testing" ) func TestSanitizeUTF8(t *testing.T) { const n = 8 testCases := []struct { s, want string }{ {"", ""}, {"a", "a"}, {"a\x00", "a"}, {"a\x80", "a"}, {"\x00a", ""}, {"\x80a", ""}, {"abc", "abc"}, {"foo b\x00r qux", "foo b"}, {"foo b\x80r qux", "foo b"}, {"foo b\xffr qux", "foo b"}, // "\xc3\xa0" is U+00E0 LATIN SMALL LETTER A WITH GRAVE. {"\xc3\xa0pqrs", "\u00e0pqrs"}, {"a\xc3\xa0pqrs", "a\u00e0pqrs"}, {"ab\xc3\xa0pqrs", "ab\u00e0pqrs"}, {"abc\xc3\xa0pqrs", "abc\u00e0pqr"}, {"abcd\xc3\xa0pqrs", "abcd\u00e0pq"}, {"abcde\xc3\xa0pqrs", "abcde\u00e0p"}, {"abcdef\xc3\xa0pqrs", "abcdef\u00e0"}, {"abcdefg\xc3\xa0pqrs", "abcdefg"}, {"abcdefgh\xc3\xa0pqrs", "abcdefgh"}, {"abcdefghi\xc3\xa0pqrs", "abcdefgh"}, {"abcdefghij\xc3\xa0pqrs", "abcdefgh"}, // "世" is "\xe4\xb8\x96". // "界" is "\xe7\x95\x8c". {"H 世界", "H 世界"}, {"Hi 世界", "Hi 世"}, {"Hello 世界", "Hello "}, } for _, tc := range testCases { if got := sanitizeUTF8(tc.s, n); got != tc.want { t.Errorf("sanitizeUTF8(%q): got %q, want %q", tc.s, got, tc.want) } } }