summary refs log tree commit diff
path: root/src/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests.rs')
-rw-r--r--src/tests.rs33
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(())
     }