package org.phoenicis.javafx.views.common;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.SortedList;
import org.junit.Test;
import java.util.Arrays;
import java.util.Comparator;
import static org.junit.Assert.assertEquals;
/**
* Created by marc on 01.04.17.
*/
public class MappedListTest {
@Test
public void testListCreation() {
ObservableList<Integer> observableList = FXCollections.observableArrayList(Arrays.asList(3, 7, 1, 5));
MappedList<String, Integer> mappedList = new MappedList<>(observableList, i -> String.valueOf(i));
assertEquals(4, mappedList.size());
assertEquals("3", mappedList.get(0));
assertEquals("7", mappedList.get(1));
assertEquals("1", mappedList.get(2));
assertEquals("5", mappedList.get(3));
}
@Test
public void testListAdd() {
ObservableList<Integer> observableList = FXCollections.observableArrayList(Arrays.asList(3, 7, 1, 5));
MappedList<String, Integer> mappedList = new MappedList<>(observableList, i -> String.valueOf(i));
assertEquals(4, mappedList.size());
assertEquals("3", mappedList.get(0));
assertEquals("7", mappedList.get(1));
assertEquals("1", mappedList.get(2));
assertEquals("5", mappedList.get(3));
observableList.add(0);
assertEquals(5, mappedList.size());
assertEquals("3", mappedList.get(0));
assertEquals("7", mappedList.get(1));
assertEquals("1", mappedList.get(2));
assertEquals("5", mappedList.get(3));
assertEquals("0", mappedList.get(4));
}
@Test
public void testListRemove() {
ObservableList<Integer> observableList = FXCollections.observableArrayList(Arrays.asList(3, 7, 1, 5));
MappedList<String, Integer> mappedList = new MappedList<>(observableList, i -> String.valueOf(i));
assertEquals(4, mappedList.size());
assertEquals("3", mappedList.get(0));
assertEquals("7", mappedList.get(1));
assertEquals("1", mappedList.get(2));
assertEquals("5", mappedList.get(3));
observableList.remove(2);
assertEquals(3, mappedList.size());
assertEquals("3", mappedList.get(0));
assertEquals("7", mappedList.get(1));
assertEquals("5", mappedList.get(2));
}
@Test
public void testListUpdate() {
ObservableList<Integer> observableList = FXCollections.observableList(Arrays.asList(3, 7, 1, 5));
MappedList<String, Integer> mappedList = new MappedList<>(observableList, i -> String.valueOf(i));
assertEquals(4, mappedList.size());
assertEquals("3", mappedList.get(0));
assertEquals("7", mappedList.get(1));
assertEquals("1", mappedList.get(2));
assertEquals("5", mappedList.get(3));
observableList.set(2, 4);
assertEquals(4, mappedList.size());
assertEquals("3", mappedList.get(0));
assertEquals("7", mappedList.get(1));
assertEquals("4", mappedList.get(2));
assertEquals("5", mappedList.get(3));
}
@Test
public void testListPermutation() {
SortedList<Integer> sortedList = FXCollections.observableList(Arrays.asList(3, 7, 1, 5))
.sorted(Comparator.naturalOrder());
MappedList<String, Integer> mappedList = new MappedList<>(sortedList, i -> String.valueOf(i));
assertEquals(4, mappedList.size());
assertEquals("1", mappedList.get(0));
assertEquals("3", mappedList.get(1));
assertEquals("5", mappedList.get(2));
assertEquals("7", mappedList.get(3));
sortedList.comparatorProperty().set(Comparator.comparing(String::valueOf).reversed());
assertEquals(4, mappedList.size());
assertEquals("7", mappedList.get(0));
assertEquals("5", mappedList.get(1));
assertEquals("3", mappedList.get(2));
assertEquals("1", mappedList.get(3));
}
}