0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-18 10:41:29 -05:00

Disallow relative substraction in numeric fields

This commit is contained in:
Andrés Moya 2021-04-20 17:45:28 +02:00
parent 9aee88f9f1
commit 41bf436c3a
2 changed files with 15 additions and 8 deletions

View file

@ -38,8 +38,8 @@
second-value (interpret (second args) init-value)]
(case operator
"+" (+ init-value second-value)
"-" (- init-value second-value)
"*" (* init-value second-value)
"-" (- 0 second-value) ;; Note that there is ambiguity, so we don't allow
"*" (* init-value second-value) ;; relative substraction, it's only a negative number
"/" (/ init-value second-value)))
(let [value (interpret (first args) init-value)]
(loop [value value

View file

@ -41,6 +41,10 @@
(let [result (sm/expr-eval "*10" 20)]
(t/is (= result 200))))
(t/testing "Evaluate a negative number (not relative substraction)"
(let [result (sm/expr-eval "-10" 20)]
(t/is (= result -10))))
(t/testing "Evaluate a relative complex operation"
(let [result (sm/expr-eval "+(10*2 - 5)" 20)]
(t/is (= result 35))))
@ -63,16 +67,19 @@
(t/is (= result1 result2 12.5))))
(t/testing "Evaluate a relative operation with decimals"
(let [result (sm/expr-eval "*.5" 20)]
(t/is (= result 10))))
(let [result1 (sm/expr-eval "*.5" 20)
result2 (sm/expr-eval "*,5" 20)]
(t/is (= result1 result2 10))))
(t/testing "Evaluate a percentual operation with decimals"
(let [result (sm/expr-eval "+10.5%" 20)]
(t/is (= result 22.1))))
(let [result1 (sm/expr-eval "+10.5%" 20)
result2 (sm/expr-eval "+10,5%" 20)]
(t/is (= result1 result2 22.1))))
(t/testing "Evaluate a complex operation with decimals"
(let [result (sm/expr-eval "(20.333 + 10%) * (1 / 3)" 20)]
(t/is (cm/close? result 7.44433333))))
(let [result1 (sm/expr-eval "(20.333 + 10%) * (1 / 3)" 20)
result2 (sm/expr-eval "(20,333 + 10%) * (1 / 3)" 20)]
(t/is (cm/close? result1 result2 7.44433333))))
)