String id2 = "com.example.Test2";
String id3 = "com.example.Other";
// perform operations while filtering container
Item item;
initializeContainer(container);
counter.reset();
// passes filter
item = container.addItem(id1);
// no event if filtered out
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id1);
counter.assertOnce();
// passes filter but already in the container
item = container.addItem(id1);
counter.assertNone();
initializeContainer(container);
counter.reset();
// passes filter after change
item = container.addItemAt(0, id1);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id1);
counter.assertOnce();
item = container.addItemAt(container.size(), id2);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id2);
counter.assertOnce();
// passes filter but already in the container
item = container.addItemAt(0, id1);
counter.assertNone();
item = container.addItemAt(container.size(), id2);
counter.assertNone();
initializeContainer(container);
counter.reset();
// passes filter
item = container.addItemAfter(null, id1);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id1);
counter.assertOnce();
item = container.addItemAfter(container.lastItemId(), id2);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id2);
counter.assertOnce();
// passes filter but already in the container
item = container.addItemAfter(null, id1);
counter.assertNone();
item = container.addItemAfter(container.lastItemId(), id2);
counter.assertNone();
// does not pass filter
// TODO implement rest
initializeContainer(container);
counter.reset();
item = container.addItemAfter(null, id3);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id3);
counter.assertNone();
initializeContainer(container);
counter.reset();
item = container.addItemAfter(container.firstItemId(), id3);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id3);
counter.assertNone();
initializeContainer(container);
counter.reset();
item = container.addItemAfter(container.lastItemId(), id3);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id3);
counter.assertNone();
initializeContainer(container);
counter.reset();
item = container.addItemAt(0, id3);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id3);
counter.assertNone();
initializeContainer(container);
counter.reset();
item = container.addItemAt(1, id3);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id3);
counter.assertNone();
initializeContainer(container);
counter.reset();
item = container.addItemAt(container.size(), id3);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id3);
counter.assertNone();
// passes filter
initializeContainer(container);
counter.reset();
item = container.addItem(id1);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id1);
counter.assertOnce();
container.removeItem(id1);
counter.assertOnce();
// already removed
container.removeItem(id1);
counter.assertNone();
item = container.addItem(id3);
counter.assertNone();
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id3);
counter.assertNone();
// not visible
container.removeItem(id3);
counter.assertNone();
// remove all
initializeContainer(container);
item = container.addItem(id1);
item.getItemProperty(FULLY_QUALIFIED_NAME).setValue(id1);
counter.reset();
container.removeAllItems();
counter.assertOnce();
// no visible items
container.removeAllItems();