public void ChangedEmitted()
        {
            MockAction actionA = containingObject.AddComponent <MockAction>();
            MockAction actionB = containingObject.AddComponent <MockAction>();

            actionA.SetIsActivated(false);
            actionB.SetIsActivated(false);

            subject.Actions.Add(actionA);
            subject.Actions.Add(actionB);

            UnityEventListenerMock changedListenerMock = new UnityEventListenerMock();

            subject.ValueChanged.AddListener(changedListenerMock.Listen);

            Assert.IsFalse(changedListenerMock.Received);

            actionA.SetIsActivated(true);
            actionB.SetIsActivated(true);

            Assert.IsTrue(changedListenerMock.Received);
            changedListenerMock.Reset();

            actionA.SetIsActivated(false);
            actionB.SetIsActivated(true);

            Assert.IsFalse(changedListenerMock.Received);
            changedListenerMock.Reset();

            actionA.SetIsActivated(false);
            actionB.SetIsActivated(false);

            Assert.IsTrue(changedListenerMock.Received);
            changedListenerMock.Reset();

            actionA.SetIsActivated(true);
            actionB.SetIsActivated(false);

            Assert.IsTrue(changedListenerMock.Received);
            changedListenerMock.Reset();

            actionA.SetIsActivated(true);
            actionB.SetIsActivated(true);

            Assert.IsFalse(changedListenerMock.Received);
        }
        public void RemoveActionListenersCorrectly()
        {
            subject.enabled = false;

            GameObject otherObject = new GameObject();
            MockAction actionA     = otherObject.AddComponent <MockAction>();
            MockAction actionB     = otherObject.AddComponent <MockAction>();

            actionA.SetIsActivated(false);
            actionB.SetIsActivated(false);

            subject.Actions.Add(actionA);
            subject.Actions.Add(actionB);

            subject.enabled = true;

            Object.DestroyImmediate(otherObject);

            subject.enabled = false;
        }