From 54b3f906ff4cb24e0deb3714a1c31a832abe1b5d Mon Sep 17 00:00:00 2001 From: Erik Brakkee Date: Sun, 13 Apr 2008 08:23:33 +0000 Subject: [PATCH] filtering of collections. --- .../wamblee/collections/CollectionFilter.java | 32 ++++++++++++++ .../collections/CollectionFilterTest.java | 42 +++++++++++++++++++ .../java/org/wamblee/test/AssertionUtils.java | 20 +++++++++ 3 files changed, 94 insertions(+) create mode 100644 support/general/src/main/java/org/wamblee/collections/CollectionFilter.java create mode 100644 support/general/src/test/java/org/wamblee/collections/CollectionFilterTest.java diff --git a/support/general/src/main/java/org/wamblee/collections/CollectionFilter.java b/support/general/src/main/java/org/wamblee/collections/CollectionFilter.java new file mode 100644 index 00000000..c52bf7b1 --- /dev/null +++ b/support/general/src/main/java/org/wamblee/collections/CollectionFilter.java @@ -0,0 +1,32 @@ +/* + * Copyright 2008 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.wamblee.collections; + +import java.util.Collection; + +import org.wamblee.conditions.Condition; + +public class CollectionFilter { + + public static void filter(Collection aFrom, Collection aTo, Condition aCondition) { + for (T t: aFrom) { + if ( aCondition.matches(t)) { + aTo.add(t); + } + } + } + +} diff --git a/support/general/src/test/java/org/wamblee/collections/CollectionFilterTest.java b/support/general/src/test/java/org/wamblee/collections/CollectionFilterTest.java new file mode 100644 index 00000000..1e56eac1 --- /dev/null +++ b/support/general/src/test/java/org/wamblee/collections/CollectionFilterTest.java @@ -0,0 +1,42 @@ +/* + * Copyright 2008 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.wamblee.collections; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.wamblee.conditions.Condition; +import org.wamblee.test.AssertionUtils; + +import junit.framework.TestCase; + +public class CollectionFilterTest extends TestCase { + + public void testFilter() { + List list = Arrays.asList(new String[] { "x", "y", "z", "y" }); + List result = new ArrayList(); + CollectionFilter.filter(list, result, + new Condition() { + @Override + public boolean matches(String aObject) { + return aObject.equals("y"); + } + }); + AssertionUtils.assertEquals(new String[] { "y", "y" }, result.toArray()); + } + +} diff --git a/support/general/src/test/java/org/wamblee/test/AssertionUtils.java b/support/general/src/test/java/org/wamblee/test/AssertionUtils.java index 8d179db7..fc404072 100644 --- a/support/general/src/test/java/org/wamblee/test/AssertionUtils.java +++ b/support/general/src/test/java/org/wamblee/test/AssertionUtils.java @@ -16,6 +16,7 @@ package org.wamblee.test; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Set; @@ -35,6 +36,25 @@ public final class AssertionUtils { private AssertionUtils() { // Empty } + + /** + * Asserts that two collections are equal including equality of the elements. + * @param aExpected + * @param aActual + */ + public static void assertEquals(List aExpected, List aActual) { + assertEquals(aExpected.toArray(), aActual.toArray()); + } + + /** + * Asserts that two collections are equal including equality of the elements. + * @param aMsg + * @param aExpected + * @param aActual + */ + public static void assertEquals(String aMsg, List aExpected, List aActual) { + assertEquals(aMsg, aExpected.toArray(), aActual.toArray()); + } /** * Asserts that two object arrays are equal. -- 2.31.1