public void RelayedEventAttribute_MultipleGoverningClassTest() { var receivedEvents = new ObservableIndexer<string, int>(_ => 0); var governing1 = new GoverningClass1(); var governing2 = new GoverningClass2(); var relaying = new RelayingClass(governing1, governing2); relaying.PropertyChanged += (sender, e) => receivedEvents[e.PropertyName] += 1; governing1.Value = 5; Assert.AreEqual(5, relaying.Value); Assert.AreEqual(0, relaying.MyOtherValue); Assert.AreEqual(1, receivedEvents.Count); Assert.AreEqual(1, receivedEvents["Value"]); governing1.Value = 7; Assert.AreEqual(7, relaying.Value); Assert.AreEqual(0, relaying.MyOtherValue); Assert.AreEqual(1, receivedEvents.Count); Assert.AreEqual(2, receivedEvents["Value"]); // Governing2.Value is not relayed, changes should not generate relayed events governing2.Value = 8; Assert.AreEqual(7, relaying.Value); Assert.AreEqual(0, relaying.MyOtherValue); Assert.AreEqual(1, receivedEvents.Count); Assert.AreEqual(2, receivedEvents["Value"]); governing2.OtherValue = 8; Assert.AreEqual(7, relaying.Value); Assert.AreEqual(8, relaying.MyOtherValue); Assert.AreEqual(2, receivedEvents.Count); Assert.AreEqual(2, receivedEvents["Value"]); Assert.AreEqual(1, receivedEvents["MyOtherValue"]); }
public void RelayedEventAttribute_SingleGoverningClassTest() { var receivedEvents = new ObservableIndexer<string, int>(_ => 0); var governing = new GoverningClass1(); var relaying = new RelayingClass(governing); relaying.PropertyChanged += (sender, e) => receivedEvents[e.PropertyName] += 1; governing.Value = 5; Assert.AreEqual(5, relaying.Value); Assert.AreEqual(1, receivedEvents.Count); Assert.AreEqual(1, receivedEvents["Value"]); governing.Value = 7; Assert.AreEqual(7, relaying.Value); Assert.AreEqual(1, receivedEvents.Count); Assert.AreEqual(2, receivedEvents["Value"]); }