@Test public void testParseCclBetweenWithBothReferences() { Criteria criteria = Criteria.where().key("age") .operator(Operator.BETWEEN).value(30).value(35).build(); String ccl = "where age bw $age $retireAge"; Multimap<String, Object> data = LinkedHashMultimap.create(); data.put("name", "Lebron James"); data.put("age", 30); data.put("retireAge", 35); data.put("team", "Cleveland Cavaliers"); Parser parser = Parsers.create(ccl, data); Assert.assertEquals(Parsing.toPostfixNotation(criteria.getSymbols()), parser.order()); }
@Test public void testParseCclBetweenWithSecondReference() { Criteria criteria = Criteria.where().key("age") .operator(Operator.BETWEEN).value(5).value(30).build(); String ccl = "where age bw 5 $age"; Multimap<String, Object> data = LinkedHashMultimap.create(); data.put("name", "Lebron James"); data.put("age", 30); data.put("team", "Cleveland Cavaliers"); Parser parser = Parsers.create(ccl, data); Assert.assertEquals(Parsing.toPostfixNotation(criteria.getSymbols()), parser.order()); }
@Test public void testParseCclBetweenWithFirstReference() { Criteria criteria = Criteria.where().key("age") .operator(Operator.BETWEEN).value(30).value(100).build(); String ccl = "where age bw $age 100"; Multimap<String, Object> data = LinkedHashMultimap.create(); data.put("name", "Lebron James"); data.put("age", 30); data.put("team", "Cleveland Cavaliers"); Parser parser = Parsers.create(ccl, data); Assert.assertEquals(Parsing.toPostfixNotation(criteria.getSymbols()), parser.order()); }
@Test(expected = TransactionException.class) public void testNoPhantomRead() { client.add("foo", 10, 1); client.stage(); client.find(Criteria.where().key("foo").operator(Operator.BETWEEN) .value(5).value(20)); client2.add("foo", 15, 2); client.find(Criteria.where().key("foo").operator(Operator.BETWEEN) .value(5).value(20)); }
@Test public void testToPostfixNotationSimpleBetween() { Criteria criteria = Criteria.where().key("foo") .operator(Operator.BETWEEN).value("bar").value("baz").build(); Queue<PostfixNotationSymbol> pfn = Parsing .toPostfixNotation(criteria.getSymbols()); Assert.assertEquals(pfn.size(), 1); Assert.assertEquals(((Expression) Iterables.getOnlyElement(pfn)).key(), new KeySymbol("foo")); Assert.assertEquals( ((Expression) Iterables.getOnlyElement(pfn)).values().get(0), new ValueSymbol("bar")); Assert.assertEquals( ((Expression) Iterables.getOnlyElement(pfn)).values().get(1), new ValueSymbol("baz")); Assert.assertEquals( ((Expression) Iterables.getOnlyElement(pfn)).operator(), new OperatorSymbol(Operator.BETWEEN)); }
@Test public void testGroupSingleBetween() { String key = TestData.getString(); Operator operator = Operator.BETWEEN; Object value = TestData.getObject(); Object value1 = TestData.getObject(); Criteria criteria = Criteria.where().key(key).operator(operator) .value(value).value(value1).build(); List<Symbol> symbols = Parsing.groupExpressions(criteria.getSymbols()); Expression exp = (Expression) symbols.get(0); Assert.assertEquals(1, symbols.size()); Assert.assertEquals(exp.raw().key(), key); Assert.assertEquals(exp.raw().operator(), operator); Assert.assertEquals(exp.values().get(0).value(), value); Assert.assertEquals(exp.values().get(1).value(), value1); }
@Test public void testParseCclBetween() { Criteria criteria = Criteria.where().key("foo") .operator(Operator.BETWEEN).value("bar").value("baz").build(); String ccl = "where foo bw bar baz"; String ccl2 = "where foo >< bar baz"; Parser parser = Parsers.create(ccl); Assert.assertEquals(Parsing.toPostfixNotation(criteria.getSymbols()), parser.order()); Parser parser2 = Parsers.create(ccl2); Assert.assertEquals(Parsing.toPostfixNotation(criteria.getSymbols()), parser2.order()); }