mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
feat: add tests for number semantics (#555)
This commit is contained in:
@@ -27,6 +27,34 @@ fn basic() -> Result<()> {
|
||||
div {
|
||||
21 / 5 == 4.2
|
||||
}
|
||||
|
||||
eq1 { 1 == 1.0 }
|
||||
eq2 { 1 == 1.00 }
|
||||
neq1 { 1 != 1.0001 }
|
||||
|
||||
sum { 0.1 + 0.2 == 0.3 }
|
||||
diff { 0.3 - 0.2 == 0.1 }
|
||||
product { 0.1 * 0.2 == 0.02 }
|
||||
quotient { 0.3 / 0.1 == 3.0 }
|
||||
|
||||
lt { 1 < 1.0001 }
|
||||
le { 1 <= 1.0 }
|
||||
gt { 1.0001 > 1 }
|
||||
ge { 1.0 >= 1 }
|
||||
neg_lt { -1 < 0 }
|
||||
neg_le { -1 <= -1 }
|
||||
|
||||
div1 { 1 / 2 == 0.5 }
|
||||
div2 { 5 / 2 == 2.5 }
|
||||
|
||||
neg1 { -1 == -1 }
|
||||
neg2 { -1 + 2 == 1 }
|
||||
neg3 { -(2 + 3) == -5 }
|
||||
neg4 { 1 - -1 == 2 }
|
||||
|
||||
big1 { 1000000000000000000000 + 1 == 1000000000000000000001 }
|
||||
big2 { 2 * 1000000000000000000000 == 2000000000000000000000 }
|
||||
big3 { 2 / 1e18 == 2e-18 }
|
||||
"#;
|
||||
|
||||
let expected = vec![Value::from_json_str(
|
||||
@@ -34,7 +62,29 @@ fn basic() -> Result<()> {
|
||||
"add" : true,
|
||||
"sub" : true,
|
||||
"mul" : true,
|
||||
"div" : true
|
||||
"div" : true,
|
||||
"eq1": true,
|
||||
"eq2": true,
|
||||
"neq1": true,
|
||||
"sum": true,
|
||||
"diff": true,
|
||||
"product": true,
|
||||
"quotient": true,
|
||||
"lt": true,
|
||||
"le": true,
|
||||
"gt": true,
|
||||
"ge": true,
|
||||
"neg_lt": true,
|
||||
"neg_le": true,
|
||||
"div1": true,
|
||||
"div2": true,
|
||||
"neg1": true,
|
||||
"neg2": true,
|
||||
"neg3": true,
|
||||
"neg4": true,
|
||||
"big1": true,
|
||||
"big2": true,
|
||||
"big3": true
|
||||
}"#,
|
||||
)?];
|
||||
|
||||
|
||||
@@ -19,3 +19,100 @@ cases:
|
||||
c: 1
|
||||
d: -2
|
||||
|
||||
- note: integer-float-equality
|
||||
data: {}
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
eq1 = 1 == 1.0
|
||||
eq2 = 1 == 1.00
|
||||
neq1 = 1 != 1.0001
|
||||
query: data.test
|
||||
want_result:
|
||||
eq1: true
|
||||
eq2: true
|
||||
neq1: true
|
||||
|
||||
- note: float-precision
|
||||
data: {}
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
sum = 0.1 + 0.2
|
||||
diff = 0.3 - 0.2
|
||||
product = 0.1 * 0.2
|
||||
quotient = 0.3 / 0.1
|
||||
query: data.test
|
||||
want_result:
|
||||
sum: 0.30000000000000004
|
||||
diff: 0.09999999999999998
|
||||
product: 0.020000000000000004
|
||||
quotient: 2.9999999999999996
|
||||
|
||||
- note: numeric-comparisons
|
||||
data: {}
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
lt = 1 < 1.0001
|
||||
le = 1 <= 1.0
|
||||
gt = 1.0001 > 1
|
||||
ge = 1.0 >= 1
|
||||
neg_lt = -1 < 0
|
||||
neg_le = -1 <= -1
|
||||
query: data.test
|
||||
want_result:
|
||||
lt: true
|
||||
le: true
|
||||
gt: true
|
||||
ge: true
|
||||
neg_lt: true
|
||||
neg_le: true
|
||||
|
||||
- note: division
|
||||
data: {}
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
div1 = 1 / 2
|
||||
div2 = 5 / 2
|
||||
query: data.test
|
||||
want_result:
|
||||
div1: 0.5
|
||||
div2: 2.5
|
||||
|
||||
- note: negative-number-arithmetic
|
||||
data: {}
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
neg1 = -1
|
||||
neg2 = -1 + 2
|
||||
neg3 = 0 - (2 + 3)
|
||||
neg4 = 1 - -1
|
||||
query: data.test
|
||||
want_result:
|
||||
neg1: -1
|
||||
neg2: 1
|
||||
neg3: -5
|
||||
neg4: 2
|
||||
|
||||
- note: big-numbers
|
||||
data: {}
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
|
||||
big1 = 1000000000000000000000 + 1
|
||||
big2 = 2 * 1000000000000000000000
|
||||
big3 = 2 / 1e18
|
||||
query: data.test
|
||||
want_result:
|
||||
big1: 1000000000000000000001
|
||||
big2: 2000000000000000000000
|
||||
big3: 2e-18
|
||||
|
||||
Reference in New Issue
Block a user