package de.avalax.fitbuddy.presentation.edit.workout;
import org.junit.Before;
import org.junit.Test;
import java.util.Iterator;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.collection.IsEmptyCollection.emptyCollectionOf;
import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
public class ItemsWithCheckedStateTest {
private ItemsWithCheckedState itemsWithCheckedState;
@Before
public void setUp() throws Exception {
itemsWithCheckedState = new ItemsWithCheckedState();
}
@Test
public void noItemsChecked_shouldReturnEmptyList() throws Exception {
assertThat(itemsWithCheckedState.list(), emptyCollectionOf(Integer.class));
}
@Test
public void oneItemChecked_shouldReturnListWithThisItem() throws Exception {
itemsWithCheckedState.addCheckedItem(42);
assertThat(itemsWithCheckedState.list(), containsInAnyOrder(42));
}
@Test
public void oneItemCheckedTwice_shouldReturnListWithThisItemOnce() throws Exception {
itemsWithCheckedState.addCheckedItem(42);
itemsWithCheckedState.addCheckedItem(42);
assertThat(itemsWithCheckedState.list(), hasSize(1));
assertThat(itemsWithCheckedState.list(), containsInAnyOrder(42));
}
@Test
public void twoItemChecked_shouldReturnListWithThisTwoItems() throws Exception {
itemsWithCheckedState.addCheckedItem(21);
itemsWithCheckedState.addCheckedItem(42);
assertThat(itemsWithCheckedState.list(), containsInAnyOrder(21, 42));
}
@Test
public void uncheckUnknownItem_shouldReturnListWithoutThisItem() throws Exception {
itemsWithCheckedState.removeCheckedItem(21);
assertThat(itemsWithCheckedState.list(), not(containsInAnyOrder(21)));
}
@Test
public void uncheckItem_shouldReturnListWithoutThisItem() throws Exception {
itemsWithCheckedState.addCheckedItem(21);
itemsWithCheckedState.addCheckedItem(42);
itemsWithCheckedState.removeCheckedItem(21);
assertThat(itemsWithCheckedState.list(), not(containsInAnyOrder(21)));
}
@Test
public void addedCheckedItemsInWrongOrder_shouldReturnListDescending() throws Exception {
itemsWithCheckedState.addCheckedItem(1);
itemsWithCheckedState.addCheckedItem(3);
itemsWithCheckedState.addCheckedItem(2);
Iterator<Integer> iterator = itemsWithCheckedState.list().iterator();
assertThat(iterator.next(), equalTo(3));
assertThat(iterator.next(), equalTo(2));
assertThat(iterator.next(), equalTo(1));
}
@Test
public void listWithCheckedItems_shouldBeCleared() throws Exception {
itemsWithCheckedState.addCheckedItem(1);
itemsWithCheckedState.addCheckedItem(3);
itemsWithCheckedState.addCheckedItem(2);
itemsWithCheckedState.clear();
assertThat(itemsWithCheckedState.list(), emptyCollectionOf(Integer.class));
}
}