use rhai::{Engine, EvalAltResult, INT}; #[test] fn test_or_equals() -> Result<(), Box> { let engine = Engine::new(); assert_eq!(engine.eval::("let x = 16; x |= 74; x")?, 90); assert!(engine.eval::("let x = true; x |= false; x")?); assert!(engine.eval::("let x = false; x |= true; x")?); Ok(()) } #[test] fn test_and_equals() -> Result<(), Box> { let engine = Engine::new(); assert_eq!(engine.eval::("let x = 16; x &= 31; x")?, 16); assert!(!engine.eval::("let x = true; x &= false; x")?); assert!(!engine.eval::("let x = false; x &= true; x")?); assert!(engine.eval::("let x = true; x &= true; x")?); Ok(()) } #[test] fn test_xor_equals() -> Result<(), Box> { let engine = Engine::new(); assert_eq!(engine.eval::("let x = 90; x ^= 12; x")?, 86); Ok(()) } #[test] fn test_multiply_equals() -> Result<(), Box> { let engine = Engine::new(); assert_eq!(engine.eval::("let x = 2; x *= 3; x")?, 6); Ok(()) } #[test] fn test_divide_equals() -> Result<(), Box> { let engine = Engine::new(); assert_eq!(engine.eval::("let x = 6; x /= 2; x")?, 3); Ok(()) } #[test] fn test_right_shift_equals() -> Result<(), Box> { let engine = Engine::new(); assert_eq!(engine.eval::("let x = 9; x >>=1; x")?, 4); Ok(()) } #[test] fn test_left_shift_equals() -> Result<(), Box> { let engine = Engine::new(); assert_eq!(engine.eval::("let x = 4; x <<= 2; x")?, 16); Ok(()) } #[test] fn test_modulo_equals() -> Result<(), Box> { let engine = Engine::new(); assert_eq!(engine.eval::("let x = 10; x %= 4; x")?, 2); Ok(()) }