@Test public void testGetIds() { List<TestEntity> entities = putTestEntities(5); List<Long> ids = new ArrayList<>(); ids.add(entities.get(1).getId()); ids.add(entities.get(3).getId()); List<TestEntity> readEntities = box.get(ids); assertEquals(2, readEntities.size()); assertEquals((long) ids.get(0), readEntities.get(0).getId()); assertEquals((long) ids.get(1), readEntities.get(1).getId()); Map<Long, TestEntity> map = box.getMap(ids); assertEquals(2, map.size()); assertEquals((long) ids.get(0), map.get(ids.get(0)).getId()); assertEquals((long) ids.get(1), map.get(ids.get(1)).getId()); }
@Test public void testScalarEqual() { putTestEntitiesScalars(); Query<TestEntity> query = box.query().equal(simpleInt, 2007).build(); assertEquals(1, query.count()); assertEquals(8, query.findFirst().getId()); assertEquals(8, query.findUnique().getId()); List<TestEntity> all = query.find(); assertEquals(1, all.size()); assertEquals(8, all.get(0).getId()); }
protected TestEntity putTestEntity(@Nullable String simpleString, int nr) { TestEntity entity = createTestEntity(simpleString, nr); long key = getTestEntityBox().put(entity); assertTrue(key != 0); assertEquals(key, entity.getId()); return entity; }
private void runTest(TestEntity entity1, TestEntity entity2) { Transaction transaction = store.beginReadTx(); DebugCursor debugCursor = DebugCursor.create(transaction); // seek to first entity ByteBuffer bytes = ByteBuffer.allocate(8); int partitionPrefix = (6 << 26) | (1 << 2); bytes.putInt(partitionPrefix).putInt(0); byte[] entity1Key = debugCursor.seekOrNext(bytes.array()); System.out.println(Arrays.toString(entity1Key)); Assert.assertNotNull(entity1Key); assertEquals(8, entity1Key.length); // check key 1 bytes.rewind(); bytes.put(entity1Key); bytes.flip(); assertEquals(partitionPrefix, bytes.getInt()); assertEquals((int) entity1.getId(), bytes.getInt()); // get value 1 byte[] value1 = debugCursor.get(entity1Key); Assert.assertNotNull(value1); Assert.assertTrue(value1.length > 40); // get value 2 bytes.rewind(); bytes.putInt(partitionPrefix).putInt((int) entity2.getId()); byte[] value2 = debugCursor.get(bytes.array()); Assert.assertNotNull(value2); Assert.assertTrue(value2.length > 40); debugCursor.close(); transaction.abort(); }
@Test public void testSetParameter2Floats() { putTestEntitiesScalars(); Query<TestEntity> query = box.query().between(simpleFloat, 400.15, 400.75).parameterAlias("foo").build(); assertEquals(6, query.count()); query.setParameters(simpleFloat, 400.65, 400.85); List<TestEntity> entities = query.find(); assertEquals(2, entities.size()); assertEquals(8, entities.get(0).getId()); assertEquals(9, entities.get(1).getId()); query.setParameters("foo", 400.45, 400.55); assertEquals(6, query.findUnique().getId()); }
@Test public void testSetParameter2Ints() { putTestEntitiesScalars(); Query<TestEntity> query = box.query().between(simpleInt, 2005, 2008).parameterAlias("foo").build(); assertEquals(4, query.count()); query.setParameters(simpleInt, 2002, 2003); List<TestEntity> entities = query.find(); assertEquals(2, entities.size()); assertEquals(3, entities.get(0).getId()); assertEquals(4, entities.get(1).getId()); query.setParameters("foo", 2007, 2007); assertEquals(8, query.findUnique().getId()); }
@Test public void testSetParameterInt() { String versionNative = BoxStore.getVersionNative(); String minVersion = "1.5.1-2018-06-21"; String versionStart = versionNative.substring(0, minVersion.length()); assertTrue(versionStart, versionStart.compareTo(minVersion) >= 0); putTestEntitiesScalars(); Query<TestEntity> query = box.query().equal(simpleInt, 2007).parameterAlias("foo").build(); assertEquals(8, query.findUnique().getId()); query.setParameter(simpleInt, 2004); assertEquals(5, query.findUnique().getId()); query.setParameter("foo", 2002); assertEquals(3, query.findUnique().getId()); }
@Test public void testGetAllAfterGetAndRemove() { assertEquals(0, box.count()); assertEquals(0, box.getAll().size()); System.out.println("PUT"); List<TestEntity> entities = putTestEntities(10); // explicitly get an entity (any will do) System.out.println("GET"); TestEntity entity = box.get(entities.get(1).getId()); assertNotNull(entity); System.out.println("REMOVE_ALL"); box.removeAll(); System.out.println("COUNT"); assertEquals(0, box.count()); System.out.println("GET_ALL"); List<TestEntity> all = box.getAll(); // note only 1 entity is returned by getAll, it is the one we explicitly get (last) above assertEquals(0, all.size()); }
@Test public void testSetParameterString() { putTestEntitiesStrings(); Query<TestEntity> query = box.query().equal(simpleString, "banana").parameterAlias("foo").build(); assertEquals(1, query.findUnique().getId()); query.setParameter(simpleString, "bar"); assertEquals(3, query.findUnique().getId()); assertNull(query.setParameter(simpleString, "not here!").findUnique()); query.setParameter("foo", "apple"); assertEquals(2, query.findUnique().getId()); }
@Test public void testBooleanEqual() { putTestEntitiesScalars(); Query<TestEntity> query = box.query().equal(simpleBoolean, true).build(); assertEquals(5, query.count()); assertEquals(1, query.findFirst().getId()); query.setParameter(simpleBoolean, false); assertEquals(5, query.count()); assertEquals(2, query.findFirst().getId()); }
@Test public void testUncached() { putTestEntities(1); LazyList<TestEntity> listLazy = getTestEntityBox().query().build().findLazy(); assertFalse(listLazy.isEmpty()); TestEntity entity1 = listLazy.get(0); TestEntity entity2 = listLazy.get(0); assertEquals(entity1.getId(), entity2.getId()); try { listLazy.loadRemaining(); fail("Not empty"); } catch (DbException expected) { // Expected, OK } }
@Test public void testString() { List<TestEntity> entities = putTestEntitiesStrings(); int count = entities.size(); assertEquals(1, box.query().equal(simpleString, "banana").build().findUnique().getId()); assertEquals(count - 1, box.query().notEqual(simpleString, "banana").build().count()); assertEquals(4, box.query().startsWith(simpleString, "ba").endsWith(simpleString, "shake").build().findUnique() .getId()); assertEquals(2, box.query().contains(simpleString, "nana").build().count()); }
@Test public void testPutAndGet() { TestEntity entity = new TestEntity(); entity.setSimpleInt(1977); long key = box.put(entity); assertTrue(key != 0); assertEquals(key, entity.getId()); TestEntity entityRead = box.get(key); assertNotNull(entityRead); assertEquals(1977, entityRead.getSimpleInt()); }
@Test public void testPutAndGetTwoEntities() { store.close(); store.deleteAllFiles(); store = createBoxStoreBuilderWithTwoEntities(false).build(); box = store.boxFor(TestEntity.class); long key = putTestEntity(null, 1977).getId(); TestEntity entityRead = box.get(key); assertEquals(1977, entityRead.getSimpleInt()); Box<TestEntityMinimal> box2 = store.boxFor(TestEntityMinimal.class); TestEntityMinimal entity2 = new TestEntityMinimal(); entity2.setText("foo"); long key2 = box2.put(entity2); TestEntityMinimal entity2Read = box2.get(key2); assertEquals("foo", entity2Read.getText()); }