/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.core.util; import org.mule.tck.junit4.AbstractMuleTestCase; import org.mule.tck.size.SmallTest; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; import org.junit.Test; import static junit.framework.Assert.assertFalse; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; @SmallTest public class CollectionUtilsTestCase extends AbstractMuleTestCase { @Test public void testToArrayOfComponentTypeNullCollection() { assertNull(CollectionUtils.toArrayOfComponentType(null, String.class)); } @Test(expected = IllegalArgumentException.class) public void testToArrayOfComponentTypeNullType() { CollectionUtils.toArrayOfComponentType(Collections.EMPTY_LIST, null); } @Test public void testToArrayOfComponentTypeEmptyCollection() { assertTrue(Arrays.equals(new String[0], CollectionUtils.toArrayOfComponentType(Collections.EMPTY_LIST, String.class))); } @Test(expected = ArrayStoreException.class) public void testToArrayOfComponentTypeWrongElement() { CollectionUtils.toArrayOfComponentType(Collections.singleton("foo"), Integer.class); } @Test public void testToArrayOfComponentTypeOK() { String[] objects = new String[] {"foo", "bar", "baz"}; assertTrue(Arrays.equals(objects, CollectionUtils.toArrayOfComponentType(Arrays.asList(objects), String.class))); } @Test public void testToStringNull() throws Exception { Collection<?> c = null; assertEquals("[]", CollectionUtils.toString(c, false)); assertEquals("[]", CollectionUtils.toString(c, true)); } @Test public void testToStringEmpty() throws Exception { Collection<?> c = new ArrayList<Object>(); assertEquals("[]", CollectionUtils.toString(c, false)); assertEquals("[]", CollectionUtils.toString(c, true)); } @Test public void testToStringSingleElement() throws Exception { Collection<String> c = Arrays.asList("foo"); assertEquals("[foo]", CollectionUtils.toString(c, false)); assertEquals("[" + SystemUtils.LINE_SEPARATOR + "foo" + SystemUtils.LINE_SEPARATOR + "]", CollectionUtils.toString(c, true)); } @Test public void testToStringMultipleElements() throws Exception { Collection<Serializable> c = Arrays.asList("foo", this.getClass()); assertEquals("[foo, " + this.getClass().getName() + "]", CollectionUtils.toString(c, false)); assertEquals("[" + SystemUtils.LINE_SEPARATOR + "foo" + SystemUtils.LINE_SEPARATOR + this.getClass().getName() + SystemUtils.LINE_SEPARATOR + "]", CollectionUtils.toString(c, true)); } @Test public void testToStringTooManyElements() { Collection<Number> test = new ArrayList<Number>(100); for (int i = 0; i < 100; i++) { test.add(new Integer(i)); } // the String will contain not more than exactly MAX_ARRAY_LENGTH elements String result = CollectionUtils.toString(test, 10); assertTrue(result.endsWith("[..]]")); assertEquals(9, StringUtils.countMatches(result, ",")); } @Test public void testContainsTypeTrue() { Collection<Object> c = new ArrayList<Object>(); c.add(new String()); c.add(new Date()); assertTrue(CollectionUtils.containsType(c, Date.class)); } @Test public void testContainsTypeFalse() { Collection<Object> c = new ArrayList<Object>(); c.add(new String()); c.add(new Integer(1)); assertFalse(CollectionUtils.containsType(c, Date.class)); } @Test public void testContainsTypeNullChecks() { Collection<Object> c = new ArrayList<Object>(); c.add(new String()); c.add(new Integer(1)); assertFalse(CollectionUtils.containsType(c, null)); assertFalse(CollectionUtils.containsType(null, Date.class)); } @Test public void testRemoveType() { Collection<Object> c = new ArrayList<Object>(); c.add(new String()); c.add(new Integer(1)); CollectionUtils.removeType(c, String.class); assertEquals(1, c.size()); assertFalse(CollectionUtils.containsType(c, null)); assertFalse(CollectionUtils.containsType(null, Date.class)); } }