use type_sets::{
assert::{contains, eq, is_empty, subset, superset},
*,
};
struct A;
struct B;
struct C;
struct D;
struct E;
#[test]
fn test() {
superset::<(A,), (A,)>();
superset::<(A, B), (A,)>();
superset::<(B, A, C), (A,)>();
contains::<(A,), A>();
contains::<(A, B), A>();
contains::<(B, A, C), A>();
subset::<(A, B), (A, B)>();
subset::<(A,), (A,)>();
subset::<(B, A, C), (A, B, C)>();
type X = Insert<(), A>;
type Y = Insert<X, B>;
type Z = Insert<Y, C>;
eq::<X, (A,)>();
eq::<Y, (B, A)>();
eq::<Z, (A, B, C)>();
eq::<Union<Z, (D,)>, (A, B, C, D)>();
eq::<Union<Z, (D, E)>, (A, B, C, D, E)>();
eq::<Union<Z, (D, E, A)>, (A, B, C, D, E, A)>();
eq::<Union<Z, (D, E, A)>, (A, B, C, D, E, A)>();
is_empty::<()>();
is_empty::<Union<(), ()>>();
}