-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtypes_test.py
42 lines (34 loc) · 1.26 KB
/
types_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import jsonata
import pytest
class TestTypes:
def test_illegal_types(self):
with pytest.raises(ValueError):
res = jsonata.Jsonata("$").evaluate(set())
def test_legal_types(self):
# map
assert jsonata.Jsonata("a").evaluate({"a": 1}) == 1
# list
assert jsonata.Jsonata("$[0]").evaluate([1, 2]) == 1
# string
assert jsonata.Jsonata("$").evaluate("string") == "string"
# int
assert jsonata.Jsonata("$").evaluate(1) == 1
# boolean
assert jsonata.Jsonata("$").evaluate(True)
# float
assert jsonata.Jsonata("$").evaluate(1.0) == 1.0
def test_ignore(self):
expr = jsonata.Jsonata("a")
a_set = {1}
# set causes exception
with pytest.raises(ValueError):
expr.evaluate({"a": a_set})
# turn off validation, Date is "passed" via $
expr.set_validate_input(False)
assert expr.evaluate({"a": a_set}) == a_set
# change expression to a computation that involves a, we get an error again because concat
# cannot deal with Date
expr2 = jsonata.Jsonata("a & a")
expr2.set_validate_input(False)
with pytest.raises(TypeError):
expr2.evaluate({"a": a_set})