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
}