From 818f4d63ba9eeb48c342ec6220cfc72947dbfef3 Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Wed, 31 Oct 2012 16:31:51 +0000 Subject: Support range filtering of array types. --- .../carbonado/cursor/TestFilteredCursor.java | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'src') diff --git a/src/test/java/com/amazon/carbonado/cursor/TestFilteredCursor.java b/src/test/java/com/amazon/carbonado/cursor/TestFilteredCursor.java index 899d9e5..a8709e9 100644 --- a/src/test/java/com/amazon/carbonado/cursor/TestFilteredCursor.java +++ b/src/test/java/com/amazon/carbonado/cursor/TestFilteredCursor.java @@ -389,6 +389,35 @@ public class TestFilteredCursor extends TestCase { assertEquals(expected.length, actualCount); } + public void testByteArrayFilter() throws Exception { + // Range comparison requires a special comparator to be used. + + Repository repo = new ToyRepository(); + Storage storage = repo.storageFor(ByteArrayRecord.class); + + byte[][] arrays = {{1}, {2}, {3}}; + + for (int i=0; i filter = Filter + .filterFor(ByteArrayRecord.class, "arrayValue < ?").bind(); + + Cursor all = storage.query().fetch(); + + Cursor filtered = FilteredCursor + .applyFilter(filter, filter.initialFilterValues().with(new byte[]{3}), all); + + List records = filtered.toList(); + int actualCount = records.size(); + + assertEquals(2, actualCount); + } + public void testExistsNoParams() throws Exception { Repository repo = new ToyRepository(); Storage orders = repo.storageFor(Order.class); @@ -863,4 +892,13 @@ public class TestFilteredCursor extends TestCase { Double getDoubleValue(); void setDoubleValue(Double value); } + + @PrimaryKey("ID") + public static interface ByteArrayRecord extends Storable { + int getID(); + void setID(int id); + + byte[] getArrayValue(); + void setArrayValue(byte[] value); + } } -- cgit v1.2.3