#![cfg(feature = "sync")]
use fieldx::fxstruct;
#[derive(Default, Debug, PartialEq, Eq)]
struct Bar {
flag: bool,
}
#[fxstruct(sync, get, lock, builder(into))]
struct Foo {
text: String,
#[fieldx(get(copy), reader)]
count: usize,
#[fieldx(lock(off))]
bare: Bar,
}
#[test]
fn basics() {
let obj = Foo::builder()
.text("hello")
.count(10usize)
.bare(Bar::default())
.build()
.expect("failed to build");
assert_eq!(*obj.text(), "hello", "getter of a locked field");
assert_eq!(obj.count(), 10, "copy-getter of a locked field");
assert_eq!(*obj.read_count(), 10, "reader of a locked field");
assert_eq!(obj.bare(), &Bar::default(), "getter of a field with no lock on it");
}