use msgpack_schema::*;

mod serialize {
    use super::*;

    #[derive(Serialize)]
    enum E1 {
        #[optional]
        V1,
    }

    #[derive(Serialize)]
    enum E2 {
        #[untagged]
        V1,
    }

    #[derive(Serialize)]
    enum E12 {
        #[flatten]
        V1,
    }

    #[derive(Serialize)]
    enum E3 {
        #[tag = 1]
        V1(#[untagged] String),
    }

    #[derive(Serialize)]
    enum E4 {
        #[tag = 1]
        V1(#[optional] String),
    }

    #[derive(Serialize)]
    enum E5 {
        #[tag = 1]
        V1(#[tag = 1] String),
    }

    #[derive(Serialize)]
    enum E13 {
        #[tag = 1]
        V1(#[flatten] String),
    }

    #[derive(Serialize)]
    #[untagged]
    enum E6 {
        #[optional]
        V1,
    }

    #[derive(Serialize)]
    #[untagged]
    enum E7 {
        #[untagged]
        V1,
    }

    #[derive(Serialize)]
    #[untagged]
    enum E8 {
        #[tag = 1]
        V1,
    }

    #[derive(Serialize)]
    #[untagged]
    enum E14 {
        #[flatten]
        V1,
    }

    #[derive(Serialize)]
    #[untagged]
    enum E9 {
        V1(#[untagged] String),
    }

    #[derive(Serialize)]
    #[untagged]
    enum E10 {
        V1(#[optional] String),
    }

    #[derive(Serialize)]
    #[untagged]
    enum E11 {
        V1(#[tag = 1] String),
    }

    #[derive(Serialize)]
    #[untagged]
    enum E15 {
        V1(#[flatten] String),
    }
}

mod deserialize {
    use super::*;

    #[derive(Deserialize)]
    enum E1 {
        #[optional]
        V1,
    }

    #[derive(Deserialize)]
    enum E2 {
        #[untagged]
        V1,
    }

    #[derive(Deserialize)]
    enum E12 {
        #[flatten]
        V1,
    }

    #[derive(Deserialize)]
    enum E3 {
        #[tag = 1]
        V1(#[untagged] String),
    }

    #[derive(Deserialize)]
    enum E4 {
        #[tag = 1]
        V1(#[optional] String),
    }

    #[derive(Deserialize)]
    enum E5 {
        #[tag = 1]
        V1(#[tag = 1] String),
    }

    #[derive(Deserialize)]
    enum E13 {
        #[tag = 1]
        V1(#[flatten] String),
    }

    #[derive(Deserialize)]
    #[untagged]
    enum E6 {
        #[optional]
        V1,
    }

    #[derive(Deserialize)]
    #[untagged]
    enum E7 {
        #[untagged]
        V1,
    }

    #[derive(Deserialize)]
    #[untagged]
    enum E8 {
        #[tag = 1]
        V1,
    }

    #[derive(Deserialize)]
    #[untagged]
    enum E14 {
        #[flatten]
        V1,
    }

    #[derive(Deserialize)]
    #[untagged]
    enum E9 {
        V1(#[untagged] String),
    }

    #[derive(Deserialize)]
    #[untagged]
    enum E10 {
        V1(#[optional] String),
    }

    #[derive(Deserialize)]
    #[untagged]
    enum E11 {
        V1(#[tag = 1] String),
    }

    #[derive(Deserialize)]
    #[untagged]
    enum E15 {
        V1(#[flatten] String),
    }
}

fn main() {}
