// 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.

success("FlexibleEnumInt8") {
    value = FlexibleEnumInt8Struct{
        e: 0x01,
    },
    bytes = {
        v1, v2 = [
            0x01, padding:7,
        ],
    },
}

success("FlexibleEnumInt16") {
    value = FlexibleEnumInt16Struct{
        e: 0x0102,
    },
    bytes = {
        v1, v2 = [
            0x02, 0x01, padding:6,
        ],
    },
}

success("FlexibleEnumInt32") {
    value = FlexibleEnumInt32Struct{
        e: 0x01020304,
    },
    bytes = {
        v1, v2 = [
            0x04, 0x03, 0x02, 0x01, padding:4,
        ],
    },
}

success("FlexibleEnumInt64") {
    value = FlexibleEnumInt64Struct{
        e: 0x0102030405060708,
    },
    bytes = {
        v1, v2 = [
            0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01,
        ],
    },
}

success("FlexibleEnumUint8") {
    value = FlexibleEnumUint8Struct{
        e: 0x01,
    },
    bytes = {
        v1, v2 = [
            0x01, padding:7,
        ],
    },
}

success("FlexibleEnumUint16") {
    value = FlexibleEnumUint16Struct{
        e: 0x0102,
    },
    bytes = {
        v1, v2 = [
            0x02, 0x01, padding:6,
        ],
    },
}

success("FlexibleEnumUint32") {
    value = FlexibleEnumUint32Struct{
        e: 0x01020304,
    },
    bytes = {
        v1, v2 = [
            0x04, 0x03, 0x02, 0x01, padding:4,
        ],
    },
}

success("FlexibleEnumUint64") {
    value = FlexibleEnumUint64Struct{
        e: 0x0102030405060708,
    },
    bytes = {
        v1, v2 = [
            0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01,
        ],
    },
}

success("FlexibleEnumInt8UnknownValue") {
    value = FlexibleEnumInt8Struct{
        e: 0x0f,
    },
    bytes = {
        v1, v2 = [
            0x0f, padding:7,
        ],
    },
}

success("FlexibleEnumInt16UnknownValue") {
    value = FlexibleEnumInt16Struct{
        e: 0x0fee,
    },
    bytes = {
        v1, v2 = [
            0xee, 0x0f, padding:6,
        ],
    },
}

success("FlexibleEnumInt32UnknownValue") {
    value = FlexibleEnumInt32Struct{
        e: 0x0feeddcc,
    },
    bytes = {
        v1, v2 = [
            0xcc, 0xdd, 0xee, 0x0f, padding:4,
        ],
    },
}

success("FlexibleEnumInt64UnknownValue") {
    value = FlexibleEnumInt64Struct{
        e: 0x0feeddccbbaa9988,
    },
    bytes = {
        v1, v2 = [
            0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0x0f,
        ],
    },
}

success("FlexibleEnumUint8UnknownValue") {
    value = FlexibleEnumUint8Struct{
        e: 0xff,
    },
    bytes = {
        v1, v2 = [
            0xff, padding:7,
        ],
    },
}

success("FlexibleEnumUint16UnknownValue") {
    value = FlexibleEnumUint16Struct{
        e: 0xffee,
    },
    bytes = {
        v1, v2 = [
            0xee, 0xff, padding:6,
        ],
    },
}

success("FlexibleEnumUint32UnknownValue") {
    value = FlexibleEnumUint32Struct{
        e: 0xffeeddcc,
    },
    bytes = {
        v1, v2 = [
            0xcc, 0xdd, 0xee, 0xff, padding:4,
        ],
    },
}

success("FlexibleEnumUint64UnknownValue") {
    value = FlexibleEnumUint64Struct{
        e: 0xffeeddccbbaa9988,
    },
    bytes = {
        v1, v2 = [
            0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
        ],
    },
}
