/******************************************************************************* * Copyright (c) 2007, 2014 compeople AG and others. * 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: * compeople AG - initial API and implementation *******************************************************************************/ package org.eclipse.riena.core.util; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; import java.util.Scanner; import java.util.StringTokenizer; import java.util.Vector; import org.eclipse.riena.core.test.RienaTestCase; import org.eclipse.riena.core.test.collect.NonUITestCase; /** * Test the Iter class */ @NonUITestCase public class IterTest extends RienaTestCase { /** * Nomen est omen! */ public void testIteratorTyped() { final Scanner scanner = new Scanner("this is a test"); String result = ""; for (final String s : Iter.able(scanner)) { result = result + s; } assertEquals("thisisatest", result); } /** * Nomen est omen! */ public void testIteratorUntyped() { final UntypedIteratorReturner utr = new UntypedIteratorReturner(new String[] { "1", "2" }); String result = ""; for (final String s : Iter.able(utr.getIterator(), String.class)) { result = result + s; } assertEquals("12", result); } /** * Nomen est omen! */ public void testNullIterator() { String result = ""; for (final String s : Iter.able((Iterator<String>) null)) { result = result + s; } assertEquals("", result); } /** * Nomen est omen! */ public void testEnumerationTyped() { final Vector<String> v = new Vector<String>(); v.add("1"); v.add("2"); String result = ""; for (final String o : Iter.able(v.elements())) { result = result + o; } assertEquals("12", result); } /** * Nomen est omen! */ public void testArray() { final String[] strings = new String[] { "a", "b", "c" }; String result = ""; for (final String o : Iter.able(strings)) { result = result + o; } assertEquals("abc", result); } /** * Nomen est omen! */ public void testEmptyArray() { final String[] strings = new String[0]; String result = ""; for (final String o : Iter.able(strings)) { result = result + o; } assertEquals("", result); } /** * Nomen est omen! */ public void testNullArray() { final String[] strings = null; String result = ""; for (final String o : Iter.able(strings)) { result = result + o; } assertEquals("", result); } /** * Nomen est omen! */ public void testEnumerationUntyped() { final StringTokenizer st = new StringTokenizer("this is a test"); String result = ""; for (final String str : Iter.able(st, String.class)) { result = result + str; } assertEquals("thisisatest", result); } /** * Nomen est omen! */ public void testNullEnumeration() { String result = ""; for (final Object o : Iter.able((Enumeration<Object>) null)) { result = result + o; } assertEquals("", result); } /** * Nomen est omen! */ public void testCollection() { final List<String> strings = new ArrayList<String>(); strings.add("1"); strings.add("2"); String result = ""; for (final Object o : Iter.able(strings)) { result = result + o; } assertEquals("12", result); } /** * Nomen est omen! */ public void testNullCollection() { final List<String> strings = null; String result = ""; for (final Object o : Iter.able(strings)) { result = result + o; } assertEquals("", result); } /** * Nomen est omen! */ public void testAndNowSomethingCompletlyDifferent() throws IOException { final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); final Enumeration<URL> enumeration = classLoader.getResources("META-INF/hivemodule.xml"); for (final URL jarUrl : Iter.able(enumeration)) { println(jarUrl.toString()); } } /** * Nomen est omen! */ public void testReverseIterating() { final List<Integer> ints = new ArrayList<Integer>(); ints.add(1); ints.add(2); ints.add(3); int expected = 3; for (final Integer i : Iter.ableReverse(ints)) { assertEquals(expected--, (int) i); } } /** * Nomen est omen! */ public void testReverseIteratingWithNull() { final List<Integer> ints = null; for (final Integer i : Iter.ableReverse(ints)) { fail("Unfortunately " + i + " could be reached which should not happen!."); } } private static class UntypedIteratorReturner { private final String[] strings; /** * @param strings */ public UntypedIteratorReturner(final String[] strings) { this.strings = strings; } /** * Note: It is intended that the iterator is untyped!!!! * * @return */ @SuppressWarnings("rawtypes") public Iterator getIterator() { return new Iterator() { private int i = 0; public boolean hasNext() { return i < strings.length; } public Object next() { if (i == strings.length) { throw new NoSuchElementException(); } return strings[i++]; } public void remove() { } }; } } }