File tree Expand file tree Collapse file tree
tests/interpreter/cases/arithmetic Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -27,14 +27,64 @@ fn basic() -> Result<()> {
2727 div {
2828 21 / 5 == 4.2
2929 }
30+
31+ eq1 { 1 == 1.0 }
32+ eq2 { 1 == 1.00 }
33+ neq1 { 1 != 1.0001 }
34+
35+ sum { 0.1 + 0.2 == 0.3 }
36+ diff { 0.3 - 0.2 == 0.1 }
37+ product { 0.1 * 0.2 == 0.02 }
38+ quotient { 0.3 / 0.1 == 3.0 }
39+
40+ lt { 1 < 1.0001 }
41+ le { 1 <= 1.0 }
42+ gt { 1.0001 > 1 }
43+ ge { 1.0 >= 1 }
44+ neg_lt { -1 < 0 }
45+ neg_le { -1 <= -1 }
46+
47+ div1 { 1 / 2 == 0.5 }
48+ div2 { 5 / 2 == 2.5 }
49+
50+ neg1 { -1 == -1 }
51+ neg2 { -1 + 2 == 1 }
52+ neg3 { -(2 + 3) == -5 }
53+ neg4 { 1 - -1 == 2 }
54+
55+ big1 { 1000000000000000000000 + 1 == 1000000000000000000001 }
56+ big2 { 2 * 1000000000000000000000 == 2000000000000000000000 }
57+ big3 { 2 / 1e18 == 2e-18 }
3058"# ;
3159
3260 let expected = vec ! [ Value :: from_json_str(
3361 r#" {
3462 "add" : true,
3563 "sub" : true,
3664 "mul" : true,
37- "div" : true
65+ "div" : true,
66+ "eq1": true,
67+ "eq2": true,
68+ "neq1": true,
69+ "sum": true,
70+ "diff": true,
71+ "product": true,
72+ "quotient": true,
73+ "lt": true,
74+ "le": true,
75+ "gt": true,
76+ "ge": true,
77+ "neg_lt": true,
78+ "neg_le": true,
79+ "div1": true,
80+ "div2": true,
81+ "neg1": true,
82+ "neg2": true,
83+ "neg3": true,
84+ "neg4": true,
85+ "big1": true,
86+ "big2": true,
87+ "big3": true
3888}"# ,
3989 ) ?] ;
4090
Original file line number Diff line number Diff line change @@ -19,3 +19,100 @@ cases:
1919 c : 1
2020 d : -2
2121
22+ - note : integer-float-equality
23+ data : {}
24+ modules :
25+ - |
26+ package test
27+
28+ eq1 = 1 == 1.0
29+ eq2 = 1 == 1.00
30+ neq1 = 1 != 1.0001
31+ query : data.test
32+ want_result :
33+ eq1 : true
34+ eq2 : true
35+ neq1 : true
36+
37+ - note : float-precision
38+ data : {}
39+ modules :
40+ - |
41+ package test
42+
43+ sum = 0.1 + 0.2
44+ diff = 0.3 - 0.2
45+ product = 0.1 * 0.2
46+ quotient = 0.3 / 0.1
47+ query : data.test
48+ want_result :
49+ sum : 0.30000000000000004
50+ diff : 0.09999999999999998
51+ product : 0.020000000000000004
52+ quotient : 2.9999999999999996
53+
54+ - note : numeric-comparisons
55+ data : {}
56+ modules :
57+ - |
58+ package test
59+
60+ lt = 1 < 1.0001
61+ le = 1 <= 1.0
62+ gt = 1.0001 > 1
63+ ge = 1.0 >= 1
64+ neg_lt = -1 < 0
65+ neg_le = -1 <= -1
66+ query : data.test
67+ want_result :
68+ lt : true
69+ le : true
70+ gt : true
71+ ge : true
72+ neg_lt : true
73+ neg_le : true
74+
75+ - note : division
76+ data : {}
77+ modules :
78+ - |
79+ package test
80+
81+ div1 = 1 / 2
82+ div2 = 5 / 2
83+ query : data.test
84+ want_result :
85+ div1 : 0.5
86+ div2 : 2.5
87+
88+ - note : negative-number-arithmetic
89+ data : {}
90+ modules :
91+ - |
92+ package test
93+
94+ neg1 = -1
95+ neg2 = -1 + 2
96+ neg3 = 0 - (2 + 3)
97+ neg4 = 1 - -1
98+ query : data.test
99+ want_result :
100+ neg1 : -1
101+ neg2 : 1
102+ neg3 : -5
103+ neg4 : 2
104+
105+ - note : big-numbers
106+ data : {}
107+ modules :
108+ - |
109+ package test
110+
111+ big1 = 1000000000000000000000 + 1
112+ big2 = 2 * 1000000000000000000000
113+ big3 = 2 / 1e18
114+ query : data.test
115+ want_result :
116+ big1 : 1000000000000000000001
117+ big2 : 2000000000000000000000
118+ big3 : 2e-18
You can’t perform that action at this time.
0 commit comments