private void assertListValuesEquals( ListValue appended, ListValue expected ) { assertEquals( expected, appended ); assertEquals( expected.hashCode(), appended.hashCode() ); assertArrayEquals( expected.asArray(), appended.asArray() ); assertTrue( iteratorsEqual(expected.iterator(), appended.iterator()) ); } }
@Test void shouldHandleSingleListConcatenation() { // Given ListValue inner = list( stringValue( "foo" ), longValue( 42 ), booleanValue( true ) ); // When ListValue concat = concat( inner ); // Then assertEquals(inner, concat); assertEquals(inner.hashCode(), concat.hashCode()); assertArrayEquals(inner.asArray(), concat.asArray()); }
@Test void shouldHandleRangeWithStepOne() { ListValue range = range( 5L, 11L, 1L ); ListValue expected = list( longValue( 5L ), longValue( 6L ), longValue( 7L ), longValue( 8L ), longValue( 9L ), longValue( 10L ), longValue( 11L ) ); assertEquals( range, expected ); assertEquals( range.hashCode(), expected.hashCode() ); }
@Test void shouldReverseList() { // Given ListValue inner = list( longValue( 5L ), longValue( 6L ), longValue( 7L ) ); // When ListValue reverse = inner.reverse(); // Then ListValue expected = list( longValue( 7L ), longValue( 6L ), longValue( 5L ) ); assertEquals( expected, reverse ); assertEquals( expected.hashCode(), reverse.hashCode() ); assertArrayEquals( expected.asArray(), reverse.asArray() ); } }
@Test void shouldFilterList() { // Given ListValue inner = list( NO_VALUE, longValue( 6L ), NO_VALUE, longValue( 8L ), longValue( 9L ), longValue( 11L ), NO_VALUE ); // When ListValue filter = inner.dropNoValues(); // Then ListValue expected = list( longValue( 6L ), longValue( 8L ), longValue( 9L ), longValue( 11L ) ); assertEquals( filter, expected ); assertEquals( filter.hashCode(), expected.hashCode() ); assertArrayEquals( filter.asArray(), expected.asArray() ); } }
@Test void shouldHandleNegativeStart() { // Given ListValue inner = list( longValue( 5L ), longValue( 6L ), longValue( 7L ), longValue( 8L ), longValue( 9L ), longValue( 10L ), longValue( 11L ) ); // When ListValue slice = inner.slice( -2, 400000 ); // Then assertEquals( inner, slice ); assertEquals( inner.hashCode(), slice.hashCode() ); assertArrayEquals( inner.asArray(), slice.asArray() ); assertTrue( iteratorsEqual(inner.iterator(), slice.iterator()) ); }
@Test void shouldSliceList() { // Given ListValue inner = list( longValue( 5L ), longValue( 6L ), longValue( 7L ), longValue( 8L ), longValue( 9L ), longValue( 10L ), longValue( 11L ) ); // When ListValue slice = inner.slice(2, 4 ); // Then ListValue expected = list( longValue( 7L ), longValue( 8L ) ); assertEquals( expected, slice ); assertEquals( expected.hashCode(), slice.hashCode() ); assertArrayEquals( expected.asArray(), slice.asArray() ); assertTrue( iteratorsEqual(expected.iterator(), slice.iterator()) ); }
@Test void shouldBeAbleToTakeFromList() { // Given ListValue inner = list( longValue( 5L ), longValue( 6L ), longValue( 7L ), longValue( 8L ), longValue( 9L ), longValue( 10L ), longValue( 11L ) ); // When ListValue take = inner.take( 3 ); // Then ListValue expected = list( longValue( 5L ), longValue( 6L ), longValue( 7L ) ); assertEquals( expected, take ); assertEquals( expected.hashCode(), take.hashCode() ); assertArrayEquals( expected.asArray(), take.asArray() ); assertTrue( iteratorsEqual(expected.iterator(), take.iterator()) ); } }
@Test void shouldBeAbleToDropFromList() { // Given ListValue inner = list( longValue( 5L ), longValue( 6L ), longValue( 7L ), longValue( 8L ), longValue( 9L ), longValue( 10L ), longValue( 11L ) ); // When ListValue drop = inner.drop( 4 ); // Then ListValue expected = list( longValue( 9L ), longValue( 10L ), longValue( 11L ) ); assertEquals( expected, drop ); assertEquals( expected.hashCode(), drop.hashCode() ); assertArrayEquals( expected.asArray(), drop.asArray() ); assertTrue( iteratorsEqual(expected.iterator(), drop.iterator()) ); }
@Test void shouldHandleExceedingRange() { // Given ListValue inner = list( longValue( 5L ), longValue( 6L ), longValue( 7L ), longValue( 8L ), longValue( 9L ), longValue( 10L ), longValue( 11L ) ); // When ListValue slice = inner.slice( 2, 400000 ); // Then ListValue expected = list( longValue( 7L ), longValue( 8L ), longValue( 9L ), longValue( 10L ), longValue( 11L ) ); assertEquals( expected, slice ); assertEquals( expected.hashCode(), slice.hashCode() ); assertArrayEquals( expected.asArray(), slice.asArray() ); assertTrue( iteratorsEqual(expected.iterator(), slice.iterator()) ); }
@Test void shouldHandleMultipleListConcatenation() { // Given ListValue inner1 = list( stringValue( "foo" ), longValue( 42 ), booleanValue( true ) ); ListValue inner2 = list( list(stringValue("bar"), intValue(42)) ); ListValue inner3 = list( map("foo", 1337L, "bar", 42 ), stringValue("baz") ); // When ListValue concat = concat( inner1, inner2, inner3 ); // Then ListValue expected = list( stringValue( "foo" ), longValue( 42 ), booleanValue( true ), list( stringValue( "bar" ), intValue( 42 ) ), map( "foo", 1337L, "bar", 42 ), stringValue( "baz" ) ); assertEquals(expected, concat); assertEquals(expected.hashCode(), concat.hashCode()); assertArrayEquals(expected.asArray(), concat.asArray()); } }