From a197d416798acbcc1ad51c8152f00c8602a360ec Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Fri, 28 Mar 2008 16:55:16 +0000 Subject: Prevent duplicate field generation. --- .../carbonado/cursor/TestFilteredCursor.java | 26 ++++++++++++++++++++++ 1 file changed, 26 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 53c3171..e21b788 100644 --- a/src/test/java/com/amazon/carbonado/cursor/TestFilteredCursor.java +++ b/src/test/java/com/amazon/carbonado/cursor/TestFilteredCursor.java @@ -800,6 +800,32 @@ public class TestFilteredCursor extends TestCase { assertEquals(4, matches.get(2).getOrderID()); } + public void testExpandedForm() throws Exception { + // Tests that duplicate property filters don't break code generation. + + Repository repo = new ToyRepository(); + Storage orders = repo.storageFor(Order.class); + + Filter filter = Filter.filterFor + (Order.class, "orderTotal < ? & (orderNumber = ? | addressID = ?)"); + + FilterValues fv = filter.initialFilterValues(); + fv = fv.withValues(100, "xyz", 123); + + // Create the duplicates as a result of this transformation. + filter = filter.disjunctiveNormalForm(); + + Cursor cursor = EmptyCursor.the(); + + try { + cursor = FilteredCursor.applyFilter(filter, fv, cursor); + } catch (LinkageError e) { + throw e; + } + + assertFalse(cursor.hasNext()); + } + @PrimaryKey("ID") public static interface FloatRecord extends Storable { int getID(); -- cgit v1.2.3