use reifydb_core::encoded::shape::RowShape;
use reifydb_type::value::r#type::Type;
#[test]
fn test_boolean_bit_patterns() {
let shape = RowShape::testing(&[Type::Boolean]);
let mut row = shape.allocate();
shape.set_bool(&mut row, 0, true);
assert_eq!(shape.get_bool(&row, 0), true);
shape.set_bool(&mut row, 0, false);
assert_eq!(shape.get_bool(&row, 0), false);
shape.set_none(&mut row, 0);
assert!(shape.try_get_bool(&row, 0).is_none());
}
#[test]
fn test_boolean_field_independence() {
let shape = RowShape::testing(&[
Type::Boolean,
Type::Boolean,
Type::Boolean,
Type::Boolean,
Type::Boolean,
Type::Boolean,
Type::Boolean,
Type::Boolean,
]);
let mut row = shape.allocate();
for i in 0..8 {
shape.set_bool(&mut row, i, i % 2 == 0);
}
for i in 0..8 {
assert_eq!(shape.get_bool(&row, i), i % 2 == 0);
}
shape.set_bool(&mut row, 2, true);
shape.set_bool(&mut row, 5, false);
assert_eq!(shape.get_bool(&row, 0), true);
assert_eq!(shape.get_bool(&row, 1), false);
assert_eq!(shape.get_bool(&row, 2), true); assert_eq!(shape.get_bool(&row, 3), false);
assert_eq!(shape.get_bool(&row, 4), true);
assert_eq!(shape.get_bool(&row, 5), false); assert_eq!(shape.get_bool(&row, 6), true);
assert_eq!(shape.get_bool(&row, 7), false);
}