diff options
| author | Brian S. O'Neill <bronee@gmail.com> | 2008-03-28 16:55:16 +0000 |
|---|---|---|
| committer | Brian S. O'Neill <bronee@gmail.com> | 2008-03-28 16:55:16 +0000 |
| commit | a197d416798acbcc1ad51c8152f00c8602a360ec (patch) | |
| tree | 1e994cb4bd2c0387b0e3064ba594085f6db61cd0 /src | |
| parent | 71952848c6fac8d9105e5cf08db7fb76fb77cf5c (diff) | |
Prevent duplicate field generation.
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/java/com/amazon/carbonado/cursor/TestFilteredCursor.java | 26 |
1 files changed, 26 insertions, 0 deletions
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<Order> orders = repo.storageFor(Order.class);
+
+ Filter<Order> filter = Filter.filterFor
+ (Order.class, "orderTotal < ? & (orderNumber = ? | addressID = ?)");
+
+ FilterValues<Order> fv = filter.initialFilterValues();
+ fv = fv.withValues(100, "xyz", 123);
+
+ // Create the duplicates as a result of this transformation.
+ filter = filter.disjunctiveNormalForm();
+
+ Cursor<Order> 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();
|
