Skip to content

Commit d0113df

Browse files
committed
Adding jsoniq simple testcase
1 parent 18c43da commit d0113df

2 files changed

Lines changed: 47 additions & 0 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,3 +205,6 @@ cython_debug/
205205
marimo/_static/
206206
marimo/_lsp/
207207
__marimo__/
208+
209+
# Emacs
210+
*~

tests/test_test1.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from jsoniq import RumbleSession
2+
from unittest import TestCase
3+
import json
4+
class TryTesting(TestCase):
5+
def test1(self):
6+
# The syntax to start a session is similar to that of Spark.
7+
# A RumbleSession is a SparkSession that additionally knows about RumbleDB.
8+
# All attributes and methods of SparkSession are also available on RumbleSession.
9+
rumble = RumbleSession.builder.appName("PyRumbleExample").getOrCreate();
10+
# A more complex, standalone query
11+
12+
seq = rumble.jsoniq("""
13+
let $stores :=
14+
[
15+
{ "store number" : 1, "state" : "MA" },
16+
{ "store number" : 2, "state" : "MA" },
17+
{ "store number" : 3, "state" : "CA" },
18+
{ "store number" : 4, "state" : "CA" }
19+
]
20+
let $sales := [
21+
{ "product" : "broiler", "store number" : 1, "quantity" : 20 },
22+
{ "product" : "toaster", "store number" : 2, "quantity" : 100 },
23+
{ "product" : "toaster", "store number" : 2, "quantity" : 50 },
24+
{ "product" : "toaster", "store number" : 3, "quantity" : 50 },
25+
{ "product" : "blender", "store number" : 3, "quantity" : 100 },
26+
{ "product" : "blender", "store number" : 3, "quantity" : 150 },
27+
{ "product" : "socks", "store number" : 1, "quantity" : 500 },
28+
{ "product" : "socks", "store number" : 2, "quantity" : 10 },
29+
{ "product" : "shirt", "store number" : 3, "quantity" : 10 }
30+
]
31+
let $join :=
32+
for $store in $stores[], $sale in $sales[]
33+
where $store."store number" = $sale."store number"
34+
return {
35+
"nb" : $store."store number",
36+
"state" : $store.state,
37+
"sold" : $sale.product
38+
}
39+
return [$join]
40+
""");
41+
42+
expected = [[{'nb': 1, 'state': 'MA', 'sold': 'broiler'}, {'nb': 1, 'state': 'MA', 'sold': 'socks'}, {'nb': 2, 'state': 'MA', 'sold': 'toaster'}, {'nb': 2, 'state': 'MA', 'sold': 'toaster'}, {'nb': 2, 'state': 'MA', 'sold': 'socks'}, {'nb': 3, 'state': 'CA', 'sold': 'toaster'}, {'nb': 3, 'state': 'CA', 'sold': 'blender'}, {'nb': 3, 'state': 'CA', 'sold': 'blender'}, {'nb': 3, 'state': 'CA', 'sold': 'shirt'}]]
43+
44+
self.assertTrue(json.dumps(seq.json()) == json.dumps(expected))

0 commit comments

Comments
 (0)