use pack_bools::pack_bools;
#[pack_bools(newtype)]
#[derive(Default)]
struct WithDefaults {
_string: String,
default_false: bool,
#[pack_bools(default = false)]
default_false_2: bool,
#[pack_bools(default = true)]
default_true: bool,
}
#[test]
fn test_defaults() {
let defaults = WithDefaults::default();
assert!(!defaults.get_default_false());
assert!(!defaults.get_default_false());
assert!(defaults.get_default_true());
}
#[pack_bools(get = %, set = s%)]
#[derive(Default)]
struct CustomNames {
bool_a: bool,
bool_b: bool,
#[pack_bools(get = pub get_custom)]
custom: bool,
}
#[test]
fn test_custom_names() {
let mut cn = CustomNames::default();
assert!(!cn.bool_a());
assert!(!cn.bool_b());
assert!(!cn.get_custom());
cn.sbool_a(true);
assert!(cn.bool_a());
assert!(!cn.bool_b());
assert!(!cn.get_custom());
cn.sbool_b(true);
cn.sbool_a(false);
assert!(!cn.bool_a());
assert!(cn.bool_b());
assert!(!cn.get_custom());
}
#[pack_bools(no_getters)]
#[derive(Default)]
struct NoGetters {
a: bool,
#[pack_bools(get = get_me)]
b: bool,
}
#[test]
fn test_no_getters() {
let x = NoGetters::default();
assert!(!x.get_me());
}
mod inner {
use pack_bools::pack_bools;
#[pack_bools]
#[derive(Default)]
pub struct Inner {
pub(super) a: bool,
pub(crate) b: bool,
#[pack_bools(get = pub)]
c: bool
}
}
#[test]
fn test_inner() {
let x = inner::Inner::default();
assert!(!x.get_a());
assert!(!x.get_b());
assert!(!x.get_c());
}