Example #1
0
 def test_limit(self):
     self.assertMapEqual(test_execute("(limit 3 (6 5 4 3 2 1))"),
                         [{
                             'None': dictify([6, 5, 4])
                         }])
     self.assertMapEqual(test_execute("(limit 3 2 (6 5 4 3 2 1))"),
                         [{
                             'None': dictify([4, 3, 2])
                         }])
Example #2
0
 def test_apply(self):
     self.maxDiff = None
     with open("test_data_1.txt") as f:
         expected = ast.literal_eval(f.read())
     self.assertEqual(list(test_execute("(apply (assoc 100) (3 2 1))")),
                      expected)
     with open("test_data_2.txt") as f:
         expected_2hop = ast.literal_eval(f.read())
     self.assertEqual(
         list(
             test_execute(
                 "(apply (assoc 200) (apply (assoc 100) (3 2 1)))")),
         expected_2hop)
Example #3
0
 def test_obj_query(self):
     expected = """
     [
         {
             "None": [
                 {
                     ":id": 3,
                     "age": 16,
                     "name": "id3"
                 },
                 {
                     ":id": 2,
                     "age": 17,
                     "name": "id2"
                 },
                 {
                     ":id": 1,
                     "age": 17,
                     "name": "id1"
                 }
             ]
         }
     ]
     """
     self.assertMapEqual(test_execute("(->> (3 2 1) (obj))"), expected)
Example #4
0
 def test_project(self):
     data = self.stringify_json([{'None': [{"a": 1, "b": 2, "c": 3}]}])
     self.assertEqual(
         list(test_execute("(project (a b) (json_literal %s))" % data)), [{
             'None': [{
                 "a": 1,
                 "b": 2
             }]
         }])
Example #5
0
 def test_aggregate(self):
     data = self.stringify_json([{
         "a": ldictify([1, 2, 3]),
         "b": ldictify([4, 5, 6])
     }])
     m = test_execute("(aggregate (json_literal %s))" % data)
     m = execute.materialize_walk(m)
     m = tuple(m[0].values())[0]
     self.assertEqual(set(m), set(ldictify([1, 2, 3, 4, 5, 6])))
Example #6
0
 def test_merge(self):
     data1 = self.stringify_json([{"a": [1], "b": [2]}])
     data2 = self.stringify_json([{"a": [3, 4], "b": [5, 6]}])
     self.assertEqual(
         list(
             test_execute("(merge (json_literal %s) (json_literal %s))" %
                          (data1, data2))), [{
                              "a": [1, 3, 4],
                              "b": [2, 5, 6]
                          }])
Example #7
0
 def test_nest(self):
     data = self.stringify_json([{"a": 1, "b": 2, "c": 3}])
     self.assertEqual(
         list(test_execute("(nest foo (json_literal %s))" % data)), [{
             "foo": {
                 "a": 1,
                 "b": 2,
                 "c": 3
             }
         }])
Example #8
0
 def test_let(self):
     data = self.stringify_json([{"a": 1, "b": 2, "c": 3}])
     self.assertEqual(
         list(test_execute("(let ((d a) (e c)) (json_literal %s))" % data)),
         [{
             "a": 1,
             "b": 2,
             "c": 3,
             "d": 1,
             "e": 3
         }])
Example #9
0
 def test_filter(self):
     self.assertMapEqual(test_execute("(filter (< :id 3) (6 5 4 3 2 1))"),
                         [{
                             'None': ldictify([2, 1])
                         }])
     self.assertMapEqual(
         test_execute("(filter (inset :id (3, 1)) (6 5 4 3 2 1))"),
         [{
             'None': ldictify([3, 1])
         }])
     data = self.stringify_json([{
         'None': [{
             "a": "foo1"
         }, {
             "a": "2foo"
         }, {
             "a": "bar"
         }]
     }])
     self.assertMapEqual(
         test_execute("(filter (contains a foo) (json_literal %s))" % data),
         [{
             'None': [{
                 "a": "foo1"
             }, {
                 "a": "2foo"
             }]
         }])
     self.assertMapEqual(
         test_execute("(filter (prefix a foo) (json_literal %s))" % data),
         [{
             'None': [{
                 "a": "foo1"
             }]
         }])
     self.assertMapEqual(
         test_execute("(filter (range :id (5 2)) (6 5 4 3 2 1))"),
         [{
             'None': ldictify([4, 3, 2])
         }])
Example #10
0
 def test_groupby(self):
     data = [{
         'None': [{
             "a": 1,
             "b": 2,
             "c": 3
         }, {
             "a": 4,
             "b": 2,
             "c": 2
         }, {
             "a": 4,
             "b": 1,
             "c": 6
         }, {
             "a": 7,
             "b": 2,
             "c": 5
         }]
     }]
     expected = [{
         'None': [[{
             "a": 1
         }, [{
             "a": 1,
             "b": 2,
             "c": 3
         }]],
                  [{
                      "a": 4
                  }, [{
                      "a": 4,
                      "b": 2,
                      "c": 2
                  }, {
                      "a": 4,
                      "b": 1,
                      "c": 6
                  }]], [{
                      "a": 7
                  }, [{
                      "a": 7,
                      "b": 2,
                      "c": 5
                  }]]]
     }]
     data = self.stringify_json(data)
     it = test_execute("(groupby (a) (json_literal %s))" % data)
     actual = execute.materialize_walk(it)
     self.assertEqual(actual, expected)
Example #11
0
 def test_orderby(self):
     data = [{
         'None': [{
             "a": 1,
             "b": 2,
             "c": 3
         }, {
             "a": 4,
             "b": 2,
             "c": 2
         }, {
             "a": 4,
             "b": 1,
             "c": 6
         }, {
             "a": 7,
             "b": 2,
             "c": 5
         }]
     }]
     expected = [{
         'None': [{
             "a": 7,
             "b": 2,
             "c": 5
         }, {
             "a": 4,
             "b": 1,
             "c": 6
         }, {
             "a": 4,
             "b": 2,
             "c": 2
         }, {
             "a": 1,
             "b": 2,
             "c": 3
         }]
     }]
     data = self.stringify_json(data)
     self.assertEqual(
         list(test_execute("(orderby (a c) (json_literal %s))" % data)),
         expected)
Example #12
0
 def test_obj_query_with_ops(self):
     expected = """
     [
         {
             "None": [
                 {
                     ":id": 3,
                     "age": 16,
                     "name": "id3"
                 },
                 {
                     ":id": 2,
                     "age": 18,
                     "name": "id2"
                 }
             ]
         }
     ]
     """
     self.assertMapEqual(test_execute("(->> (3 2 1) (obj) (limit 2))"),
                         expected)
Example #13
0
 def test_difference(self):
     self.assertEqual(
         list(test_execute("(difference (6 5 4 3 2 1) (6 3 1))")),
         ldictify([2, 4, 5]))
Example #14
0
 def test_or(self):
     self.assertEqual(list(test_execute("(or (6 5 4 3 2 1) (10 6 3 1))")),
                      ldictify([10, 6, 5, 4, 3, 2, 1]))
Example #15
0
 def test_and(self):
     self.assertEqual(list(test_execute("(and (6 5 4 3 2 1) (6 3 1))")),
                      ldictify([6, 3, 1]))
Example #16
0
 def test_count(self):
     self.assertEqual(list(test_execute("(count (6 5 4 3 2 1))")), [{
         'None': {
             "count": 6
         }
     }])
Example #17
0
 def test_reverse(self):
     self.assertMapEqual(test_execute("(reverse (6 5 4 3 2 1))"),
                         [{
                             'None': dictify([1, 2, 3, 4, 5, 6])
                         }])
Example #18
0
 def test_exists(self):
     self.assertEqual(list(test_execute("(exists (and (3 2 1) (6 5 4)))")),
                      [])
     self.assertEqual(list(test_execute("(exists (and (3 2 1) (5 4 3)))")),
                      [None])