Esempio n. 1
0
 def test_equality_behavior(self):
     i = loads('{"five": 5}')
     f = loads('{"five": 5.0}')
     assert i == f  # comparisons succeed between Traversable objects
     assert i.five == f.five
     assert i != {"five": 5}  # comparisons always return False otherwise
     assert i.five != 5
     assert i() == {"five": 5}
     assert i.five() == 5  # once the value is out, comparison succeeds
Esempio n. 2
0
 def test_default(self):
     j = loads(self.json1)
     assert j.key_1.key_2.r(None) is None
     assert j.key_2.nonexistent[0].r("default") == "default"
     assert j.key_2.key_21[7].r("default") == "default"
     with pytest.raises(IndexError):
         j.key_2.key_24.key_244.key_2442[0].r("default")[7]
Esempio n. 3
0
 def test_numeric_resolution(self):
     j = loads(self.json1)
     assert +j.key_2.key_24.key_241 == 502
     assert +j.key_2.key_24.key_242[1][0] == 7
     assert +j.key_1 != +j.key_1  # inequality to oneself is the NaN test
     assert +j.nonexistent != +j.nonexistent
     assert +j.numeric_string != +j.numeric_string
Esempio n. 4
0
 def test_default(self):
     j = loads(self.json1)
     assert j.key_1.key_2.r(None) is None
     assert j.key_2.nonexistent[0].r("default") == "default"
     assert j.key_2.key_21[7].r("default") == "default"
     with pytest.raises(IndexError):
         j.key_2.key_24.key_244.key_2442[0].r("default")[7]
Esempio n. 5
0
 def test_contains(self):
     j = loads(self.json1)
     assert "key_1" in j
     assert "v" not in j.key_1  # do not pass 'in' operator to strings
     assert "v" in j.key_1.r()
     assert "key_22" in j.key_2
     assert "l1" in j.key_2.key_22  # do pass 'in' operator to lists
     assert "nonexistent" not in j
Esempio n. 6
0
 def test_deleting(self):
     j = loads(self.json1)
     assert "r" in j
     del j.r
     assert "r" not in j
     assert j.list() == [1, 1, 2, 3, 5, 8]
     del j.list[1:-1]
     assert j.list() == [1, 8]
Esempio n. 7
0
 def test_resolution(self):
     j = loads(self.json1)
     assert j.key_2.key_21[0].r() == [2100, 2101]
     assert j.key_2.key_21[0].r() == [2100, 2101]
     assert j.key_2.key_24.key_244.key_2442[0].r()[0] == "l"
     assert j.key_2.key_21[0]() == [2100, 2101]
     assert j.key_2.key_21[0]() == [2100, 2101]
     assert j.key_2.key_24.key_244.key_2442[0]()[0] == "l"
Esempio n. 8
0
 def test_access(self):
     j = loads(self.json1)
     assert j.key_1() == "value_1"
     assert j["r"]() == "yo"
     assert j.key_2.key_21[1][1]() == 2111
     assert j.key_1.r() == "value_1"
     assert j["r"].r() == "yo"
     assert j.key_2.key_21[1][1].r() == 2111
Esempio n. 9
0
 def test_setting(self):
     j = loads(self.json1)
     assert "nonexistent" not in j
     j.nonexistent = 5
     assert j.nonexistent() == 5
     del j.nonexistent
     assert "nonexistent" not in j
     j.list = [5]
     assert j.list[0]() == 5
     j.list[0] = "six"
     assert j.list[0]() == "six"
Esempio n. 10
0
 def test_exception(self):
     j = loads(self.json1)
     with pytest.raises(JSaneException):
         j.key_2.nonexistent[0].r()
     with pytest.raises(JSaneException):
         j.key_2.key_21[7].r()
     with pytest.raises(JSaneException):
         j.key_1.key_2.r()
     with pytest.raises(IndexError):
         j.key_2.key_24.key_244.key_2442[0].r()[7]
     with pytest.raises(JSaneException):
         j.key_2.key_24.key_244.key_2442[0][7].r()
Esempio n. 11
0
 def test_exception(self):
     j = loads(self.json1)
     with pytest.raises(JSaneException):
         j.key_2.nonexistent[0].r()
     with pytest.raises(JSaneException):
         j.key_2.key_21[7].r()
     with pytest.raises(JSaneException):
         j.key_1.key_2.r()
     with pytest.raises(IndexError):
         j.key_2.key_24.key_244.key_2442[0].r()[7]
     with pytest.raises(JSaneException):
         j.key_2.key_24.key_244.key_2442[0][7].r()
Esempio n. 12
0
 def test_easy_casting(self):
     j = loads(self.json1)
     assert str(j.key_2.key_21[0]) == "[2100, 2101]"
     assert str(j.numeric_string) == "115"
     assert int(j.numeric_string) == 115
     assert float(j.numeric_string) == 115.0
     assert type(float(j.numeric_string)) is float
     assert float(j.key_2.key_24.key_241) == 502
     assert type(float(j.key_2.key_24.key_241)) is float
     with pytest.raises(ValueError):
         int(j.key_1)
     with pytest.raises(ValueError):
         float(j.key_1)
Esempio n. 13
0
 def test_dir(self):
     j = loads(self.json1)
     assert "numeric_string" in dir(j)
     assert "key_22" in dir(j.key_2)
     with pytest.raises(JSaneException):
         dir(j.nonexistent)
Esempio n. 14
0
 def test_access(self):
     j = loads(self.json1)
     assert j.key_1.r() == "value_1"
     assert j["r"].r() == "yo"
     assert j.key_2.key_21[1][1].r() == 2111
Esempio n. 15
0
 def test_wrapper(self):
     assert loads(dumps(self.dict1)).r() == self.dict1
     assert json.dumps(self.dict1) == dumps(self.dict1)
     assert self.dict1["foo"] == from_dict(self.dict1).foo.r()
     assert loads(dumps(self.dict1)), Traversable(self.dict1)
Esempio n. 16
0
import jsane

if __name__ == "__main__":
    # jsane是一个json解析器
    # loads 解析一个json字符串
    j = jsane.loads('{"name": "wulj", "value": "pass"}')
    print(j.name.r())
    # from_dict 解析字典
    j2 = jsane.from_dict(
        {'key': ['v1', 'v2', ['v3', 'v4', {
            'inner': 'value'
        }]]})
    print(j2.key[2][2].inner.r())
    # 当解析找不到key时,设置默认值
    print(j2.key.new.r(default="test"))
Esempio n. 17
0
 def test_wrapper(self):
     assert loads(dumps(self.dict1)).r() == self.dict1
     assert json.dumps(self.dict1) == dumps(self.dict1)
     assert self.dict1["foo"] == from_dict(self.dict1).foo.r()
     assert loads(dumps(self.dict1)), Traversable(self.dict1)
Esempio n. 18
0
 def test_wrapper(self):
     assert loads(dumps(self.dict1)).r() == self.dict1
     assert json.dumps(self.dict1) == dumps(self.dict1)
     assert loads(dumps(self.dict1)), Traversable(self.dict1)
Esempio n. 19
0
 def test_resolution(self):
     j = loads(self.json1)
     assert j.key_2.key_21[0].r() == [2100, 2101]
     assert j.key_2.key_21[0].r() == [2100, 2101]
     assert j.key_2.key_24.key_244.key_2442[0].r()[0] == "l"
Esempio n. 20
0
 def test_wrapper(self):
     assert loads(dumps(self.dict1)).r() == self.dict1
     assert json.dumps(self.dict1) == dumps(self.dict1)
     assert loads(dumps(self.dict1)), Traversable(self.dict1)