Assert that toTest is equal to toCompareAgainst. If T is a floating point approxEqual is used to compare the values. toTest is returned if the comparision is correct. If the comparision is incorrect an Exception is thrown. If assertEqual is used in a unittest block an AssertError is thrown an Exception otherwise.
Calls exp if exp does not throw the return value from exp is returned, if exp throws the Exception is cought, a new Exception is constructed with a message made of args space seperated and the previously cought exception is nested in the newly created exception.