|
|
@@ -199,54 +199,54 @@
|
|
|
(deftest formatting
|
|
|
(testing "display normal"
|
|
|
(are [values exprs] (= values (calc/eval-lines (str/join "\n" exprs)))
|
|
|
- [nil "1000000"] [":norm" "1e6" ]
|
|
|
- [nil "1000000"] [":norm 7" "1e6"]
|
|
|
- [nil "1e+6"] [":norm 6" "1e6"]
|
|
|
- [nil "3.14"] [":norm 3" "PI"]
|
|
|
- [nil "3"] [":norm 1" "E"]
|
|
|
- [nil "0.000123"] [":norm 5" "0.000123"]
|
|
|
- [nil "1.23e-4"] [":norm 4" "0.000123"]
|
|
|
- [nil "123400000"] [":normal 9" "1.234e8"]
|
|
|
- [nil "1.234e+8"] [":normal 8" "1.234e8"]))
|
|
|
+ [nil "1000000"] [":format norm" "1e6" ]
|
|
|
+ [nil "1000000"] [":format norm 7" "1e6"]
|
|
|
+ [nil "1e+6"] [":format norm 6" "1e6"]
|
|
|
+ [nil "3.14"] [":format norm 3" "PI"]
|
|
|
+ [nil "3"] [":format norm 1" "E"]
|
|
|
+ [nil "0.000123"] [":format norm 5" "0.000123"]
|
|
|
+ [nil "1.23e-4"] [":format norm 4" "0.000123"]
|
|
|
+ [nil "123400000"] [":format normal 9" "1.234e8"]
|
|
|
+ [nil "1.234e+8"] [":format normal 8" "1.234e8"]))
|
|
|
(testing "display fixed"
|
|
|
(are [values exprs] (= values (calc/eval-lines (str/join "\n" exprs)))
|
|
|
- [nil "0.123450"] [":fix 6" "0.12345"]
|
|
|
- [nil "0.1235"] [":fix 4" "0.12345"]
|
|
|
- [nil "2.7183"] [":fixed 4" "E"]
|
|
|
- [nil "0.001"] [":fix 3" "0.0005"]
|
|
|
- [nil "4.000e-4"] [":fix 3" "0.0004"]
|
|
|
- [nil "1.00e+21"] [":fixed 2" "1e21+0.1"]))
|
|
|
+ [nil "0.123450"] [":format fix 6" "0.12345"]
|
|
|
+ [nil "0.1235"] [":format fix 4" "0.12345"]
|
|
|
+ [nil "2.7183"] [":format fixed 4" "E"]
|
|
|
+ [nil "0.001"] [":format fix 3" "0.0005"]
|
|
|
+ [nil "4.000e-4"] [":format fix 3" "0.0004"]
|
|
|
+ [nil "1.00e+21"] [":format fixed 2" "1e21+0.1"]))
|
|
|
(testing "display scientific"
|
|
|
(are [values exprs] (= values (calc/eval-lines (str/join "\n" exprs)))
|
|
|
- [nil "1e+6"] [":sci" "1e6"]
|
|
|
- [nil "3.142e+0"] [":sci 3" "PI"]
|
|
|
- [nil "3.14e+2"] [":scientific" "3.14*10^2"])))
|
|
|
+ [nil "1e+6"] [":format sci" "1e6"]
|
|
|
+ [nil "3.142e+0"] [":format sci 3" "PI"]
|
|
|
+ [nil "3.14e+2"] [":format scientific" "3.14*10^2"])))
|
|
|
|
|
|
(deftest fractions
|
|
|
(testing "mixed numbers"
|
|
|
(are [value expr] (= value (run expr))
|
|
|
- 0 "0_0_1"
|
|
|
- 1 "0_1/1"
|
|
|
- 1 "1_0/1"
|
|
|
- 2.5 "2_1/2"
|
|
|
- 2.5 "2_1_2"
|
|
|
- -4.28 "-4_7/25"
|
|
|
- 2.00101 "2_101/100000"
|
|
|
- -99.2 "-99_8_40"))
|
|
|
+ 0 "0 0/1"
|
|
|
+ 1 "0 1/1"
|
|
|
+ 1 "1 0/1"
|
|
|
+ 2.5 "2 1/2"
|
|
|
+ 2.5 "2 1/2"
|
|
|
+ -4.28 "-4 7/25"
|
|
|
+ 2.00101 "2 101/100000"
|
|
|
+ -99.2 "-99 8/40"))
|
|
|
(testing "display fractions"
|
|
|
(are [values exprs] (= values (calc/eval-lines (str/join "\n" exprs)))
|
|
|
- [nil "4_3/8"] [":frac" "4.375"]
|
|
|
- [nil "-7_1/4"] [":fraction" "-7.25"]
|
|
|
- [nil "2"] [":fractions" "19/20 + 1_1/20"]
|
|
|
- [nil "-2"] [":frac" "19/17 - 3_2/17"]
|
|
|
- [nil "3.14157"] [":frac" "3.14157"]
|
|
|
- [nil "3_14157/100000"] [":frac 100000" "3.14157"]))
|
|
|
+ [nil "4 3/8"] [":format frac" "4.375"]
|
|
|
+ [nil "-7 1/4"] [":format fraction" "-7.25"]
|
|
|
+ [nil "2"] [":format fractions" "19/20 + 1 1/20"]
|
|
|
+ [nil "-2"] [":format frac" "19/17 - 3 2/17"]
|
|
|
+ [nil "3.14157"] [":format frac" "3.14157"]
|
|
|
+ [nil "3 14157/100000"] [":format frac 100000" "3.14157"]))
|
|
|
(testing "display improper fractions"
|
|
|
(are [values exprs] (= values (calc/eval-lines (str/join "\n" exprs)))
|
|
|
- [nil "35/8"] [":frac-i" "4.375"]
|
|
|
- [nil "-29/4"] [":frac-imp" "-7.25"]
|
|
|
- [nil "3.14157"] [":fractions-improper" "3.14157" ]
|
|
|
- [nil "314157/100000"] [":frac-i 100000" "3.14157"])))
|
|
|
+ [nil "35/8"] [":format improper" "4.375"]
|
|
|
+ [nil "-29/4"] [":format imp" "-7.25"]
|
|
|
+ [nil "3.14157"] [":format improper" "3.14157" ]
|
|
|
+ [nil "314157/100000"] [":format imp 100000" "3.14157"])))
|
|
|
|
|
|
(deftest base-conversion
|
|
|
(testing "mixed base input"
|
|
|
@@ -258,10 +258,11 @@
|
|
|
32.0 "0b100 * 0b1000"))
|
|
|
(testing "mixed base output"
|
|
|
(are [values exprs] (= values (calc/eval-lines (str/join "\n" exprs)))
|
|
|
- ["12345" "3039"] ["12345" ":hex"]
|
|
|
- ["12345" "30071"] ["12345" ":oct"]
|
|
|
- ["12345" "11000000111001"]["12345" ":bin"]
|
|
|
- [nil "100000000"] [":bin" "0b10000 * 0b10000"])))
|
|
|
+ ["12345" "0x3039"] ["12345" ":hex"]
|
|
|
+ ["12345" "0o30071"] ["12345" ":oct"]
|
|
|
+ ["12345" "0b11000000111001"]["12345" ":bin"]
|
|
|
+ [nil "0b100000000"] [":bin" "0b10000 * 0b10000"]
|
|
|
+ [nil "-0xff"] [":hex" "-255"])))
|
|
|
|
|
|
(deftest comments
|
|
|
(testing "comments are ignored"
|