diff options
Diffstat (limited to 'src/tests.rs')
-rw-r--r-- | src/tests.rs | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/tests.rs b/src/tests.rs index 170d4f2..013696b 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -1,16 +1,16 @@ #[cfg(test)] mod tests { - use std::collections::HashMap; use rust_decimal_macros::dec; use crate::*; fn new_state() -> RPState { return RPState { - registers: HashMap::new(), + registers: baseline_regsiters(), stack: Vec::new(), eat_count: 0, mode: Mode::CommandChar, + is_num_negative: false, wip_str: String::from(""), reg_command: String::from(""), num: dec!(0.0), @@ -43,6 +43,9 @@ mod tests { eval("2 2^", &mut state)?; assert_eq!(state.stack[6], Value::Num(dec!(4))); + eval("c_40 32-", &mut state)?; + assert_eq!(state.stack[0], Value::Num(dec!(-72))); + Ok(()) } @@ -54,7 +57,33 @@ mod tests { eval("1(inc)(inc)", &mut state)?; assert_eq!(state.stack[0], Value::Num(dec!(3))); + eval("c1(inc)", &mut state)?; + assert_eq!(state.stack[0], Value::Num(dec!(2))); + + Ok(()) + } + + #[test] + fn test_stdlib() -> Result<(), Exit> { + let mut state = new_state(); + // TODO: Add this back in one we've figured out booleans + // comparison + // + // Right now, `5 9 /` results in 0.5555555555555555555555555556 + // Which means that this conversion results in + // -40.000000000000000000000000003 + // Which, like, decimal bases are fun and all + // + // And I don't want to fuss with unwrapping state and all that + // mess. I'd much rather do something like + // eval("_40(F->C)", &mut state)?; + // assert_eq!(state.stack[0], Value::Num(dec!(-40))); + + eval("_40(C->F)", &mut state)?; + assert_eq!(state.stack[0], Value::Num(dec!(-40))); + eval("c0(C->F)", &mut state)?; + assert_eq!(state.stack[0], Value::Num(dec!(32))); Ok(()) } |