From 72c7e609b9f3395f8666023dcb7b371f9130be0f Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Sat, 13 Jan 2007 20:01:54 +0000 Subject: Fix for getting supplied filter values when duplicate property filters exist. --- .../carbonado/filter/TestFilterSuppliedValues.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/test/java/com/amazon/carbonado') diff --git a/src/test/java/com/amazon/carbonado/filter/TestFilterSuppliedValues.java b/src/test/java/com/amazon/carbonado/filter/TestFilterSuppliedValues.java index ff12948..6f174c5 100644 --- a/src/test/java/com/amazon/carbonado/filter/TestFilterSuppliedValues.java +++ b/src/test/java/com/amazon/carbonado/filter/TestFilterSuppliedValues.java @@ -117,4 +117,27 @@ public class TestFilterSuppliedValues extends TestCase { assertEquals("hello", values[0]); assertEquals(new Integer(5), values[1]); } + + public void testSuppliedValuesFor_multipleReferences() { + // Test with property filter duplication. + Filter oneProp = Filter.filterFor(Order.class, "orderTotal != ?"); + oneProp = oneProp.bind(); + + // Note that reduce is not called on the filter, as it would reduce the + // filter back to one term. + Filter f = oneProp.and(oneProp); + + // Note that values are only for oneProp. + FilterValues fv = oneProp.initialFilterValues(); + + Object[] values = fv.getSuppliedValuesFor(f); + assertEquals(0, values.length); + + // Supply one actual value... + values = fv.with(10).getSuppliedValuesFor(f); + // ...which is duplicated as required by f. + assertEquals(2, values.length); + assertEquals(new Integer(10), values[0]); + assertEquals(new Integer(10), values[1]); + } } -- cgit v1.2.3