summaryrefslogtreecommitdiff
path: root/src/test/java/com/amazon/carbonado/cursor
diff options
context:
space:
mode:
authorBrian S. O'Neill <bronee@gmail.com>2007-10-21 00:46:26 +0000
committerBrian S. O'Neill <bronee@gmail.com>2007-10-21 00:46:26 +0000
commit924f0db8a087a3ae396ceeec88dc78d826a50f2a (patch)
tree098bc54943843618e4cdb6ecc6b17be5f33133f4 /src/test/java/com/amazon/carbonado/cursor
parent1b10ed688bd75f7c2535bab96c5ff705a5df314e (diff)
Allow open exists filter to operate on many-to-one join.
Diffstat (limited to 'src/test/java/com/amazon/carbonado/cursor')
-rw-r--r--src/test/java/com/amazon/carbonado/cursor/TestFilteredCursor.java59
1 files changed, 59 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 2279e9b..6f78c42 100644
--- a/src/test/java/com/amazon/carbonado/cursor/TestFilteredCursor.java
+++ b/src/test/java/com/amazon/carbonado/cursor/TestFilteredCursor.java
@@ -559,6 +559,65 @@ public class TestFilteredCursor extends TestCase {
assertEquals(3, matches.get(2).getOrderID());
}
+ public void testExistsNoParamsManyToOne() throws Exception {
+ Repository repo = new ToyRepository();
+ Storage<Order> orders = repo.storageFor(Order.class);
+ Storage<OrderItem> items = repo.storageFor(OrderItem.class);
+
+ Order order = orders.prepare();
+ order.setOrderID(1);
+ order.setOrderNumber("one");
+ order.setOrderTotal(100);
+ order.setAddressID(0);
+ order.insert();
+
+ OrderItem item = items.prepare();
+ item.setOrderItemID(1);
+ item.setOrderID(1);
+ item.setItemDescription("desc one");
+ item.setItemQuantity(1);
+ item.setItemPrice(100);
+ item.setShipmentID(0);
+ item.insert();
+
+ item = items.prepare();
+ item.setOrderItemID(2);
+ item.setOrderID(1);
+ item.setItemDescription("desc two");
+ item.setItemQuantity(2);
+ item.setItemPrice(5);
+ item.setShipmentID(0);
+ item.insert();
+
+ item = items.prepare();
+ item.setOrderItemID(3);
+ item.setOrderID(0);
+ item.setItemDescription("desc three");
+ item.setItemQuantity(1);
+ item.setItemPrice(5);
+ item.setShipmentID(0);
+ item.insert();
+
+ // Query for items contained in an order.
+ List<OrderItem> matches = items.query("order()").fetch().toList();
+ assertEquals(2, matches.size());
+ assertEquals(1, matches.get(0).getOrderItemID());
+ assertEquals(2, matches.get(1).getOrderItemID());
+
+ // Query for items contained not in an order.
+ matches = items.query("!order()").fetch().toList();
+ assertEquals(1, matches.size());
+ assertEquals(3, matches.get(0).getOrderItemID());
+
+ // Outer join.
+ matches = items.query("itemPrice = ? & (order.orderTotal = ? | !order())")
+ .with(5).with(100)
+ .fetch().toList();
+ assertEquals(2, matches.size());
+ assertEquals(2, matches.get(0).getOrderItemID());
+ assertEquals(3, matches.get(1).getOrderItemID());
+ }
+
public void testExistsWithParams() throws Exception {
Repository repo = new ToyRepository();
Storage<Order> orders = repo.storageFor(Order.class);