/** * Creates and attaches a mock listener. */ @SuppressWarnings("unchecked") // Mocking a generic private AnchorManager.Listener<Integer, Object> mockListener() { AnchorManager.Listener<Integer, Object> l = mock(AnchorManager.Listener.class); target.addListener(l); return l; }
public void testRemoveItemDetaches() { items.put("a", 1); target.attachParasite("a", parasites[0]); target.attachParasite("a", parasites[1]); target.attachParasite("b", parasites[2]); items.remove("a"); assertEquals(null, target.getAttached().get(1)); assertEquals(collection(parasites), // \u2620 CollectionUtils.newHashSet(target.getUnattached())); }
@Override protected void setUp() throws Exception { parasite = new Object(); parasites = new Object[3]; for (int i = 0; i < parasites.length; i++) { parasites[i] = new Object(); } ObservableMapImpl<String, Integer> map = ObservableMapImpl.create(); items = map; target = AnchorManager.<String, Integer, Object> create(map); }
/** * Creates an anchor manager. * * @param items map from location references to items in those locations. * @return a new anchor manager. */ public static <L, I, P> AnchorManager<L, I, P> create(ObservableMap<L, ? extends I> items) { AnchorManager<L, I, P> m = new AnchorManager<L, I, P>(items); m.init(); return m; }
/** * Detaches a parasite from a location, notifying listeners of the * {@link Listener#onDetached(Object, Collection) detachment} event. * * @param location * @param parasite */ public void detachParasite(L location, P parasite) { I item = locationResolver.get(location); if (item != null) { remove(attached, item, parasite); } else { remove(unattached, location, parasite); } triggerOnDetached(item, parasite); }
/** * Attaches a parasite at a location, notifying listeners of the * {@link Listener#onAttached(Object, Collection) attachment} event. * * @param location * @param parasite */ public void attachParasite(L location, P parasite) { // Does key point to something that exists yet? I item = locationResolver.get(location); if (item != null) { put(attached, item, parasite); } else { put(unattached, location, parasite); } triggerOnAttached(item, parasite); }
public void testAddManyNoItemParasitesMakesUnattached() { for (Object parasite : parasites) { target.attachParasite("a", parasite); } assertEquals(collection(parasites), collection(target.getUnattached())); }
public void testAddItemThenManyParasitesMakesAttached() { items.put("a", 1); for (Object parasite : parasites) { target.attachParasite("a", parasite); } assertEquals(collection(parasites), target.getAttached().get(1)); }
public void testRemoveParasiteFromMultiAttachedStateBroadcastsDetachEvents() { // Establish attached state before adding listener. target.attachParasite("a", parasites[0]); target.attachParasite("a", parasites[1]); target.attachParasite("b", parasites[2]); items.put("a", 1); AnchorManager.Listener<Integer, Object> listener = mockListener(); target.detachParasite("a", parasites[0]); verify(listener).onDetached(1, collection(parasites[0])); verifyNoMoreInteractions(listener); } }
public void testRemoveItemFromMultiAttachedStateBroadcastsDetachAttachEvents() { // Establish attached state before adding listener. target.attachParasite("a", parasites[0]); target.attachParasite("a", parasites[1]); target.attachParasite("b", parasites[2]); items.put("a", 1); AnchorManager.Listener<Integer, Object> listener = mockListener(); items.remove("a"); verify(listener).onDetached(1, collection(parasites[0], parasites[1])); verify(listener).onAttached(null, collection(parasites[0], parasites[1])); verifyNoMoreInteractions(listener); }
public void testAddManyNoItemParasitesMakesUnattached() { for (Object parasite : parasites) { target.attachParasite("a", parasite); } assertEquals(collection(parasites), collection(target.getUnattached())); }
public void testAddSingleParasiteThenItemMakesAttached() { target.attachParasite("a", parasite); items.put("a", 1); assertEquals(collection(parasite), target.getAttached().get(1)); }
public void testRemoveParasiteFromMultiAttachedStateBroadcastsDetachEvents() { // Establish attached state before adding listener. target.attachParasite("a", parasites[0]); target.attachParasite("a", parasites[1]); target.attachParasite("b", parasites[2]); items.put("a", 1); AnchorManager.Listener<Integer, Object> listener = mockListener(); target.detachParasite("a", parasites[0]); verify(listener).onDetached(1, collection(parasites[0])); verifyNoMoreInteractions(listener); } }
public void testRemoveItemFromMultiAttachedStateBroadcastsDetachAttachEvents() { // Establish attached state before adding listener. target.attachParasite("a", parasites[0]); target.attachParasite("a", parasites[1]); target.attachParasite("b", parasites[2]); items.put("a", 1); AnchorManager.Listener<Integer, Object> listener = mockListener(); items.remove("a"); verify(listener).onDetached(1, collection(parasites[0], parasites[1])); verify(listener).onAttached(null, collection(parasites[0], parasites[1])); verifyNoMoreInteractions(listener); }
public void testRemoveItemDetaches() { items.put("a", 1); target.attachParasite("a", parasites[0]); target.attachParasite("a", parasites[1]); target.attachParasite("b", parasites[2]); items.remove("a"); assertEquals(null, target.getAttached().get(1)); assertEquals(collection(parasites), // \u2620 CollectionUtils.newHashSet(target.getUnattached())); }
public void testAddManyNoLocationParasitesMakesUnattached() { for (Object parasite : parasites) { target.attachParasite(null, parasite); } assertEquals(collection(parasites), collection(target.getUnattached())); }
public void testAddSingleParasiteThenItemMakesAttached() { target.attachParasite("a", parasite); items.put("a", 1); assertEquals(collection(parasite), target.getAttached().get(1)); }
public void testRemoveAttachedParasiteBroadcastsDetachEvents() { // Establish attached state first. target.attachParasite("a", parasite); items.put("a", 1); AnchorManager.Listener<Integer, Object> listener = mockListener(); target.detachParasite("a", parasite); verify(listener).onDetached(1, collection(parasite)); verifyNoMoreInteractions(listener); }
public void testAddItemThenManyParasitesBroadcastsAttachEvents() { AnchorManager.Listener<Integer, Object> listener = mockListener(); items.put("a", 1); target.attachParasite("a", parasites[0]); target.attachParasite("a", parasites[1]); target.attachParasite("b", parasites[2]); verify(listener).onAttached(1, collection(parasites[0])); verify(listener).onAttached(1, collection(parasites[1])); verify(listener).onAttached(null, collection(parasites[2])); verifyNoMoreInteractions(listener); }
@Override protected void setUp() throws Exception { parasite = new Object(); parasites = new Object[3]; for (int i = 0; i < parasites.length; i++) { parasites[i] = new Object(); } ObservableMapImpl<String, Integer> map = ObservableMapImpl.create(); items = map; target = AnchorManager.<String, Integer, Object> create(map); }