binf/tests/tests.rs

85 lines
2.1 KiB
Rust
Raw Permalink Normal View History

2023-11-03 20:02:21 +01:00
use binf::*;
2023-10-06 21:51:59 +02:00
#[bitflag]
pub struct Test {
a: bool,
b: bool,
c: bool,
d: bool,
e: bool,
f: bool,
g: bool,
h: bool,
}
#[test]
fn macro_test() {
2023-11-03 20:02:21 +01:00
let test = Test::new(0b10101010);
2023-10-06 21:51:59 +02:00
assert_eq!(test.a(), false);
assert_eq!(test.b(), true);
assert_eq!(test.c(), false);
assert_eq!(test.d(), true);
assert_eq!(test.e(), false);
assert_eq!(test.f(), true);
assert_eq!(test.g(), false);
assert_eq!(test.h(), true);
}
#[test]
fn macro_test_set() {
let mut test = Test::new(0b10101010);
test.set_a(true);
test.set_b(false);
test.set_c(true);
test.set_d(false);
test.set_e(true);
test.set_f(false);
test.set_g(true);
test.set_h(false);
assert_eq!(test.value(), 0b01010101);
}
#[test]
fn macro_test_iter() {
let test = Test::new(0b10101010);
let flags = test.flags();
let mut iter = flags.iter();
assert_eq!(iter.next(), Some(false).as_ref());
assert_eq!(iter.next(), Some(true).as_ref());
assert_eq!(iter.next(), Some(false).as_ref());
assert_eq!(iter.next(), Some(true).as_ref());
assert_eq!(iter.next(), Some(false).as_ref());
assert_eq!(iter.next(), Some(true).as_ref());
assert_eq!(iter.next(), Some(false).as_ref());
assert_eq!(iter.next(), Some(true).as_ref());
assert_eq!(iter.next(), None);
}
#[test]
fn u64_test() {
let mut flags = 0b10101010u64;
assert_eq!(flags.get_flag(0), false);
assert_eq!(flags.get_flag(1), true);
assert_eq!(flags.get_flag(2), false);
assert_eq!(flags.get_flag(3), true);
assert_eq!(flags.get_flag(4), false);
assert_eq!(flags.get_flag(5), true);
assert_eq!(flags.get_flag(6), false);
assert_eq!(flags.get_flag(7), true);
flags.set_flag(0, true);
assert_eq!(flags, 0b10101011);
}
2023-11-03 21:29:21 +01:00
#[test]
fn off_test() {
let flags = Test::new(0b0);
assert_eq!(flags.a(), false);
assert_eq!(flags.b(), false);
assert_eq!(flags.c(), false);
assert_eq!(flags.d(), false);
assert_eq!(flags.e(), false);
assert_eq!(flags.f(), false);
assert_eq!(flags.g(), false);
assert_eq!(flags.h(), false);
}