summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrian S. O'Neill <bronee@gmail.com>2007-01-13 20:01:54 +0000
committerBrian S. O'Neill <bronee@gmail.com>2007-01-13 20:01:54 +0000
commit72c7e609b9f3395f8666023dcb7b371f9130be0f (patch)
tree416cfc392524ff2f658da3b5d1f95dc340ddcaa8 /src
parent0cee037e638c29e3fea3bcb2c1c68fc2403a6fc7 (diff)
Fix for getting supplied filter values when duplicate property filters exist.
Diffstat (limited to 'src')
-rw-r--r--src/test/java/com/amazon/carbonado/filter/TestFilterSuppliedValues.java23
1 files changed, 23 insertions, 0 deletions
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<Order> 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<Order> f = oneProp.and(oneProp);
+
+ // Note that values are only for oneProp.
+ FilterValues<Order> 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]);
+ }
}