RemoveListener() публичный Метод

public RemoveListener ( Action callback ) : void
callback Action
Результат void
Пример #1
0
        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);
     }
 }
Пример #3
0
        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();
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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();
        }
Пример #7
0
    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);
    }
Пример #8
0
        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
        }
Пример #9
0
        public void TestRemoveListenerDoesntBlowUpFour()
        {
            Signal <int, int, int, int> signal = new Signal <int, int, int, int>();

            signal.RemoveListener(FourArgSignalCallback);
        }
Пример #10
0
        public void TestRemoveListenerDoesntBlowUpOne()
        {
            Signal <int> signal = new Signal <int>();

            signal.RemoveListener(OneArgSignalCallback);
        }
Пример #11
0
        public void TestRemoveListenerDoesntBlowUp()
        {
            Signal signal = new Signal();

            signal.RemoveListener(NoArgSignalCallback);
        }
Пример #12
0
 void OnDisable()
 {
     signal.RemoveListener(this);
 }
Пример #13
0
 private void Disconnect() => _signal?.RemoveListener(Restart);