From: erik Date: Sun, 13 Apr 2008 08:23:33 +0000 (+0000) Subject: filtering of collections. X-Git-Tag: wamblee-utils-0.2~1^2~179 X-Git-Url: http://wamblee.org/gitweb/?a=commitdiff_plain;h=49502b42e6885ad05ca88d0e0613d7033b75ced3;p=utils filtering of collections. --- 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.