use binrw::{binwrite, io::Cursor, BinWrite};

#[test]
fn pass_args() {
    #[binwrite]
    #[bw(import{ x: u32, y: u8 })]
    struct TestInner {
        #[bw(calc = x)]
        x_copy: u32,

        #[bw(calc = y)]
        y_copy: u8,
    }

    #[derive(BinWrite)]
    #[bw(big)]
    struct Test {
        #[bw(args { x: 1, y: 2 })]
        inner: TestInner,
    }

    let mut x = Cursor::new(Vec::new());
    Test {
        inner: TestInner {},
    }
    .write(&mut x)
    .unwrap();

    assert_eq!(x.into_inner(), b"\0\0\0\x01\x02");
}
