/* * Copyright 2010 Henry Coles * * 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 org.pitest.functional; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.pitest.functional.prelude.Prelude.id; import static org.pitest.functional.prelude.Prelude.isEqualTo; import static org.pitest.functional.prelude.Prelude.isGreaterThan; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import nl.jqno.equalsverifier.EqualsVerifier; import org.junit.Before; import org.junit.Test; import org.pitest.functional.prelude.Prelude; public class MutableListTest { private MutableList<Integer> testee; @Before public void setUp() { this.testee = new MutableList<Integer>(); } @Test public void containsShouldReturnFalseIfValueNotInList() { assertFalse(this.testee.contains(1)); } @Test public void containsAllShouldReturnFalseIfAllValuesNotInList() { this.testee.add(1); assertFalse(this.testee.containsAll(Arrays.asList(1, 2))); } @Test public void shouldBeAbleToAddToList() { this.testee.add(1); assertTrue(this.testee.contains(1)); } @Test public void shouldBeAbleToAddAllToList() { this.testee.addAll(Arrays.asList(1, 2, 3)); assertTrue(this.testee.containsAll(Arrays.asList(1, 2, 3))); } @Test public void isEmptyShouldReturnTrueWhenListIsEmpty() { assertTrue(this.testee.isEmpty()); } @Test public void isEmptyShouldReturnFalseWhenListIsNotEmpty() { this.testee.add(1); assertFalse(this.testee.isEmpty()); } @Test public void clearShouldRemoveAllItemsFromList() { this.testee.addAll(Arrays.asList(1, 2, 3)); this.testee.clear(); assertTrue(this.testee.isEmpty()); } @Test public void removeShouldRemoveItemFromListAndReturnTrueWhenItemPresent() { this.testee.add(1); assertTrue(this.testee.remove(Integer.valueOf(1))); assertFalse(this.testee.contains(1)); } @Test public void removeShouldReturnFalseWhenItemNotPresent() { assertFalse(this.testee.remove(Integer.valueOf(1))); } @Test public void removeAllShouldRemoveItemsFromListAndReturnTrueWhenItemsPresent() { this.testee.addAll(Arrays.asList(1, 2, 3)); assertTrue(this.testee.removeAll(Arrays.asList(1, 2, 3))); assertTrue(this.testee.isEmpty()); } @Test public void removeAllShouldReturnFalseWhenItemsNotPresent() { assertFalse(this.testee.removeAll(Arrays.asList(Integer.valueOf(1)))); } @Test public void retainAllShouldRetainOnlySuppliedValues() { this.testee.addAll(Arrays.asList(1, 2, 3)); assertTrue(this.testee.retainAll(Arrays.asList(1, 2))); assertEquals(new MutableList<Integer>(1, 2), this.testee); } @Test public void shouldCorrectlyReportSize() { assertEquals(0, this.testee.size()); this.testee.add(1); assertEquals(1, this.testee.size()); } @Test public void shouldConvertToObjectArray() { this.testee.addAll(Arrays.asList(1, 2, 3)); final Object[] expected = { 1, 2, 3 }; assertArrayEquals(expected, this.testee.toArray()); } @Test public void shouldConvertToTypedArray() { this.testee.addAll(Arrays.asList(1, 2, 3)); final Integer[] expected = { 1, 2, 3 }; assertArrayEquals(expected, this.testee.toArray(new Integer[1])); } @Test public void shouldApplyForEachToAllEntreis() { this.testee.addAll(Arrays.asList(1, 2, 3)); final Collection<Integer> actual = new ArrayList<Integer>(); this.testee.forEach(Prelude.accumulateTo(actual)); assertEquals(actual, Arrays.asList(1, 2, 3)); } @Test public void shouldApplyFilterToAllEntries() { this.testee.addAll(Arrays.asList(1, 2, 3)); assertEquals(Arrays.asList(2, 3), this.testee.filter(isGreaterThan(1))); } @Test public void shouldApplyMapToAllEntries() { this.testee.addAll(Arrays.asList(1, 2, 3)); assertEquals(Arrays.asList(1, 2, 3), this.testee.map(id(Integer.class))); } @Test public void shouldApplyFlatMapToAllEntries() { this.testee.addAll(Arrays.asList(1, 2, 3)); assertEquals(new MutableList<Integer>(1, 2, 3), this.testee.flatMap(Prelude.asList(Integer.class))); } @Test public void shouldReturnTrueWhenContainsCalledAndPredicateMatches() { this.testee.addAll(Arrays.asList(1, 2, 3)); assertTrue(this.testee.contains(isEqualTo(1))); } @Test public void shouldReturnFalseWhenContainsCalledAndPredicateDoesNotMatch() { assertFalse(this.testee.contains(isEqualTo(10))); } @Test public void shouldBeAbleToAddValueAtGivenIndex() { this.testee.add(1); this.testee.add(1, 2); assertEquals(Integer.valueOf(2), this.testee.get(1)); } @Test public void shouldBeAbleToAddAllAtGivenIndex() { this.testee.addAll(Arrays.asList(1, 200)); this.testee.addAll(1, Arrays.asList(2, 3)); assertTrue(this.testee.containsAll(Arrays.asList(1, 2, 3))); } @Test public void indexOfShouldReturnIndexOfValue() { this.testee.addAll(Arrays.asList(1, 2, 3)); assertEquals(1, this.testee.indexOf(2)); } @Test public void lastIndexOfShouldReturnLastIndexOfValue() { this.testee.addAll(Arrays.asList(1, 1, 1)); assertEquals(2, this.testee.lastIndexOf(1)); } @Test public void shouldBeAbleToRemoveItemAtGivenIndex() { this.testee.addAll(Arrays.asList(2, 4, 6)); this.testee.remove(1); assertTrue(this.testee.containsAll(Arrays.asList(2, 6))); } @Test public void shouldBeAbleToCreateSubList() { this.testee.addAll(Arrays.asList(2, 4, 6, 8)); assertEquals(Arrays.asList(4, 6), this.testee.subList(1, 3)); } @Test public void shouldObeyHashcodeEqualsContract() { EqualsVerifier.forClass(MutableList.class).verify(); } }