@Test public void testRecordRetrievalMatchingId() { Set<Long> set = Sets.newHashSet(); set.add(new Long(35)); Assert.assertEquals(set, client.find(Criteria.where() .key(Constants.JSON_RESERVED_IDENTIFIER_NAME) .operator(Operator.EQUALS).value(35).build())); }
/** * Add the specified {@code operator} to the {@link Criteria} that is * building. * * @param operator * @return the builder */ public OperatorState operator(Operator operator) { criteria.add(new OperatorSymbol(operator)); return new OperatorState(criteria); }
@Test public void testRecordRetrievalNonExistingId() { Set<Long> set = Sets.newHashSet(); set.add(new Long(55)); Assert.assertEquals(set, client.find(Criteria.where() .key(Constants.JSON_RESERVED_IDENTIFIER_NAME) .operator(Operator.EQUALS).value(55).build())); }
@Test public void testRecordRetrievaIWithIdOrOperator() { Set<Long> set = Sets.newHashSet(); set.add(new Long(35)); set.add(new Long(40)); Assert.assertEquals(set, client.find(Criteria.where() .key(Constants.JSON_RESERVED_IDENTIFIER_NAME) .operator(Operator.EQUALS).value(35).or().key("name") .operator(Operator.EQUALS).value("foo40").build())); set = Sets.newHashSet(); Assert.assertEquals(set, client.find(Criteria.where() .key(Constants.JSON_RESERVED_IDENTIFIER_NAME) .operator(Operator.EQUALS).value(55).and().key("name") .operator(Operator.EQUALS).value("foo46").build())); }
@Test public void testParseCclLocalReferences() { Criteria criteria = Criteria.where().key("name") .operator(Operator.EQUALS).value("Lebron James").build(); String ccl = "name = $name"; 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 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 testSimpleOrAnd() { Assert.assertTrue(hasSameResults(Criteria.where().key("graduation_rate") .operator(Operator.GREATER_THAN).value(90).or() .key("percent_undergrad_black") .operator(Operator.GREATER_THAN_OR_EQUALS).value(5).and() .key("total_cost_out_state").operator(Operator.GREATER_THAN) .value(50000).build())); }
@Test public void testRecordRetrievaIWithIdAndOperator() { Set<Long> set = Sets.newHashSet(); set.add(new Long(35)); Assert.assertEquals(set, client.find(Criteria.where() .key(Constants.JSON_RESERVED_IDENTIFIER_NAME) .operator(Operator.EQUALS).value(35).and().key("name") .operator(Operator.EQUALS).value("foo35").build())); set = Sets.newHashSet(); Assert.assertEquals(set, client.find(Criteria.where() .key(Constants.JSON_RESERVED_IDENTIFIER_NAME) .operator(Operator.EQUALS).value(55).and().key("name") .operator(Operator.EQUALS).value("foo35").build())); }
@Test public void testSimpleAndOr() { Assert.assertTrue(hasSameResults(Criteria.where().key("graduation_rate") .operator(Operator.GREATER_THAN).value(90).and() .key("percent_undergrad_black") .operator(Operator.GREATER_THAN_OR_EQUALS).value(5).or() .key("total_cost_out_state").operator(Operator.GREATER_THAN) .value(50000).build())); }
@Test public void testRecordRetrievalNotMatchingId() { Set<Long> set = Sets.newHashSet(); for (long i = 30; i <= 50; i++) { if(i != 35) { set.add(i); } } Assert.assertEquals(set, client.find(Criteria.where() .key(Constants.JSON_RESERVED_IDENTIFIER_NAME) .operator(Operator.NOT_EQUALS).value(35).build())); }
@Test public void testNavigateKeyCriteria() { String direction = "friends.name"; Map<Long, Set<String>> expected = setupNavigateKeyCriteria(client); expected.put(3L, Sets.newHashSet("hello")); Map<Long, Set<String>> actual = client.navigate(direction, Criteria.where().key("age").operator(Operator.LESS_THAN) .value(30).build()); Assert.assertEquals(expected, actual); }
@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 = DuplicateEntryException.class) public void testFindOrInsertCriteriaDuplicateEntry() { String key = "foo"; int value = 10; String json = toJsonString(getInsertData(key, value)); Set<Long> records = Sets.newHashSet(); while (records.size() < 2) { records.add(TestData.getLong()); } client.insert(json, records); client.findOrInsert( Criteria.where().key(key).operator(Operator.EQUALS).value(10), json); }