@Override public void run() { box.put(new TestEntity()); counts[0] = box.count(); try { store.callInTx(new Callable<Void>() { @Override public Void call() { store.runInTx(new Runnable() { @Override public void run() { box.put(new TestEntity()); counts[1] = box.count(); } }); box.put(new TestEntity()); counts[2] = box.count(); return null; } }); } catch (Exception e) { throw new RuntimeException(e); } } });
@Override public void run() { box.put(new TestEntity()); counts[0] = box.count(); box.put(new TestEntity()); counts[1] = box.count(); } });
@Override public void run() { getTestEntityBox().put(new TestEntity()); } });
@Override public Long call() throws Exception { TestEntity entity = new TestEntity(); entity.setId(-1); getTestEntityBox().put(entity); return null; } };
private TestEntity putEntity(Cursor<TestEntity> cursor, String text, int number) { TestEntity entity = new TestEntity(); entity.setSimpleString(text); entity.setSimpleInt(number); cursor.put(entity); return entity; }
@Test public void testPutManyAndGetAll() { List<TestEntity> entities = new ArrayList<>(); for (int i = 0; i < 10; i++) { TestEntity entity = new TestEntity(); entity.setSimpleInt(2000 + i); entities.add(entity); } box.put(entities); assertEquals(entities.size(), box.count()); List<TestEntity> entitiesRead = box.getAll(); assertEquals(entities.size(), entitiesRead.size()); for (int i = 0; i < entities.size(); i++) { assertEquals(2000 + i, entitiesRead.get(i).getSimpleInt()); } }
@Override public Long call() throws Exception { assertNotSame(mainTestThread, Thread.currentThread()); for (int i = 0; i < countEntities; i++) { TestEntity entity = new TestEntity(); final int value = number.incrementAndGet(); entity.setSimpleInt(value); long key = box.put(entity); TestEntity read = box.get(key); assertEquals(value, read.getSimpleInt()); } return box.count(); } };
@Test public void testSumDoubleOfFloats() { TestEntity entity = new TestEntity(); entity.setSimpleFloat(0); TestEntity entity2 = new TestEntity(); entity2.setSimpleFloat(-2.05f); box.put(entity, entity2); double sum = box.query().build().property(simpleFloat).sumDouble(); assertEquals(-2.05, sum, 0.0001); }
@Test public void testRemoveMany() { List<TestEntity> entities = new ArrayList<>(); for (int i = 0; i < 10; i++) { TestEntity entity = new TestEntity(); entity.setSimpleInt(2000 + i); entities.add(entity); } box.put(entities); assertEquals(entities.size(), box.count()); box.remove(entities.get(1)); assertEquals(entities.size() - 1, box.count()); box.remove(entities.get(4), entities.get(5)); assertEquals(entities.size() - 3, box.count()); List<TestEntity> entitiesRemove = new ArrayList<>(); entitiesRemove.add(entities.get(2)); entitiesRemove.add(entities.get(8)); entitiesRemove.add(entities.get(7)); box.remove(entitiesRemove); assertEquals(entities.size() - 6, box.count()); List<TestEntity> entitiesRead = box.getAll(); assertEquals(entities.size() - 6, entitiesRead.size()); assertEquals(2000, entitiesRead.get(0).getSimpleInt()); assertEquals(2003, entitiesRead.get(1).getSimpleInt()); assertEquals(2006, entitiesRead.get(2).getSimpleInt()); assertEquals(2009, entitiesRead.get(3).getSimpleInt()); box.removeAll(); assertEquals(0, box.count()); }
@Test public void testForEach() { List<TestEntity> testEntities = putTestEntitiesStrings(); final StringBuilder stringBuilder = new StringBuilder(); box.query().startsWith(simpleString, "banana").build() .forEach(new QueryConsumer<TestEntity>() { @Override public void accept(TestEntity data) { stringBuilder.append(data.getSimpleString()).append('#'); } }); assertEquals("banana#banana milk shake#", stringBuilder.toString()); // Verify that box does not hang on to the read-only TX by doing a put box.put(new TestEntity()); assertEquals(testEntities.size() + 1, box.count()); }
@Test public void testRunInTx_PutAfterRemoveAll() { final Box<TestEntity> box = getTestEntityBox(); final long[] counts = {0}; box.put(new TestEntity()); store.runInTx(new Runnable() { @Override public void run() { putTestEntities(2); box.removeAll(); putTestEntity("hello", 3); counts[0] = box.count(); } }); assertEquals(1, counts[0]); }
protected TestEntity createTestEntity(@Nullable String simpleString, int nr) { TestEntity entity = new TestEntity(); entity.setSimpleString(simpleString); entity.setSimpleInt(nr); entity.setSimpleByte((byte) (10 + nr)); entity.setSimpleBoolean(nr % 2 == 0); entity.setSimpleShort((short) (100 + nr)); entity.setSimpleLong(1000 + nr); entity.setSimpleFloat(200 + nr / 10f); entity.setSimpleDouble(2000 + nr / 100f); entity.setSimpleByteArray(new byte[]{1, 2, (byte) nr}); return entity; }
@Test public void testRunInReadTxAndThenPut() { final Box<TestEntity> box = getTestEntityBox(); store.runInReadTx(new Runnable() { @Override public void run() { box.count(); } }); // Verify that box does not hang on to the read-only TX by doing a put box.put(new TestEntity()); assertEquals(1, box.count()); }
@Test(expected = IllegalArgumentException.class) public void testPutEntityWithInvalidId() { TestEntity entity = new TestEntity(); entity.setId(777); Transaction transaction = store.beginTx(); Cursor<TestEntity> cursor = transaction.createCursor(TestEntity.class); try { cursor.put(entity); } finally { cursor.close(); transaction.close(); } }
@Test public void testCallInReadTx() { final Box<TestEntity> box = getTestEntityBox(); box.put(new TestEntity()); long[] counts = store.callInReadTx(new Callable<long[]>() { @Override public long[] call() throws Exception { long count1 = store.callInReadTx(new Callable<Long>() { @Override public Long call() throws Exception { return box.count(); } }); return new long[]{box.count(), count1}; } }); assertEquals(1, counts[0]); assertEquals(1, counts[1]); }
@Test public void testRunInReadTx() { final Box<TestEntity> box = getTestEntityBox(); final long[] counts = {0, 0}; box.put(new TestEntity()); store.runInReadTx(new Runnable() { @Override public void run() { counts[0] = box.count(); store.runInReadTx(new Runnable() { @Override public void run() { counts[1] = box.count(); } }); } }); assertEquals(1, counts[0]); assertEquals(1, counts[1]); }
@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 testPutAndGetEntity() { TestEntity entity = new TestEntity(); entity.setSimpleInt(1977); Transaction transaction = store.beginTx(); Cursor<TestEntity> cursor = transaction.createCursor(TestEntity.class); long key = cursor.put(entity); TestEntity entityRead = cursor.get(key); assertNotNull(entityRead); assertEquals(1977, entityRead.getSimpleInt()); cursor.close(); transaction.abort(); }
@Test public void testPutSameIndexValue() { TestEntity entity = new TestEntity(); String value = "lulu321"; entity.setSimpleString(value); Transaction transaction = store.beginTx(); TestEntity read; try { Cursor<TestEntity> cursor = transaction.createCursor(TestEntity.class); long key = cursor.put(entity); // And again entity.setSimpleInt(1977); cursor.put(entity); assertEquals(key, cursor.lookupKeyUsingIndex(9, value)); read = cursor.get(key); cursor.close(); } finally { transaction.close(); } assertEquals(1977, read.getSimpleInt()); assertEquals(value, read.getSimpleString()); }
@Test public void testPutAndGet() { TestEntity entity = new TestEntity(); entity.setSimpleInt(1977); entity.setSimpleBoolean(true); entity.setSimpleByte((byte) 42); byte[] bytes = {77, 78}; entity.setSimpleByteArray(bytes); entity.setSimpleDouble(3.141); entity.setSimpleFloat(3.14f); entity.setSimpleLong(789437444354L); entity.setSimpleShort((short) 233); entity.setSimpleString("foo"); long key = box.put(entity); TestEntity entityRead = box.get(key); assertNotNull(entityRead); assertTrue(entityRead.noArgsConstructorCalled); assertEquals(1977, entityRead.getSimpleInt()); assertTrue(entityRead.getSimpleBoolean()); assertEquals(42, entityRead.getSimpleByte()); assertEquals(233, entityRead.getSimpleShort()); assertEquals(789437444354L, entityRead.getSimpleLong()); assertEquals(3.14f, entityRead.getSimpleFloat(), 0.000001f); assertEquals(3.141f, entityRead.getSimpleDouble(), 0.000001); assertTrue(Arrays.equals(bytes, entityRead.getSimpleByteArray())); assertEquals("foo", entityRead.getSimpleString()); }