/* * Copyright (c) 2003 - 2008 Israfil Consulting Services Corporation * Copyright (c) 2003 - 2008 Christian Edward Gruber * All Rights Reserved * * This software is licensed under the Berkeley Standard Distribution license, * (BSD license), as defined below: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of Israfil Consulting Services nor the names of its contributors * may be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * $Id: SoloCollectionTest.java 130 2006-12-31 23:22:17Z cgruber $ */ package net.israfil.foundation.collections; import org.testng.Assert; import org.testng.annotations.Test; /** * * @author Christian Edward Gruber * @author Latest: $Author: cgruber $ * @version $Revision: 48 $ */ @Test public class ArrayUtilsTest { final String s1 = "s1",s2 = "s1",s3 = "s1",s4 = "s1", s5 = "s1",s6 = "s1",s7 = "s1"; public void testArrayUtilOrder1() { String[] sArray1 = new String[] { s1,s2,s3 }; String[] sArray2 = new String[] { s4,s5 }; String[] sArray3 = new String[] { s6,s7 }; String[] saResult = ArrayUtils.aggregate(new String[] {},sArray1,sArray2,sArray3); String[] expected = new String[]{s1,s2,s3,s4,s5,s6,s7}; for (int i = 0; i < saResult.length ; i++ ) { Assert.assertEquals(expected[i],saResult[i]); } Assert.assertEquals(String[].class,saResult.getClass()); } public void testArrayUtilOrder2() { String[] sArray2 = new String[] { s1,s2,s3 }; String[] sArray1 = new String[] { s4,s5 }; String[] sArray3 = new String[] { s6,s7 }; String[] saResult = ArrayUtils.aggregate(new String[] {},sArray1,sArray2,sArray3); String[] expected = new String[]{s4,s5,s1,s2,s3,s6,s7}; for (int i = 0; i < saResult.length ; i++ ) { Assert.assertEquals(expected[i],saResult[i]); } Assert.assertEquals(String[].class,saResult.getClass()); } public void testVaryingTypeAddition() { TestA tA1 = new TestA("tA1"); TestA[] tAa1 = new TestA[] { tA1 }; TestB tB1 = new TestB("tB1"); TestB[] tBa1 = new TestB[] { tB1 }; TestA[] result = ArrayUtils.aggregate(new TestA[]{},tAa1,tBa1); Assert.assertEquals(2,result.length); Assert.assertEquals(TestA[].class,result.getClass()); } public void testStringArrayAggregation() { String[] sa1 = { "s1", "s2" }; String[] sa2 = { "s3", "s4" }; String[] sa3 = ArrayUtils.aggregate(new String[]{},sa1,sa2); Assert.assertEquals(sa1[0],sa3[0]); Assert.assertEquals(sa1[1],sa3[1]); Assert.assertEquals(sa2[0],sa3[2]); Assert.assertEquals(sa2[1],sa3[3]); } public class TestA { public final String text; public TestA(String text) { this.text = text; } } public class TestB extends TestA { public TestB(String ext) { super(ext); } } }