(t *testing.T)
| 7 | ) |
| 8 | |
| 9 | func TestAppendString(t *testing.T) { |
| 10 | tests := []struct { |
| 11 | in string |
| 12 | want string |
| 13 | wantErrUTF8 error |
| 14 | }{ |
| 15 | {"", `""`, nil}, |
| 16 | {"hello", `"hello"`, nil}, |
| 17 | {"\x00", `"\u0000"`, nil}, |
| 18 | {"\x1f", `"\u001f"`, nil}, |
| 19 | {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", `"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"`, nil}, |
| 20 | {" !#$%&'()*+,-./0123456789:;<=>?@[]^_`{|}~\x7f", "\" !#$%&'()*+,-./0123456789:;<=>?@[]^_`{|}~\x7f\"", nil}, |
| 21 | {"x\x80\ufffd", "\"x\ufffd\ufffd\"", ErrInvalidUTF8}, |
| 22 | {"x\xff\ufffd", "\"x\ufffd\ufffd\"", ErrInvalidUTF8}, |
| 23 | {"x\xc0", "\"x\ufffd\"", ErrInvalidUTF8}, |
| 24 | {"x\xc0\x80", "\"x\ufffd\ufffd\"", ErrInvalidUTF8}, |
| 25 | {"x\xe0", "\"x\ufffd\"", ErrInvalidUTF8}, |
| 26 | {"x\xe0\x80", "\"x\ufffd\ufffd\"", ErrInvalidUTF8}, |
| 27 | {"x\xe0\x80\x80", "\"x\ufffd\ufffd\ufffd\"", ErrInvalidUTF8}, |
| 28 | {"x\xf0", "\"x\ufffd\"", ErrInvalidUTF8}, |
| 29 | {"x\xf0\x80", "\"x\ufffd\ufffd\"", ErrInvalidUTF8}, |
| 30 | {"x\xf0\x80\x80", "\"x\ufffd\ufffd\ufffd\"", ErrInvalidUTF8}, |
| 31 | {"x\xf0\x80\x80\x80", "\"x\ufffd\ufffd\ufffd\ufffd\"", ErrInvalidUTF8}, |
| 32 | {"x\xed\xba\xad", "\"x\ufffd\ufffd\ufffd\"", ErrInvalidUTF8}, |
| 33 | {"\"\\/\b\f\n\r\t", `"\"\\/\b\f\n\r\t"`, nil}, |
| 34 | {"٩(-̮̮̃-̃)۶ ٩(●̮̮̃•̃)۶ ٩(͡๏̯͡๏)۶ ٩(-̮̮̃•̃).", `"٩(-̮̮̃-̃)۶ ٩(●̮̮̃•̃)۶ ٩(͡๏̯͡๏)۶ ٩(-̮̮̃•̃)."`, nil}, |
| 35 | {"\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602", "\"\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602\"", nil}, |
| 36 | {"\u0000\u001f\u0020\u0022\u0026\u003c\u003e\u005c\u007f\u0080\u2028\u2029\ufffd\U0001f602", "\"\\u0000\\u001f\u0020\\\"\u0026\u003c\u003e\\\\\u007f\u0080\u2028\u2029\ufffd\U0001f602\"", nil}, |
| 37 | } |
| 38 | |
| 39 | for _, tt := range tests { |
| 40 | t.Run("", func(t *testing.T) { |
| 41 | got, gotErr := AppendString(nil, tt.in) |
| 42 | switch { |
| 43 | case tt.wantErrUTF8 == nil && (string(got) != tt.want || gotErr != nil): |
| 44 | t.Errorf("appendString(nil, %q) = (%s, %v), want (%s, %v)", tt.in, got, gotErr, tt.want, nil) |
| 45 | case tt.wantErrUTF8 != nil && (!strings.HasPrefix(tt.want, string(got)) || !reflect.DeepEqual(gotErr, tt.wantErrUTF8)): |
| 46 | t.Errorf("appendString(nil, %q, true, ...) = (%s, %v), want (%s, %v)", tt.in, got, gotErr, tt.want, tt.wantErrUTF8) |
| 47 | } |
| 48 | }) |
| 49 | } |
| 50 | } |
nothing calls this directly
no test coverage detected