// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// DO NOT EDIT; Cases below are generated with:
//
//     go run src/tests/fidl/conformance_suite/gen_strings.go > src/tests/fidl/conformance_suite/strings_utf8.gen.gidl
//

// single byte, min: 0
success("StringsValidCase1") {
    value = StringWrapper{
        str: "\x00",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            0,
            padding:7,
        ],
    },
}

// single byte, max: 127
success("StringsValidCase2") {
    value = StringWrapper{
        str: "\x7f",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            127,
            padding:7,
        ],
    },
}

// two bytes,   min: 128
success("StringsValidCase3") {
    value = StringWrapper{
        str: "\xc2\x80",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            194,
            128,
            padding:6,
        ],
    },
}

// two bytes,   max: 2047
success("StringsValidCase4") {
    value = StringWrapper{
        str: "\xdf\xbf",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            223,
            191,
            padding:6,
        ],
    },
}

// three bytes, min: 2048
success("StringsValidCase5") {
    value = StringWrapper{
        str: "\xe1\x80\x80",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            225,
            128,
            128,
            padding:5,
        ],
    },
}

// three bytes, max: 65535
success("StringsValidCase6") {
    value = StringWrapper{
        str: "\xef\xbf\xbf",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            239,
            191,
            191,
            padding:5,
        ],
    },
}

// four bytes,  min: 65536
success("StringsValidCase7") {
    value = StringWrapper{
        str: "\xf0\x90\x80\x80",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            144,
            128,
            128,
            padding:4,
        ],
    },
}

// four bytes,  max: 1114111
success("StringsValidCase8") {
    value = StringWrapper{
        str: "\xf4\x8f\xbf\xbf",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            244,
            143,
            191,
            191,
            padding:4,
        ],
    },
}

// 1 above max single byte
encode_failure("StringsInvalidCase1") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\x80",
    },
    err = STRING_NOT_UTF8,
}

// 1 above max single byte
decode_failure("StringsInvalidCase1") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            128,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

// 1 below min two bytes
encode_failure("StringsInvalidCase2") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xc2\x7f",
    },
    err = STRING_NOT_UTF8,
}

// 1 below min two bytes
decode_failure("StringsInvalidCase2") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            194,
            127,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}

// 1 above max two bytes
encode_failure("StringsInvalidCase3") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xdf\xc0",
    },
    err = STRING_NOT_UTF8,
}

// 1 above max two bytes
decode_failure("StringsInvalidCase3") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            223,
            192,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}

// 1 below min three bytes
encode_failure("StringsInvalidCase4") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xe1\x80\x7f",
    },
    err = STRING_NOT_UTF8,
}

// 1 below min three bytes
decode_failure("StringsInvalidCase4") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            225,
            128,
            127,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// 1 above max three bytes
encode_failure("StringsInvalidCase5") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xef\xbf\xc0",
    },
    err = STRING_NOT_UTF8,
}

// 1 above max three bytes
decode_failure("StringsInvalidCase5") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            239,
            191,
            192,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// 1 below min four bytes
encode_failure("StringsInvalidCase6") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf0\x80\x80\x80",
    },
    err = STRING_NOT_UTF8,
}

// 1 below min four bytes
decode_failure("StringsInvalidCase6") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            128,
            128,
            128,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

// 1 above max four bytes
encode_failure("StringsInvalidCase7") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf7\xbf\xbf\xc0",
    },
    err = STRING_NOT_UTF8,
}

// 1 above max four bytes
decode_failure("StringsInvalidCase7") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            247,
            191,
            191,
            192,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

success("StringsValidCase9") {
    value = StringWrapper{
        str: "\xc2\x80",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            194,
            128,
            padding:6,
        ],
    },
}

// first byte following two byte value not starting with 0b10
encode_failure("StringsInvalidCase8") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xc2\x7f",
    },
    err = STRING_NOT_UTF8,
}

// first byte following two byte value not starting with 0b10
decode_failure("StringsInvalidCase8") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            194,
            127,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}

// first byte following three byte value not starting with 0b10
encode_failure("StringsInvalidCase9") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xe1\x7f\x80",
    },
    err = STRING_NOT_UTF8,
}

// first byte following three byte value not starting with 0b10
decode_failure("StringsInvalidCase9") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            225,
            127,
            128,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// second byte following three byte value not starting with 0b10
encode_failure("StringsInvalidCase10") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xe1\x80\x7f",
    },
    err = STRING_NOT_UTF8,
}

// second byte following three byte value not starting with 0b10
decode_failure("StringsInvalidCase10") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            225,
            128,
            127,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

success("StringsValidCase10") {
    value = StringWrapper{
        str: "\xf0\x90\x80\x80",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            144,
            128,
            128,
            padding:4,
        ],
    },
}

// first byte following four byte value not starting with 0b10
encode_failure("StringsInvalidCase11") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf0\x7f\x80\x80",
    },
    err = STRING_NOT_UTF8,
}

// first byte following four byte value not starting with 0b10
decode_failure("StringsInvalidCase11") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            127,
            128,
            128,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

// second byte following four byte value not starting with 0b10
encode_failure("StringsInvalidCase12") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf0\x90\x7f\x80",
    },
    err = STRING_NOT_UTF8,
}

// second byte following four byte value not starting with 0b10
decode_failure("StringsInvalidCase12") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            144,
            127,
            128,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

// third byte following four byte value not starting with 0b10
encode_failure("StringsInvalidCase13") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf0\x90\x80\x7f",
    },
    err = STRING_NOT_UTF8,
}

// third byte following four byte value not starting with 0b10
decode_failure("StringsInvalidCase13") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            144,
            128,
            127,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

// ascii slash
success("StringsValidCase11") {
    value = StringWrapper{
        str: "\x2f",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            47,
            padding:7,
        ],
    },
}

// slash (2)
encode_failure("StringsInvalidCase14") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xc0\xaf",
    },
    err = STRING_NOT_UTF8,
}

// slash (2)
decode_failure("StringsInvalidCase14") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            192,
            175,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}

// slash (3)
encode_failure("StringsInvalidCase15") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xe0\x80\xaf",
    },
    err = STRING_NOT_UTF8,
}

// slash (3)
decode_failure("StringsInvalidCase15") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            224,
            128,
            175,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// slash (4)
encode_failure("StringsInvalidCase16") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf0\x80\x80\xaf",
    },
    err = STRING_NOT_UTF8,
}

// slash (4)
decode_failure("StringsInvalidCase16") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            128,
            128,
            175,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+061D
success("StringsValidCase12") {
    value = StringWrapper{
        str: "\xd8\x9d",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            216,
            157,
            padding:6,
        ],
    },
}

// U+05F6
success("StringsValidCase13") {
    value = StringWrapper{
        str: "\xd7\xb6",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            215,
            182,
            padding:6,
        ],
    },
}

// U+0AF4
success("StringsValidCase14") {
    value = StringWrapper{
        str: "\xe0\xab\xb4",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            224,
            171,
            180,
            padding:5,
        ],
    },
}

// U+0C52
success("StringsValidCase15") {
    value = StringWrapper{
        str: "\xe0\xb1\x92",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            224,
            177,
            146,
            padding:5,
        ],
    },
}

// U+1E454
success("StringsValidCase16") {
    value = StringWrapper{
        str: "\xf0\x9e\x91\x94",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            158,
            145,
            148,
            padding:4,
        ],
    },
}

// U+1F978
success("StringsValidCase17") {
    value = StringWrapper{
        str: "\xf0\x9f\xa5\xb8",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            159,
            165,
            184,
            padding:4,
        ],
    },
}

// empty string
success("StringsValidCase18") {
    value = StringWrapper{
        str: "",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(0):8,
            repeat(0xff):8,

            // content
        ],
    },
}

// simply the letter a
success("StringsValidCase19") {
    value = StringWrapper{
        str: "\x61",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            97,
            padding:7,
        ],
    },
}

// euro sign, i.e \xe2\x82\xac
success("StringsValidCase20") {
    value = StringWrapper{
        str: "\xe2\x82\xac",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            226,
            130,
            172,
            padding:5,
        ],
    },
}

// mix and match from earlier cases
success("StringsValidCase21") {
    value = StringWrapper{
        str: "\x00\xf4\x8f\xbf\xbf\x7f\xf0\x90\x80\x80\xc2\x80",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(12):8,
            repeat(0xff):8,

            // content
            0,
            244,
            143,
            191,
            191,
            127,
            240,
            144,
            128,
            128,
            194,
            128,
            padding:4,
        ],
    },
}

// mix and match from earlier cases
success("StringsValidCase22") {
    value = StringWrapper{
        str: "\xdf\xbf\xef\xbf\xbf\xe1\x80\x80",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(8):8,
            repeat(0xff):8,

            // content
            223,
            191,
            239,
            191,
            191,
            225,
            128,
            128,
        ],
    },
}

// UTF-8 BOM
success("StringsValidCase23") {
    // TODO(fxbug.dev/52104): Dart consumes the UTF-8 BOM.
    bindings_denylist = [dart],
    value = StringWrapper{
        str: "\xef\xbb\xbf",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            239,
            187,
            191,
            padding:5,
        ],
    },
}

// Partial UTF-8 BOM (1)
encode_failure("StringsInvalidCase17") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xef",
    },
    err = STRING_NOT_UTF8,
}

// Partial UTF-8 BOM (1)
decode_failure("StringsInvalidCase17") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            239,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

// Partial UTF-8 BOM (2)
encode_failure("StringsInvalidCase18") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xef\xbb",
    },
    err = STRING_NOT_UTF8,
}

// Partial UTF-8 BOM (2)
decode_failure("StringsInvalidCase18") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            239,
            187,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}

// invalid partial sequence
encode_failure("StringsInvalidCase19") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xdf\x80\x80",
    },
    err = STRING_NOT_UTF8,
}

// invalid partial sequence
decode_failure("StringsInvalidCase19") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            223,
            128,
            128,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// long U+0000, non shortest form
encode_failure("StringsInvalidCase20") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xe0\x80\x80",
    },
    err = STRING_NOT_UTF8,
}

// long U+0000, non shortest form
decode_failure("StringsInvalidCase20") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            224,
            128,
            128,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

success("StringsValidCase24") {
    value = StringWrapper{
        str: "\xe1\x80\x80",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            225,
            128,
            128,
            padding:5,
        ],
    },
}

// invalid 2 octet sequence
encode_failure("StringsInvalidCase21") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xc3\x28",
    },
    err = STRING_NOT_UTF8,
}

// invalid 2 octet sequence
decode_failure("StringsInvalidCase21") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            195,
            40,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}

success("StringsValidCase25") {
    value = StringWrapper{
        str: "\x0d",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            13,
            padding:7,
        ],
    },
}

success("StringsValidCase26") {
    value = StringWrapper{
        str: "\x0a",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            10,
            padding:7,
        ],
    },
}

success("StringsValidCase27") {
    value = StringWrapper{
        str: "\x61",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            97,
            padding:7,
        ],
    },
}

success("StringsValidCase28") {
    value = StringWrapper{
        str: "\xc2\x81",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            194,
            129,
            padding:6,
        ],
    },
}

success("StringsValidCase29") {
    value = StringWrapper{
        str: "\xe1\x80\xbf",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            225,
            128,
            191,
            padding:5,
        ],
    },
}

success("StringsValidCase30") {
    value = StringWrapper{
        str: "\xf1\x80\xa0\xbf",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            241,
            128,
            160,
            191,
            padding:4,
        ],
    },
}

// UTF-8 BOM
success("StringsValidCase31") {
    // TODO(fxbug.dev/52104): Dart consumes the UTF-8 BOM.
    bindings_denylist = [dart],
    value = StringWrapper{
        str: "\xef\xbb\xbf",
    },
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            239,
            187,
            191,
            padding:5,
        ],
    },
}

encode_failure("StringsInvalidCase22") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xc0",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase22") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            192,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase23") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xc1",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase23") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            193,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase24") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf5",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase24") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            245,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase25") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf6",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase25") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            246,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase26") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf7",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase26") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            247,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase27") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf8",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase27") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            248,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase28") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf9",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase28") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            249,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase29") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xfa",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase29") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            250,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase30") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xfb",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase30") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            251,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase31") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xfc",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase31") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            252,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase32") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xfd",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase32") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            253,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase33") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xfe",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase33") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            254,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase34") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xff",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase34") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(1):8,
            repeat(0xff):8,

            // content
            255,
            padding:7,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+D800, high surrogate, first
encode_failure("StringsInvalidCase35") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xed\xa0\x80",
    },
    err = STRING_NOT_UTF8,
}

// U+D800, high surrogate, first
decode_failure("StringsInvalidCase35") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            237,
            160,
            128,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// low surrogate, first
encode_failure("StringsInvalidCase36") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xed\xb0\x80",
    },
    err = STRING_NOT_UTF8,
}

// low surrogate, first
decode_failure("StringsInvalidCase36") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            237,
            176,
            128,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// low surrogate, last
encode_failure("StringsInvalidCase37") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xed\xbf\xbf",
    },
    err = STRING_NOT_UTF8,
}

// low surrogate, last
decode_failure("StringsInvalidCase37") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            237,
            191,
            191,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+0000
encode_failure("StringsInvalidCase38") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xc0\x80",
    },
    err = STRING_NOT_UTF8,
}

// U+0000
decode_failure("StringsInvalidCase38") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            192,
            128,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}

// "A"
encode_failure("StringsInvalidCase39") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xc1\x80",
    },
    err = STRING_NOT_UTF8,
}

// "A"
decode_failure("StringsInvalidCase39") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            193,
            128,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}

// "B"
encode_failure("StringsInvalidCase40") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xc1\x81",
    },
    err = STRING_NOT_UTF8,
}

// "B"
decode_failure("StringsInvalidCase40") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            193,
            129,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+0000
encode_failure("StringsInvalidCase41") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xe0\x80\x80",
    },
    err = STRING_NOT_UTF8,
}

// U+0000
decode_failure("StringsInvalidCase41") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            224,
            128,
            128,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+0080
encode_failure("StringsInvalidCase42") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xe0\x82\x80",
    },
    err = STRING_NOT_UTF8,
}

// U+0080
decode_failure("StringsInvalidCase42") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            224,
            130,
            128,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+07ff
encode_failure("StringsInvalidCase43") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xe0\x9f\xbf",
    },
    err = STRING_NOT_UTF8,
}

// U+07ff
decode_failure("StringsInvalidCase43") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(3):8,
            repeat(0xff):8,

            // content
            224,
            159,
            191,
            padding:5,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+000D
encode_failure("StringsInvalidCase44") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf0\x80\x80\x8d",
    },
    err = STRING_NOT_UTF8,
}

// U+000D
decode_failure("StringsInvalidCase44") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            128,
            128,
            141,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+0091
encode_failure("StringsInvalidCase45") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf0\x80\x82\x91",
    },
    err = STRING_NOT_UTF8,
}

// U+0091
decode_failure("StringsInvalidCase45") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            128,
            130,
            145,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+0800
encode_failure("StringsInvalidCase46") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf0\x80\xa0\x80",
    },
    err = STRING_NOT_UTF8,
}

// U+0800
decode_failure("StringsInvalidCase46") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            128,
            160,
            128,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+FEFF (BOM)
encode_failure("StringsInvalidCase47") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf0\x8f\xbb\xbf",
    },
    err = STRING_NOT_UTF8,
}

// U+FEFF (BOM)
decode_failure("StringsInvalidCase47") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            240,
            143,
            187,
            191,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+003F
encode_failure("StringsInvalidCase48") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf8\x80\x80\x80\xbf",
    },
    err = STRING_NOT_UTF8,
}

// U+003F
decode_failure("StringsInvalidCase48") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(5):8,
            repeat(0xff):8,

            // content
            248,
            128,
            128,
            128,
            191,
            padding:3,
        ],
    },
    err = STRING_NOT_UTF8,
}

encode_failure("StringsInvalidCase49") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xfc\x80\x80\x80\xa0\xa5",
    },
    err = STRING_NOT_UTF8,
}

decode_failure("StringsInvalidCase49") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(6):8,
            repeat(0xff):8,

            // content
            252,
            128,
            128,
            128,
            160,
            165,
            padding:2,
        ],
    },
    err = STRING_NOT_UTF8,
}

// U+110000
encode_failure("StringsInvalidCase50") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf4\x90\x80\x80",
    },
    err = STRING_NOT_UTF8,
}

// U+110000
decode_failure("StringsInvalidCase50") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(4):8,
            repeat(0xff):8,

            // content
            244,
            144,
            128,
            128,
            padding:4,
        ],
    },
    err = STRING_NOT_UTF8,
}

// 5 bytes
encode_failure("StringsInvalidCase51") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xf8\xa0\xbf\x80\xbf",
    },
    err = STRING_NOT_UTF8,
}

// 5 bytes
decode_failure("StringsInvalidCase51") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(5):8,
            repeat(0xff):8,

            // content
            248,
            160,
            191,
            128,
            191,
            padding:3,
        ],
    },
    err = STRING_NOT_UTF8,
}

// 6 bytes
encode_failure("StringsInvalidCase52") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xfc\x9c\xbf\x80\xbf\x80",
    },
    err = STRING_NOT_UTF8,
}

// 6 bytes
decode_failure("StringsInvalidCase52") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(6):8,
            repeat(0xff):8,

            // content
            252,
            156,
            191,
            128,
            191,
            128,
            padding:2,
        ],
    },
    err = STRING_NOT_UTF8,
}

// BOMs in UTF-16 BE
encode_failure("StringsInvalidCase53") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xfe\xff",
    },
    err = STRING_NOT_UTF8,
}

// BOMs in UTF-16 BE
decode_failure("StringsInvalidCase53") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            254,
            255,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}

// BOMs in UTF-16 LE
encode_failure("StringsInvalidCase54") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    // Rust is excluded since std::string::String is always valid UTF-8.
    bindings_denylist = [dart, rust],
    value = StringWrapper{
        str: "\xff\xfe",
    },
    err = STRING_NOT_UTF8,
}

// BOMs in UTF-16 LE
decode_failure("StringsInvalidCase54") {
    // TODO(fxbug.dev/52104): UTF8 encoding and decoding is not conformant in Dart.
    bindings_denylist = [dart],
    type = StringWrapper,
    bytes = {
        v1, v2 = [
            // length, present
            num(2):8,
            repeat(0xff):8,

            // content
            255,
            254,
            padding:6,
        ],
    },
    err = STRING_NOT_UTF8,
}
