rbatis_codegen/
ops_not.rs1use crate::ops::Not;
2use crate::ops_macros::impl_value_unary_op;
3use rbs::Value;
4
5fn op_not(left: Value) -> Value {
6 match left {
7 Value::I32(value) => Value::I32(!value),
8 Value::I64(value) => Value::I64(!value),
9 Value::U32(value) => Value::U32(!value),
10 Value::U64(value) => Value::U64(!value),
11 Value::Bool(value) => Value::Bool(!value),
12 Value::Ext(_, value) => op_not(*value),
13 _ => Value::Null,
14 }
15}
16
17impl_value_unary_op!(Not, op_not, op_not);
18
19#[cfg(test)]
20mod test {
21 use crate::ops::Not;
22 use rbs::Value;
23
24 #[test]
25 fn test_not() {
26 assert_eq!(Value::Bool(true).op_not(), Value::Bool(false));
27 assert_eq!((&Value::I64(0)).op_not(), Value::I64(-1));
28 assert_eq!((&&Value::U32(0)).op_not(), Value::U32(u32::MAX));
29 }
30}