private static void RegisterC3(ListenerManager_v2 <C1> manager, Listener listener) { manager.RegisterFor <C3>() .Register <EventArgs>(listener.Listen, (x, h) => x.Ev1 += h, (x, h) => x.Ev1 -= h) .RegisterProperty("V1", x => x.V1, listener.Listen, false) .RegisterProperty("V2", x => x.V2, listener.Listen, false); }
public void Test1() { Listener listener = new Listener(); ListenerManager_v2 <C1> manager = new ListenerManager_v2 <C1>(); List <int> registered = new List <int>(); manager.Registering += (sender, args) => { int id = ((Base)args.Item).Id; registered.Add(id); //Debug.WriteLine("Registering " + args.Item); }; manager.Unregistering += (sender, args) => { int id = ((Base)args.Item).Id; registered.Remove(id); //Debug.WriteLine("Unregistering " + args.Item); }; RegisterC1(manager, listener); RegisterC2(manager, listener); RegisterC3(manager, listener); C1 root = CreateTest(); // Se envian eventos cuando aun no esta conectado. SendEvent(root); Assert.IsTrue(registered.Count == 0); Assert.IsTrue(listener.PropertyArgs.Count == 0); Assert.IsTrue(listener.ListArgs.Count == 0); Assert.IsTrue(listener.OtherArgs.Count == 0); // Se establece la raiz. manager.SetRoot(root); Assert.IsTrue(registered.Count == 133); Assert.IsTrue(listener.PropertyArgs.Count == 0); Assert.IsTrue(listener.ListArgs.Count == 0); Assert.IsTrue(listener.OtherArgs.Count == 0); // Se envian eventos cuando ya esta conectado pero sin contenido. SendEvent(root); Assert.IsTrue(registered.Count == 133); Assert.IsTrue(listener.PropertyArgs.Count == 266); Assert.IsTrue(listener.ListArgs.Count == 0); Assert.IsTrue(listener.OtherArgs.Count == 133); listener.PropertyArgs.Clear(); listener.OtherArgs.Clear(); // Se elimina la raiz. manager.SetRoot(null); Assert.IsTrue(registered.Count == 0); Assert.IsTrue(listener.PropertyArgs.Count == 0); Assert.IsTrue(listener.ListArgs.Count == 0); Assert.IsTrue(listener.OtherArgs.Count == 0); // Se envian eventos cuando ya no esta conectado. SendEvent(root); Assert.IsTrue(registered.Count == 0); Assert.IsTrue(listener.PropertyArgs.Count == 0); Assert.IsTrue(listener.ListArgs.Count == 0); Assert.IsTrue(listener.OtherArgs.Count == 0); }