Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 5th, 2012  |  syntax: None  |  size: 3.67 KB  |  hits: 9  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. phpunit custom asserts help needed
  2. require_once 'PHPUnit/Framework/Assert.php';
  3. include_once getcwd().'/custom/Complex.php';
  4.  
  5. class complexAssert extends PHPUnit_Framework_Assert {
  6.  
  7.     public function assertComplexEquals($expected, $actual, $message = '', $delta = 0)
  8.     {
  9.         $expectedComplex = new Complex($expected);
  10.         $actualComplex = new Complex($actual);
  11.  
  12.         if (!($actualComplex->getReal() >= ($expectedComplex - $delta) &&
  13.             $actualComplex->getReal() <= ($expectedComplex + $delta))) {
  14.             return $this->fail($message);
  15.         }
  16.  
  17.         if (!($actualComplex->getImaginary() >= ($expectedComplex - $delta) &&
  18.             $actualComplex->getImaginary() <= ($expectedComplex + $delta))) {
  19.             return $this->fail($message);
  20.         }
  21.  
  22.     }
  23. }
  24.        
  25. require_once getcwd().'/custom/complexAssert.php';
  26. require_once 'testDataFileIterator.php';
  27.  
  28. class EngineeringTest extends PHPUnit_Framework_TestCase
  29. {
  30.     /**
  31.      * @dataProvider providerIMSUM
  32.      */
  33.     public function testIMSUM()
  34.     {
  35.         $args = func_get_args();
  36.         $expectedResult = array_pop($args);
  37.         $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSUM'),$args);
  38.         $this->assertComplexEquals($expectedResult, $result);
  39.     }
  40.  
  41.     public function providerIMSUM()
  42.     {
  43.         return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSUM.data');
  44.     }
  45. }
  46.        
  47. include_once __DIR__.'/Complex.php';
  48.  
  49. class complexAssert {
  50.  
  51.     private $_errorMessage = '';
  52.  
  53.     public function assertComplexEquals($expected, $actual, $delta = 0)
  54.     {
  55.         $expectedComplex = new Complex($expected);
  56.         $actualComplex = new Complex($actual);
  57.  
  58.         if ($actualComplex->getReal() < ($expectedComplex->getReal() - $delta) ||
  59.             $actualComplex->getReal() > ($expectedComplex->getReal() + $delta)) {
  60.             $this->_errorMessage = 'Mismatched Real part: ' .
  61.                                    $actualComplex->getReal() .
  62.                                    ' !== ' .
  63.                                    $expectedComplex->getReal();
  64.             return FALSE;
  65.         }
  66.  
  67.         if ($actualComplex->getImaginary() < ($expectedComplex->getImaginary() - $delta) ||
  68.             $actualComplex->getImaginary() > ($expectedComplex->getImaginary() + $delta)) {
  69.             $this->_errorMessage = 'Mismatched Imaginary part: ' .
  70.                                    $actualComplex->getImaginary() .
  71.                                    ' !== ' .
  72.                                    $expectedComplex->getImaginary();
  73.             return FALSE;
  74.         }
  75.  
  76.         return TRUE;
  77.     }
  78.  
  79.     public function getErrorMessage() {
  80.         return $this->_errorMessage;
  81.     }
  82. }
  83.        
  84. //  Custom assertion class for handling precision of Complex numbers
  85. require_once __DIR__.'/../../custom/complexAssert.php';
  86. //  Data Provider handler
  87. require_once 'testDataFileIterator.php';
  88.  
  89. class EngineeringTest extends PHPUnit_Framework_TestCase
  90. {
  91.     /**
  92.      * @dataProvider providerIMSUM
  93.      */
  94.     public function testIMSUM()
  95.     {
  96.         $args = func_get_args();
  97.         $expectedResult = array_pop($args);
  98.         $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSUM'),$args);
  99.         $complexAssert = new complexAssert();
  100.         $this->assertTrue($complexAssert->assertComplexEquals($expectedResult, $result, 1E-8),
  101.                           $complexAssert->getErrorMessage());
  102.     }
  103.  
  104.     public function providerIMSUM()
  105.     {
  106.         return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSUM.data');
  107.     }
  108. }
  109.        
  110. 3) EngineeringTest::testIMSUB with data set #7 ('-12.34-5.67i', '-123.45-67.89', '#NUM!')
  111. Mismatched String: 111.11 !== #NUM!
  112. Failed asserting that false is true.