def test_lambda_query(self):
     #pylint: disable=unnecessary-lambda
     self.assertJson(query.lambda_query(lambda a: a),
                     '{"expr":{"var":"a"},"lambda":"a"}')
     self.assertJson(
         query.lambda_query(lambda a, b: query.add(a, b)),
         '{"expr":{"add":[{"var":"a"},{"var":"b"}]},"lambda":["a","b"]}')
예제 #2
0
  def test_lambda_query(self):
    invalid_lambda = lambda: query.add(1, 2)
    self.assertRaises(ValueError,
                      lambda: self._q(query.map_(query.lambda_query(invalid_lambda), [])))

    expr = query.map_(query.lambda_query(lambda a: query.add(a, 1)),
                      [1, 2, 3])
    self.assertEqual(self._q(expr), [2, 3, 4])
예제 #3
0
  def test_reduce(self):
    data1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    data2 = ["Fauna", "DB", " ", "rocks"]

    q1 = query.reduce(query.lambda_query(lambda accum, value: query.add(query.var("accum"), query.var("value"))), 0, data1)
    q2 = query.reduce(query.lambda_query(lambda accum, value: query.concat([query.var("accum"), query.var("value")])), "", data2)

    self.assertEqual(self._q(q1), 45)
    self.assertEqual(self._q(q2), "FaunaDB rocks")
예제 #4
0
    def test_range(self):
        data = list(range(1, 20))

        self._q(query.create_collection({"name": "range_test"}))
        self._q(
            query.create_index({
                "name": "range_idx",
                "source": query.collection("range_test"),
                "active": True,
                "values": [{
                    "field": ["data", "value"]
                }]
            }))
        self._q(
            query.foreach(
                query.lambda_query(lambda x: query.create(
                    query.collection("range_test"), {"data": {
                        "value": x
                    }})), data))
        m = query.match(query.index("range_idx"))

        q1 = query.select("data", query.paginate(query.range(m, 3, 8)))
        q2 = query.select("data", query.paginate(query.range(m, 17, 18)))
        q3 = query.select("data", query.paginate(query.range(m, 19, 0)))

        self.assertEqual(self._q(q1), [3, 4, 5, 6, 7, 8])
        self.assertEqual(self._q(q2), [17, 18])
        self.assertEqual(self._q(q3), [])
 def test_reduce(self):
     expected = '{"collection":[1,2,3,4,5,6,7,8,9],"initial":0,"reduce":{"expr":{"add":[{"var":"accum"},{"var":"val"}]},"lambda":["accum","val"]}}'
     col = [1, 2, 3, 4, 5, 6, 7, 8, 9]
     lambda_ = query.lambda_query(lambda accum, val: query.add(accum, val))
     initial = 0
     self.assertJson(query.reduce(lambda_, initial, col), expected)
예제 #6
0
 def test_lambda_query_multiple_args(self):
     #pylint: disable=unnecessary-lambda
     expr = query.map_(query.lambda_query(lambda a, b: query.add(a, b)),
                       [[1, 1], [2, 2], [3, 3]])
     self.assertEqual(self._q(expr), [2, 4, 6])