mod common;
use common::round_trip;
use tree_buf::prelude::*;
#[test]
fn unnamed_field_one_variant() {
#[derive(Encode, Decode, Debug, PartialEq, Clone)]
enum K {
St(String),
}
round_trip(&K::St("s".to_owned()), 6, 16);
}
#[test]
fn selects_correct_discriminant() {
#[derive(Encode, Decode, Debug, PartialEq, Clone)]
enum Opts {
One(u32),
Two(u8),
}
round_trip(&Opts::One(1), 6, 14);
round_trip(&Opts::Two(2), 7, 15);
}
#[test]
fn pub_vis() {
#[derive(Encode, Decode, Debug, PartialEq, Clone)]
pub enum Pub {
Val(u32),
}
round_trip(&Pub::Val(10), 7, 15);
}
#[test]
fn unused_variations_do_not_affect_size() {
#[derive(Encode, Decode, Debug, PartialEq, Clone)]
enum A {
One(u32),
}
#[derive(Encode, Decode, Debug, PartialEq, Clone)]
enum B {
One(u32),
Two(u32),
}
round_trip(&A::One(1), 6, 14);
round_trip(&B::One(1), 6, 14);
}
#[test]
fn void_value() {
#[derive(Encode, Decode, Debug, PartialEq, Clone)]
enum HasVoid {
One,
Two,
}
round_trip(&HasVoid::One, 6, 12);
}
#[test]
fn mixed_void_and_single() {
#[derive(Encode, Decode, Debug, PartialEq, Clone)]
enum Mixed {
Ex, One(u32),
}
round_trip(&Mixed::Ex, 5, 11);
round_trip(&Mixed::One(10), 7, 15);
round_trip(&vec![Mixed::Ex, Mixed::One(2), Mixed::One(2), Mixed::One(3), Mixed::Ex], 21, 24);
}