From 29e3e2b71ba9ac4b43c5b7d40da8a3dc8c6f365c Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Mon, 17 Mar 2008 01:33:36 +0000 Subject: Added test for merge sort with LOBs. --- .../carbonado/cursor/TestMergeSortBuffer.java | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/test') diff --git a/src/test/java/com/amazon/carbonado/cursor/TestMergeSortBuffer.java b/src/test/java/com/amazon/carbonado/cursor/TestMergeSortBuffer.java index 7554e8a..59119ec 100644 --- a/src/test/java/com/amazon/carbonado/cursor/TestMergeSortBuffer.java +++ b/src/test/java/com/amazon/carbonado/cursor/TestMergeSortBuffer.java @@ -29,6 +29,7 @@ import org.cojen.util.BeanComparator; import com.amazon.carbonado.*; import com.amazon.carbonado.stored.*; +import com.amazon.carbonado.lob.ByteArrayBlob; /** * Test case for {@link MergeSortBuffer}. @@ -120,6 +121,36 @@ public class TestMergeSortBuffer extends TestCase { testBuffer(HUGE_BUFFER_SIZE); } + public void testLobs() throws Exception { + Comparator c = BeanComparator.forClass(StorableWithLobs.class) + .orderBy("-id"); + + Storage storage = mRepository.storageFor(StorableWithLobs.class); + SortBuffer buffer = + new MergeSortBuffer(storage, null, 100); + buffer.prepare(c); + + for (int i=0; i<5000; i++) { + StorableWithLobs s = storage.prepare(); + s.setBlobValue(new ByteArrayBlob(("hello " + i).getBytes())); + s.insert(); + buffer.add(s); + } + + buffer.sort(); + + int lastId = Integer.MAX_VALUE; + for (StorableWithLobs s : buffer) { + assertTrue(s.getId() < lastId); + String str = s.getBlobValue().asString(); + assertTrue(str.startsWith("hello ")); + assertTrue((Integer.parseInt(str.substring(6)) + 1) == s.getId()); + lastId = s.getId(); + } + + buffer.close(); + } + private void testBuffer(int size) throws Exception { Storage storage = mRepository.storageFor(StorableTestBasic.class); SortBuffer buffer = new MergeSortBuffer(storage); -- cgit v1.2.3