/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.jena.atlas.lib.tuple; import static org.junit.Assert.assertArrayEquals ; import static org.junit.Assert.assertEquals ; import static org.junit.Assert.assertNotEquals ; import static org.junit.Assert.fail ; import java.util.ArrayList ; import java.util.List ; import org.junit.Test ; public class TestTuple { @Test public void tuple_0() { Tuple<Integer> tuple = TupleFactory.create0() ; assertEquals(0, tuple.len()) ; check(tuple) ; } @Test public void tuple_1() { Tuple<Integer> tuple = TupleFactory.create1(9) ; assertEquals(1, tuple.len()) ; check(tuple) ; } @Test public void tuple_2() { Tuple<Integer> tuple = TupleFactory.create2(9,8) ; assertEquals(2, tuple.len()) ; check(tuple) ; } @Test public void tuple_3() { Tuple<Integer> tuple = TupleFactory.create3(9,8,7) ; assertEquals(3, tuple.len()) ; check(tuple) ; } @Test public void tuple_4() { Tuple<Integer> tuple = TupleFactory.create4(9,8,7,6) ; assertEquals(4, tuple.len()) ; check(tuple) ; } @Test public void tuple_5() { Tuple<Integer> tuple = TupleFactory.create5(9,8,7,6,5) ; assertEquals(5, tuple.len()) ; check(tuple) ; } @Test public void tuple_6() { Tuple<Integer> tuple = TupleFactory.create6(9,8,7,6,5,4) ; assertEquals(6, tuple.len()) ; check(tuple) ; } @Test public void tuple_7() { Tuple<Integer> tuple = TupleFactory.create7(9,8,7,6,5,4,3) ; assertEquals(7, tuple.len()) ; check(tuple) ; } @Test public void tuple_8() { Tuple<Integer> tuple = TupleFactory.create8(9,8,7,6,5,4,3,2) ; assertEquals(8, tuple.len()) ; check(tuple) ; } @Test public void tuple_N0() { Tuple<Integer> tuple = TupleFactory.tuple() ; assertEquals(0, tuple.len()) ; assertEquals(Tuple0.class, tuple.getClass()) ; check(tuple) ; } @Test public void tuple_N1() { Tuple<Integer> tuple = TupleFactory.tuple(9) ; assertEquals(1, tuple.len()) ; assertEquals(Tuple1.class, tuple.getClass()) ; check(tuple) ; } @Test public void tuple_N2() { Tuple<Integer> tuple = TupleFactory.tuple(9,8) ; assertEquals(2, tuple.len()) ; assertEquals(Tuple2.class, tuple.getClass()) ; check(tuple) ; } @Test public void tuple_N3() { Tuple<Integer> tuple = TupleFactory.tuple(9,8,7) ; assertEquals(3, tuple.len()) ; assertEquals(Tuple3.class, tuple.getClass()) ; check(tuple) ; } @Test public void tuple_N4() { Tuple<Integer> tuple = TupleFactory.tuple(9,8,7,6) ; assertEquals(4, tuple.len()) ; assertEquals(Tuple4.class, tuple.getClass()) ; check(tuple) ; } @Test public void tuple_N5() { Tuple<Integer> tuple = TupleFactory.tuple(9,8,7,6,5) ; assertEquals(5, tuple.len()) ; assertEquals(Tuple5.class, tuple.getClass()) ; check(tuple) ; } @Test public void tuple_N6() { Tuple<Integer> tuple = TupleFactory.tuple(9,8,7,6,5,4) ; assertEquals(6, tuple.len()) ; assertEquals(Tuple6.class, tuple.getClass()) ; check(tuple) ; } @Test public void tuple_N7() { Tuple<Integer> tuple = TupleFactory.tuple(9,8,7,6,5,4,3) ; assertEquals(7, tuple.len()) ; assertEquals(Tuple7.class, tuple.getClass()) ; check(tuple) ; } @Test public void tuple_N8() { Tuple<Integer> tuple = TupleFactory.tuple(9,8,7,6,5,4,3,2) ; assertEquals(8, tuple.len()) ; assertEquals(Tuple8.class, tuple.getClass()) ; check(tuple) ; } @Test public void tuple_N() { Tuple<Integer> tuple = TupleFactory.tuple(9,8,7,6,5,4,3,2,1,0) ; assertEquals(10, tuple.len()) ; assertEquals(TupleN.class, tuple.getClass()) ; check(tuple) ; } @Test public void tuple_equals_1() { Tuple<Integer> tuple1 = TupleFactory.tuple(9,8,7) ; Tuple<Integer> tuple2 = TupleN.create(9,8,7) ; assertEquals(tuple1.hashCode(), tuple2.hashCode()) ; assertEquals(tuple1, tuple2) ; } @Test public void tuple_not_equals_1() { Tuple<Integer> tuple1 = TupleFactory.tuple(9,8,7) ; Tuple<Integer> tuple2 = TupleFactory.tuple(7,8,9) ; assertNotEquals(tuple1.hashCode(), tuple2.hashCode()) ; assertNotEquals(tuple1, tuple2) ; } @Test public void tuple_not_equals_2() { Tuple<Integer> tuple1 = TupleFactory.tuple(9,8,7) ; Tuple<Integer> tuple2 = TupleFactory.tuple(9,8) ; assertNotEquals(tuple1.hashCode(), tuple2.hashCode()) ; assertNotEquals(tuple1, tuple2) ; } @Test public void tuple_array_1() { Tuple<Integer> tuple1 = TupleFactory.tuple(9,8,7) ; Integer[] array = tuple1.asArray(Integer.class) ; Tuple<Integer> tuple2 = TupleFactory.create(array) ; assertEquals(tuple1, tuple2) ; } @Test public void tuple_array_2() { Tuple<Integer> tuple1 = TupleFactory.tuple(9,8,7) ; Integer[] array = new Integer[2] ; tuple1.copyInto(array, 0, 2) ; Integer[] array1 = { 9, 8 } ; assertArrayEquals(array1, array) ; } @Test public void tuple_array_3() { Tuple<Integer> tuple1 = TupleFactory.tuple(9,8,7) ; Integer[] array = new Integer[3] ; tuple1.copyInto(array) ; Integer[] array1 = { 9, 8, 7 } ; assertArrayEquals(array1, array) ; } private void check(Tuple<Integer> tuple) { int val = 9 ; for ( int i = 0 ; i < tuple.len() ; i++ ) { assertEquals(val-i, tuple.get(i).intValue()) ; } List<Integer> list = tuple.asList() ; for ( int i = 0 ; i < tuple.len() ; i++ ) { assertEquals(val-i, list.get(i).intValue()) ; } try { tuple.get(-1) ; fail("Index -1 did not throw an exception") ; } catch(IndexOutOfBoundsException ex) {} try { tuple.get(tuple.len()) ; fail("Index len() did not throw an exception") ; } catch(IndexOutOfBoundsException ex) {} // Other constructors List<Integer> list2 = new ArrayList<>(list) ; Tuple<Integer> tuple2 = TupleFactory.create(list2) ; assertEquals(tuple.hashCode(), tuple2.hashCode()) ; assertEquals(tuple, tuple2) ; // Other constructors List<Integer> list3 = new ArrayList<>(list) ; Tuple<Integer> tuple3 = TupleFactory.tuple(list3.toArray(new Integer[0])) ; assertEquals(tuple, tuple3) ; } }