### Question:
ItemList extends ListTransformation<ListType, String> { public ReadOnlyListProperty<String> stringListProperty() { return targetListProperty(); } ItemList(ObservableList<ListType> modelList,
			final ModelToStringFunction<ListType> modelToStringMapper); ReadOnlyListProperty<String> stringListProperty();  }### Answer:
@Test public void mapFromModelToString() { Assertions.assertEquals(PREFIX + PERSON3_NAME, itemList .stringListProperty().get(2)); }
@Test public void addItemToItemList() { Assertions.assertEquals(3, itemList.stringListProperty().size()); Assertions.assertEquals(3, listWithModelObjects.size()); listWithModelObjects.add(new Person("addedPerson")); Assertions.assertEquals(4, itemList.stringListProperty().size()); Assertions.assertEquals(4, listWithModelObjects.size()); }
@Test public void removeItemFromItemList() { Assertions.assertEquals(3, itemList.stringListProperty().size()); Assertions.assertEquals(3, listWithModelObjects.size()); listWithModelObjects.remove(0); Assertions.assertEquals(2, itemList.stringListProperty().size()); Assertions.assertEquals(2, listWithModelObjects.size()); }
@Test public void removeMultipleItemsFromItemList() { listWithModelObjects.removeAll(person1, person2); Assertions.assertEquals(1, listWithModelObjects.size()); Assertions.assertEquals(1, itemList.stringListProperty().size()); Assertions.assertEquals(person3, listWithModelObjects.get(0)); Assertions.assertEquals(PREFIX + PERSON3_NAME, itemList .stringListProperty().get(0)); }
@Test public void removeAllItemsFromItemList() { listWithModelObjects.clear(); Assertions.assertEquals(0, listWithModelObjects.size()); Assertions.assertEquals(0, itemList.stringListProperty().size()); }
@Test public void addItemToItemListAtIndex() { listWithModelObjects.add(1, new Person("addedPerson")); Assertions.assertEquals(4, itemList.stringListProperty().size()); Assertions.assertEquals(4, listWithModelObjects.size()); Assertions.assertEquals(PREFIX + "addedPerson", itemList .stringListProperty().get(1)); }
@Test public void addMultipleItemsToItemList() { listWithModelObjects.addAll(new Person("added1"), new Person("added2")); Assertions.assertEquals(5, listWithModelObjects.size()); Assertions.assertEquals(5, itemList.stringListProperty().size()); Assertions.assertEquals(PREFIX + "added1", itemList.stringListProperty() .get(3)); Assertions.assertEquals(PREFIX + "added2", itemList.stringListProperty() .get(4)); }
@Test public void replaceItemInItemListAtIndex() { listWithModelObjects.set(1, new Person("replacedPerson")); Assertions.assertEquals(3, listWithModelObjects.size()); Assertions.assertEquals(3, itemList.stringListProperty().size()); Assertions.assertEquals(PREFIX + "replacedPerson", itemList .stringListProperty().get(1)); }