use polyvalue::{operations::*, Value};
fn main() {
let value1 = Value::from(42);
let value2 = Value::from(43.2);
assert_eq!(
Value::arithmetic_op(&value1, &value2, ArithmeticOperation::Add).unwrap(),
Value::from(85.2)
);
let string_value = Value::from("Hello 42");
assert_eq!(
Value::arithmetic_op(&string_value, &value1, ArithmeticOperation::Subtract).unwrap(),
Value::from("Hello ")
);
let value1 = Value::from(0b1010);
let value2 = Value::from(0b1100);
assert_eq!(
Value::bitwise_op(&value1, &value2, BitwiseOperation::And).unwrap(),
Value::from(0b1000)
);
let value1 = Value::from(42);
let value2 = Value::from(false);
assert_eq!(
Value::boolean_op(&value1, &value2, BooleanOperation::And).unwrap(),
Value::from(false)
);
}