Skip to content

Commit 540e49a

Browse files
committed
Sync tests with latest changes in spec
1 parent e43d654 commit 540e49a

File tree

2 files changed

+209
-7
lines changed

2 files changed

+209
-7
lines changed

tests/functions.json

Lines changed: 79 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,30 @@
127127
"expression": "contains(decimals, `false`)",
128128
"result": false
129129
},
130+
{
131+
"expression": "ends_with(str, `r`)",
132+
"result": true
133+
},
134+
{
135+
"expression": "ends_with(str, `tr`)",
136+
"result": true
137+
},
138+
{
139+
"expression": "ends_with(str, `Str`)",
140+
"result": true
141+
},
142+
{
143+
"expression": "ends_with(str, `SStr`)",
144+
"result": false
145+
},
146+
{
147+
"expression": "ends_with(str, `foo`)",
148+
"result": false
149+
},
150+
{
151+
"expression": "ends_with(str, `0`)",
152+
"error": "invalid-type"
153+
},
130154
{
131155
"expression": "floor(`1.2`)",
132156
"result": 1
@@ -195,6 +219,10 @@
195219
"expression": "max(decimals)",
196220
"result": 1.2
197221
},
222+
{
223+
"expression": "max(strings)",
224+
"result": "c"
225+
},
198226
{
199227
"expression": "max(abc)",
200228
"error": "invalid-type"
@@ -235,6 +263,10 @@
235263
"expression": "min(decimals)",
236264
"result": -1.5
237265
},
266+
{
267+
"expression": "min(strings)",
268+
"result": "a"
269+
},
238270
{
239271
"expression": "type(`abc`)",
240272
"result": "string"
@@ -339,6 +371,46 @@
339371
"expression": "join(`|`, empty_list)",
340372
"result": ""
341373
},
374+
{
375+
"expression": "reverse(numbers)",
376+
"result": [5, 4, 3, -1]
377+
},
378+
{
379+
"expression": "reverse(array)",
380+
"result": ["100", "a", 5, 4, 3, -1]
381+
},
382+
{
383+
"expression": "reverse(`[]`)",
384+
"result": []
385+
},
386+
{
387+
"expression": "reverse(``)",
388+
"result": ""
389+
},
390+
{
391+
"expression": "reverse(`hello world`)",
392+
"result": "dlrow olleh"
393+
},
394+
{
395+
"expression": "starts_with(str, `S`)",
396+
"result": true
397+
},
398+
{
399+
"expression": "starts_with(str, `St`)",
400+
"result": true
401+
},
402+
{
403+
"expression": "starts_with(str, `Str`)",
404+
"result": true
405+
},
406+
{
407+
"expression": "starts_with(str, `String`)",
408+
"result": false
409+
},
410+
{
411+
"expression": "starts_with(str, `0`)",
412+
"error": "invalid-type"
413+
},
342414
{
343415
"expression": "sum(numbers)",
344416
"result": 11
@@ -547,6 +619,10 @@
547619
"expression": "max_by(people, &age)",
548620
"result": {"age": 50, "age_str": "50", "bool": false, "name": "d"}
549621
},
622+
{
623+
"expression": "max_by(people, &age_str)",
624+
"result": {"age": 50, "age_str": "50", "bool": false, "name": "d"}
625+
},
550626
{
551627
"expression": "max_by(people, &bool)",
552628
"error": "invalid-type"
@@ -560,11 +636,11 @@
560636
"result": {"age": 50, "age_str": "50", "bool": false, "name": "d"}
561637
},
562638
{
563-
"expression": "max_by(people, &age_str)",
564-
"error": "invalid-type"
639+
"expression": "min_by(people, &age)",
640+
"result": {"age": 10, "age_str": "10", "bool": true, "name": 3}
565641
},
566642
{
567-
"expression": "min_by(people, &age)",
643+
"expression": "min_by(people, &age_str)",
568644
"result": {"age": 10, "age_str": "10", "bool": true, "name": 3}
569645
},
570646
{
@@ -578,10 +654,6 @@
578654
{
579655
"expression": "min_by(people, &to_number(age_str))",
580656
"result": {"age": 10, "age_str": "10", "bool": true, "name": 3}
581-
},
582-
{
583-
"expression": "min_by(people, &age_str)",
584-
"error": "invalid-type"
585657
}
586658
]
587659
}, {

tests/slice.json

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
[{
2+
"given": {
3+
"foo": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
4+
"bar": {
5+
"baz": 1
6+
}
7+
},
8+
"cases": [
9+
{
10+
"expression": "bar[0:10]",
11+
"result": null
12+
},
13+
{
14+
"expression": "foo[0:10:1]",
15+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
16+
},
17+
{
18+
"expression": "foo[0:10]",
19+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
20+
},
21+
{
22+
"expression": "foo[0:10:]",
23+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
24+
},
25+
{
26+
"expression": "foo[0::1]",
27+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
28+
},
29+
{
30+
"expression": "foo[0::]",
31+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
32+
},
33+
{
34+
"expression": "foo[0:]",
35+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
36+
},
37+
{
38+
"expression": "foo[:10:1]",
39+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
40+
},
41+
{
42+
"expression": "foo[::1]",
43+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
44+
},
45+
{
46+
"expression": "foo[:10:]",
47+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
48+
},
49+
{
50+
"expression": "foo[::]",
51+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
52+
},
53+
{
54+
"expression": "foo[:]",
55+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
56+
},
57+
{
58+
"expression": "foo[1:9]",
59+
"result": [1, 2, 3, 4, 5, 6, 7, 8]
60+
},
61+
{
62+
"expression": "foo[0:10:2]",
63+
"result": [0, 2, 4, 6, 8]
64+
},
65+
{
66+
"expression": "foo[5:]",
67+
"result": [5, 6, 7, 8, 9]
68+
},
69+
{
70+
"expression": "foo[5::2]",
71+
"result": [5, 7, 9]
72+
},
73+
{
74+
"expression": "foo[::2]",
75+
"result": [0, 2, 4, 6, 8]
76+
},
77+
{
78+
"expression": "foo[::-1]",
79+
"result": [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
80+
},
81+
{
82+
"expression": "foo[1::2]",
83+
"result": [1, 3, 5, 7, 9]
84+
},
85+
{
86+
"expression": "foo[10:0:-1]",
87+
"result": [9, 8, 7, 6, 5, 4, 3, 2, 1]
88+
},
89+
{
90+
"expression": "foo[10:5:-1]",
91+
"result": [9, 8, 7, 6]
92+
},
93+
{
94+
"expression": "foo[8:2:-2]",
95+
"result": [8, 6, 4]
96+
},
97+
{
98+
"expression": "foo[0:20]",
99+
"result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
100+
},
101+
{
102+
"expression": "foo[10:-20:-1]",
103+
"result": [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
104+
},
105+
{
106+
"expression": "foo[10:-20]",
107+
"result": []
108+
},
109+
{
110+
"expression": "foo[-4:-1]",
111+
"result": [6, 7, 8]
112+
},
113+
{
114+
"expression": "foo[:-5:-1]",
115+
"result": [9, 8, 7, 6]
116+
},
117+
{
118+
"expression": "foo[8:2:0]",
119+
"error": "invalid-value"
120+
},
121+
{
122+
"expression": "foo[8:2:0:1]",
123+
"error": "syntax"
124+
},
125+
{
126+
"expression": "foo[8:2&]",
127+
"error": "syntax"
128+
}
129+
]
130+
}]

0 commit comments

Comments
 (0)