public void RaiseTest_1() { // Setup and constants String name = "event0"; IEvent ev = new Event(name); Boolean activated1 = false; ActivatorCallback onactivate1 = (self, signal) => { activated1 = true; }; Boolean activated2 = false; ActivatorCallback onactivate2 = (self, signal) => { activated2 = true; }; // Test proper IActivator sub1 = ev.Subscribe(onactivate1); IActivator sub2 = ev.Subscribe(onactivate2); sub1.SelfActivate = true; sub1.Raise(); // Assertions Assert.NotEqual(sub1.Name, sub2.Name); Assert.True(activated1); Assert.True(activated2); }
public void SubscriptionTest_1() { // Setup and constants String name = "event0"; // no relation to the video game IEvent ev = new Event(name); Boolean activated1 = false; Boolean disposed1 = false; ActivatorCallback onactivate1 = (self, signal) => { activated1 = true; }; Action <IActivator> onunsub1 = (self) => { disposed1 = true; }; // Test proper IActivator sub1 = ev.Subscribe(onactivate1); sub1.SelfActivate = true; sub1.OnUnsubscribe = onunsub1; sub1.Raise(); sub1.Unsubscribe(); // Assertions Assert.True(activated1); Assert.True(disposed1); }
public void BlockTest_1() { // Setup and constants String name = "event0"; IEvent ev = new Event(name); Boolean activated1 = false; ActivatorCallback onactivate1 = (self, signal) => { activated1 = self.Blocking; }; Boolean activated2 = false; ActivatorCallback onactivate2 = (self, signal) => { activated2 = true; }; // Test proper IActivator sub1 = ev.Subscribe(onactivate1); IActivator sub2 = ev.Subscribe(onactivate2); sub1.SelfActivate = false; // sub1 blocking should always make sub1 get the signal. sub1.Block(); sub1.Raise(); // Assertions Assert.NotEqual(sub1.Name, sub2.Name); Assert.True(activated1); Assert.False(activated2); }
public IActivator Subscribe(ActivatorCallback callback) { var config = new SubscriptionConfiguration() { OnActivate = callback, }; return(this.Subscribe(config)); }
public IActivator Intercept(ActivatorCallback callback) { ActivatorCallback cb = (self, signal) => { if (self.Blocking) { self.Unblock(); } else { self.Block(); callback.Invoke(self, signal); } }; var activator = this.Subscribe(cb); return(activator); }
public IActivator Intercept(EventScope scope, String callNext, ActivatorCallback callback) { ActivatorCallback cb = (self, signal) => { if (self.Blocking) { self.Unblock(); } else { self.Block(); callback.Invoke(self, signal); scope.Raise(callNext); } }; var activator = this.Subscribe(cb); return(activator); }
public void RaiseTest_2() { // Setup and constants String name = "event0"; IEvent ev = new Event(name); String message_name = "message"; Boolean message_content = true; IDataContainer data = new DataContainer(); data.Set(message_name, message_content); Boolean activated1 = false; ActivatorCallback onactivate1 = (self, signal) => { activated1 = true; }; Boolean activated2 = false; ActivatorCallback onactivate2 = (self, signal) => { signal.AssertData <Boolean>(message_name); activated2 = signal.GetData <Boolean>(message_name).Value; }; // Test proper IActivator sub1 = ev.Subscribe(onactivate1); IActivator sub2 = ev.Subscribe(onactivate2); sub1.SelfActivate = true; sub1.Raise(data); // Assertions Assert.NotEqual(sub1.Name, sub2.Name); Assert.True(activated1); Assert.True(activated2); }