public void DeactivatedEmitted() { subject.SetIsActivated(true); subject.SetValue(true); MockAction actionA = containingObject.AddComponent <MockAction>(); MockAction actionB = containingObject.AddComponent <MockAction>(); actionA.SetIsActivated(true); actionB.SetIsActivated(true); subject.actions.Add(actionA); subject.actions.Add(actionB); UnityEventListenerMock activatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock deactivatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); subject.Activated.AddListener(activatedListenerMock.Listen); subject.Deactivated.AddListener(deactivatedListenerMock.Listen); subject.ValueChanged.AddListener(changedListenerMock.Listen); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); subject.ManualUpdate(); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); actionA.SetIsActivated(false); actionB.SetIsActivated(true); subject.ManualUpdate(); Assert.IsFalse(activatedListenerMock.Received); Assert.IsTrue(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); }