- phpunit custom asserts help needed
- require_once 'PHPUnit/Framework/Assert.php';
- include_once getcwd().'/custom/Complex.php';
- class complexAssert extends PHPUnit_Framework_Assert {
- public function assertComplexEquals($expected, $actual, $message = '', $delta = 0)
- {
- $expectedComplex = new Complex($expected);
- $actualComplex = new Complex($actual);
- if (!($actualComplex->getReal() >= ($expectedComplex - $delta) &&
- $actualComplex->getReal() <= ($expectedComplex + $delta))) {
- return $this->fail($message);
- }
- if (!($actualComplex->getImaginary() >= ($expectedComplex - $delta) &&
- $actualComplex->getImaginary() <= ($expectedComplex + $delta))) {
- return $this->fail($message);
- }
- }
- }
- require_once getcwd().'/custom/complexAssert.php';
- require_once 'testDataFileIterator.php';
- class EngineeringTest extends PHPUnit_Framework_TestCase
- {
- /**
- * @dataProvider providerIMSUM
- */
- public function testIMSUM()
- {
- $args = func_get_args();
- $expectedResult = array_pop($args);
- $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSUM'),$args);
- $this->assertComplexEquals($expectedResult, $result);
- }
- public function providerIMSUM()
- {
- return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSUM.data');
- }
- }
- include_once __DIR__.'/Complex.php';
- class complexAssert {
- private $_errorMessage = '';
- public function assertComplexEquals($expected, $actual, $delta = 0)
- {
- $expectedComplex = new Complex($expected);
- $actualComplex = new Complex($actual);
- if ($actualComplex->getReal() < ($expectedComplex->getReal() - $delta) ||
- $actualComplex->getReal() > ($expectedComplex->getReal() + $delta)) {
- $this->_errorMessage = 'Mismatched Real part: ' .
- $actualComplex->getReal() .
- ' !== ' .
- $expectedComplex->getReal();
- return FALSE;
- }
- if ($actualComplex->getImaginary() < ($expectedComplex->getImaginary() - $delta) ||
- $actualComplex->getImaginary() > ($expectedComplex->getImaginary() + $delta)) {
- $this->_errorMessage = 'Mismatched Imaginary part: ' .
- $actualComplex->getImaginary() .
- ' !== ' .
- $expectedComplex->getImaginary();
- return FALSE;
- }
- return TRUE;
- }
- public function getErrorMessage() {
- return $this->_errorMessage;
- }
- }
- // Custom assertion class for handling precision of Complex numbers
- require_once __DIR__.'/../../custom/complexAssert.php';
- // Data Provider handler
- require_once 'testDataFileIterator.php';
- class EngineeringTest extends PHPUnit_Framework_TestCase
- {
- /**
- * @dataProvider providerIMSUM
- */
- public function testIMSUM()
- {
- $args = func_get_args();
- $expectedResult = array_pop($args);
- $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSUM'),$args);
- $complexAssert = new complexAssert();
- $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8),
- $complexAssert->getErrorMessage());
- }
- public function providerIMSUM()
- {
- return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSUM.data');
- }
- }
- 3) EngineeringTest::testIMSUB with data set #7 ('-12.34-5.67i', '-123.45-67.89', '#NUM!')
- Mismatched String: 111.11 !== #NUM!
- Failed asserting that false is true.