public void TestGetSet() { IMultiMap <int, int> map = HashMultiMap <int, int> .Create(); map.Add(2, 3); map.Add(2, 4); map.Add(2, 5); System.Collections.Generic.ISet <int> set = map.GetSet(2); Assert.IsTrue(set.Contains(3)); Assert.IsTrue(set.Contains(4)); Assert.IsTrue(set.Contains(5)); }
/// <summary> /// Unregister the instance as subscriber. /// </summary> /// <Preconditions> /// @object is not null. /// The method Regiter is activated on the instance @object. /// </Preconditions> /// <param name="object">Instance to be unregistered</param> public void UnRegister(Object @object) { IMultiMap <Type, EventHandler> methodsInListener = finder.FindAllHandlers(@object); ISet <EventHandler> eventMethodsInListner = null; foreach (Type eventType in methodsInListener.Keys) { eventMethodsInListner = methodsInListener.GetSet(eventType); handlersByTypeLock.EnterWriteLock(); try { ISet <EventHandler> currentHandlers = handlersByType.GetSet(eventType); if (!eventMethodsInListner.IsSubsetOf(currentHandlers)) { throw new ArgumentException("missing event handlers for an annotated method. Is " + @object.ToString() + " registered?"); } currentHandlers.RemoveAll <EventHandler>(eventMethodsInListner); } finally { handlersByTypeLock.ExitWriteLock(); } } }