/******************************************************************************* * Copyright (c) 2008 Ralf Ebert * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Ralf Ebert - initial API and implementation *******************************************************************************/ package com.swtxml.util.lang; import static com.swtxml.util.lang.Filters.and; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Before; import org.junit.Test; public class CollectionUtilsTest { private List<Integer> numbers; private List<Integer> oddNumbers; private List<Integer> emptyList = new ArrayList<Integer>(); @Before public void setup() { numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7); oddNumbers = Arrays.asList(1, 3, 5, 7); } @Test public void testFind() { assertEquals(2, CollectionUtils.find(numbers, evenNumber())); assertEquals(null, CollectionUtils.find(oddNumbers, evenNumber())); } private IFilter<Number> evenNumber() { return new IFilter<Number>() { public boolean match(Number n) { return n.longValue() % 2 == 0; } }; } private IFilter<Number> is4Number() { return new IFilter<Number>() { public boolean match(Number n) { return n.longValue() == 4; } }; } private IFunction<Number, Number> plus1() { return new IFunction<Number, Number>() { public Number apply(Number n) { return n.longValue() + 1; } }; } @Test public void testSelect() { assertEquals("[2, 4, 6]", CollectionUtils.select(numbers, evenNumber()).toString()); assertEquals("[]", CollectionUtils.select(oddNumbers, evenNumber()).toString()); } @Test public void testCollect() { assertEquals("[2, 4, 6, 8]", CollectionUtils.collect(oddNumbers, plus1()).toString()); assertEquals("[]", CollectionUtils.collect(emptyList, plus1()).toString()); } @Test public void sortedToString() { assertEquals("1, 3, 5, 7", CollectionUtils.sortedToString(oddNumbers)); } @Test @SuppressWarnings("unchecked") public void testAnd() { assertEquals("[2, 4, 6]", CollectionUtils.select(numbers, and(Arrays.asList(evenNumber(), evenNumber()))).toString()); assertEquals("[4]", CollectionUtils.select(numbers, and(Arrays.asList(evenNumber(), is4Number()))).toString()); } }