public void TestFourArgSignal() { Signal <int, int, int, int> signal = new Signal <int, int, int, int>(); int intendedResult = ((testInt + testIntTwo) * testIntThree) - testIntFour; signal.AddListener(FourArgSignalCallback); signal.Dispatch(testInt, testIntTwo, testIntThree, testIntFour); Assert.AreEqual(intendedResult, testValue); signal.RemoveListener(FourArgSignalCallback); signal.Dispatch(testInt, testIntTwo, testIntThree, testIntFour); Assert.AreEqual(intendedResult, testValue); //no-op due to remove intendedResult += testInt; intendedResult += testIntTwo; intendedResult *= testIntThree; intendedResult -= testIntFour; signal.AddOnce(FourArgSignalCallback); signal.Dispatch(testInt, testIntTwo, testIntThree, testIntFour); Assert.AreEqual(intendedResult, testValue); signal.Dispatch(testInt, testIntTwo, testIntThree, testIntFour); Assert.AreEqual(intendedResult, testValue); //Add once should result in no-op }
public static void UpdateListener <A, B, C, D>(this Signal <A, B, C, D> signal, bool toAdd, Action <A, B, C, D> callback) { if (toAdd) { signal.AddListener(callback); } else { signal.RemoveListener(callback); } }
public void Signal_can_remove_delegates_from_listening() { var signal = new Signal(); var deleg = new Mock <Action>(); signal.AddListener(deleg.Object); signal.RemoveListener(deleg.Object); signal.Invoke(); deleg.is_not_called(); }
public void RemoveListener_NoType_ExpectsListenerRemoved() { Signal signal = new Signal(); signal.AddListener(NoArgSignalCallback); signal.Dispatch(); Assert.AreEqual(1, testValue); signal.RemoveListener(NoArgSignalCallback); signal.Dispatch(); Assert.AreEqual(1, testValue); }
public void TestRemoveListener() { Signal <int> signal = new Signal <int>(); signal.AddListener(OneArgSignalCallback); signal.Dispatch(testInt); Assert.AreEqual(testInt, testValue); signal.RemoveListener(OneArgSignalCallback); signal.Dispatch(testInt); Assert.AreEqual(testInt, testValue); }
public void Signal_with_parameters_can_remove_parameterless_listeners() { var parametrizedSignal = new Signal <bool>(); var parameter = true; var deleg = new Mock <Action>(); parametrizedSignal.AddListener(deleg.Object); parametrizedSignal.RemoveListener(deleg.Object); parametrizedSignal.Invoke(parameter); deleg.is_not_called(); }
public void Signal_RemoveListener_Success() { // Arrange var argsArray = new object[1]; var actual = 0; // Act var signal = new Signal(); signal.AddListener(ActionRuntime); signal.AddListener(ActionRuntime); signal.AddListenerOnce(ActionRuntimeOne); signal.AddListenerOnce(ActionRuntimeOne); signal.RemoveListener(ActionRuntime); signal.RemoveListener(ActionRuntimeOne); signal.Dispatch(argsArray); void ActionRuntime(ISignal target, object[] args) => actual++; void ActionRuntimeOne(ISignal target, object[] args) => actual++; //Assert Assert.AreEqual(2, actual); }
public void TestTwoArgSignal() { Signal <int, int> signal = new Signal <int, int>(); signal.AddListener(TwoArgSignalCallback); signal.Dispatch(testInt, testIntTwo); Assert.AreEqual(testInt + testIntTwo, testValue); signal.RemoveListener(TwoArgSignalCallback); signal.Dispatch(testInt, testIntTwo); Assert.AreEqual(testInt + testIntTwo, testValue); //Removed listener should have no-op signal.AddOnce(TwoArgSignalCallback); signal.Dispatch(testInt, testIntTwo); Assert.AreEqual((testInt + testIntTwo) * 2, testValue); signal.Dispatch(testInt, testIntTwo); Assert.AreEqual((testInt + testIntTwo) * 2, testValue); //addonce should result in no-op }
public void TestRemoveListenerDoesntBlowUpFour() { Signal <int, int, int, int> signal = new Signal <int, int, int, int>(); signal.RemoveListener(FourArgSignalCallback); }
public void TestRemoveListenerDoesntBlowUpOne() { Signal <int> signal = new Signal <int>(); signal.RemoveListener(OneArgSignalCallback); }
public void TestRemoveListenerDoesntBlowUp() { Signal signal = new Signal(); signal.RemoveListener(NoArgSignalCallback); }
void OnDisable() { signal.RemoveListener(this); }
private void Disconnect() => _signal?.RemoveListener(Restart);