/* * Copyright 2013 Cameron Beccario * * 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 net.nullschool.collect.basic; import net.nullschool.collect.ConstList; import net.nullschool.reflect.PublicInterfaceRef; import org.junit.Test; import java.util.*; import static net.nullschool.collect.basic.BasicCollections.*; import static org.junit.Assert.*; import static net.nullschool.collect.CollectionTestingTools.*; /** * 2013-04-30<p/> * * @author Cameron Beccario */ public class BasicConstListTest { @Test public void test_emptyList() { assertSame(BasicList0.instance(), emptyList()); } @Test public void test_listOf() { compare_lists(Arrays.asList(1), listOf(1)); compare_lists(Arrays.asList(1, 2), listOf(1, 2)); compare_lists(Arrays.asList(1, 2, 3), listOf(1, 2, 3)); compare_lists(Arrays.asList(1, 2, 3, 4), listOf(1, 2, 3, 4)); compare_lists(Arrays.asList(1, 2, 3, 4, 5), listOf(1, 2, 3, 4, 5)); compare_lists(Arrays.asList(1, 2, 3, 4, 5, 6), listOf(1, 2, 3, 4, 5, 6)); compare_lists(Arrays.asList(1, 2, 3, 4, 5, 6, 7), listOf(1, 2, 3, 4, 5, 6, 7)); compare_lists(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8), listOf(1, 2, 3, 4, 5, 6, 7, 8)); // noinspection RedundantArrayCreation compare_lists(Arrays.asList(9, 3, 2, 1, 1, 3, 2, 3, 2), listOf(9, 3, 2, 1, 1, 3, new Integer[] {2, 3, 2})); compare_lists(Arrays.asList((Object)null), listOf(null)); compare_lists(Arrays.asList(null, null), listOf(null, null)); compare_lists(Arrays.asList(null, null, null), listOf(null, null, null)); compare_lists(Arrays.asList(null, null, null, null), listOf(null, null, null, null)); compare_lists(Arrays.asList(null, null, null, null, null), listOf(null, null, null, null, null)); compare_lists(Arrays.asList(null, null, null, null, null, null), listOf(null, null, null, null, null, null)); compare_lists( Arrays.asList(null, null, null, null, null, null, null), listOf(null, null, null, null, null, null, (Object)null)); compare_lists( Arrays.asList(null, null, null, null, null, null, null, null), listOf(null, null, null, null, null, null, null, null)); } @Test public void test_listOf_types() { assertEquals(BasicList1.class, listOf(1).getClass()); assertEquals(BasicListN.class, listOf(1, 2).getClass()); assertEquals(BasicListN.class, listOf(1, 2, 3).getClass()); assertEquals(BasicListN.class, listOf(1, 2, 3, 4).getClass()); assertEquals(BasicListN.class, listOf(1, 2, 3, 4, 5).getClass()); assertEquals(BasicListN.class, listOf(1, 2, 3, 4, 5, 6).getClass()); assertEquals(BasicListN.class, listOf(1, 2, 3, 4, 5, 6, 7).getClass()); assertEquals(BasicListN.class, listOf(1, 2, 3, 4, 5, 6, 7, 8).getClass()); } @Test public void test_asList_array() { assertSame(emptyList(), asList(new Integer[] {})); compare_lists(Arrays.asList(1), asList(new Integer[] {1})); compare_lists(Arrays.asList(1, 2), asList(new Integer[] {1, 2})); compare_lists(Arrays.asList(1, 2, 3), asList(new Integer[] {1, 2, 3})); compare_lists(Arrays.asList(1, 2, 3, 4), asList(new Integer[] {1, 2, 3, 4})); compare_lists(Arrays.asList(1, 2, 3, 4, 5), asList(new Integer[] {1, 2, 3, 4, 5})); compare_lists(Arrays.asList(1, 2, 3, 4, 5, 6), asList(new Integer[] {1, 2, 3, 4, 5, 6})); } @Test public void test_asList_array_types() { assertEquals(BasicList1.class, asList(new Integer[] {1}).getClass()); assertEquals(BasicListN.class, asList(new Integer[] {1, 2}).getClass()); assertEquals(BasicListN.class, asList(new Integer[] {1, 2, 3}).getClass()); assertEquals(BasicListN.class, asList(new Integer[] {1, 2, 3, 4}).getClass()); assertEquals(BasicListN.class, asList(new Integer[] {1, 2, 3, 4, 5}).getClass()); assertEquals(BasicListN.class, asList(new Integer[] {1, 2, 3, 4, 5, 6}).getClass()); assertEquals(BasicListN.class, asList(new Integer[] {1, 2, 3, 4, 5, 6, 7}).getClass()); assertEquals(BasicListN.class, asList(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8}).getClass()); } @Test(expected = NullPointerException.class) public void test_asList_array_null() { asList((Integer[])null); } @Test public void test_asList_collection() { assertSame(emptyList(), asList(Arrays.asList())); compare_lists(Arrays.asList(1), asList(Arrays.asList(1))); compare_lists(Arrays.asList(1, 2), asList(Arrays.asList(1, 2))); compare_lists(Arrays.asList(1, 2, 3), asList(Arrays.asList(1, 2, 3))); compare_lists(Arrays.asList(1, 2, 3, 4), asList(Arrays.asList(1, 2, 3, 4))); compare_lists(Arrays.asList(1, 2, 3, 4, 5), asList(Arrays.asList(1, 2, 3, 4, 5))); compare_lists(Arrays.asList(1, 2, 3, 4, 5, 6), asList(Arrays.asList(1, 2, 3, 4, 5, 6))); ConstList<Integer> list; list = listOf(1); assertSame(list, asList(list)); list = listOf(1, 2); assertSame(list, asList(list)); list = listOf(1, 2, 3); assertSame(list, asList(list)); list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9); assertSame(list, asList(list)); } @Test public void test_asList_collection_types() { assertEquals(BasicList1.class, asList(Arrays.asList(1)).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2)).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3)).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3, 4)).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3, 4, 5)).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3, 4, 5, 6)).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3, 4, 5, 6, 7)).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8)).getClass()); } @Test(expected = NullPointerException.class) public void test_asList_collection_null() { asList((Collection<?>)null); } @Test public void test_asList_iterator() { assertSame(emptyList(), asList(Arrays.asList().iterator())); compare_lists(Arrays.asList(1), asList(Arrays.asList(1).iterator())); compare_lists(Arrays.asList(1, 2), asList(Arrays.asList(1, 2).iterator())); compare_lists(Arrays.asList(1, 2, 3), asList(Arrays.asList(1, 2, 3).iterator())); compare_lists(Arrays.asList(1, 2, 3, 4), asList(Arrays.asList(1, 2, 3, 4).iterator())); compare_lists(Arrays.asList(1, 2, 3, 4, 5), asList(Arrays.asList(1, 2, 3, 4, 5).iterator())); compare_lists(Arrays.asList(1, 2, 3, 4, 5, 6), asList(Arrays.asList(1, 2, 3, 4, 5, 6).iterator())); } @Test public void test_asList_iterator_types() { assertEquals(BasicList1.class, asList(Arrays.asList(1).iterator()).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2).iterator()).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3).iterator()).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3, 4).iterator()).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3, 4, 5).iterator()).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3, 4, 5, 6).iterator()).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3, 4, 5, 6, 7).iterator()).getClass()); assertEquals(BasicListN.class, asList(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8).iterator()).getClass()); } @Test(expected = NullPointerException.class) public void test_asList_iterator_null() { asList((Iterator<?>)null); } @Test public void test_condense() { assertSame(emptyList(), condenseToList(new Object[] {})); assertEquals(BasicList1.class, condenseToList(new Object[] {1}).getClass()); assertEquals(BasicListN.class, condenseToList(new Object[] {1, 2}).getClass()); assertEquals(BasicListN.class, condenseToList(new Object[] {1, 2, 3}).getClass()); assertEquals(BasicListN.class, condenseToList(new Object[] {1, 2, 3, 4}).getClass()); assertEquals(BasicListN.class, condenseToList(new Object[] {1, 2, 3, 4, 5}).getClass()); assertEquals(BasicListN.class, condenseToList(new Object[] {1, 2, 3, 4, 5, 6}).getClass()); assertEquals(BasicListN.class, condenseToList(new Object[] {1, 2, 3, 4, 5, 6, 7}).getClass()); assertEquals(BasicListN.class, condenseToList(new Object[] {1, 2, 3, 4, 5, 6, 7, 8}).getClass()); } @Test public void test_publicInterfaceRef_annotation_present() { Collection<Integer> elements = new ArrayList<>(); for (int i = 0; i < 15; i++) { assertSame( BasicConstList.class, asList(elements).getClass().getAnnotation(PublicInterfaceRef.class).value()); elements.add(i); } } }