public function testIsIdenticalTo() { $this->if($asserter = new sut($generator = new asserter\generator()))->then->boolean($asserter->wasSet())->isFalse()->exception(function () use($asserter) { $asserter->isIdenticalTo(rand(-PHP_INT_MAX, PHP_INT_MAX)); })->isInstanceOf('logicException')->hasMessage('Value is undefined')->if($asserter->setWith($value = rand(-PHP_INT_MAX, PHP_INT_MAX)))->then->object($asserter->isIdenticalTo($value))->isIdenticalTo($asserter)->if($diff = new diffs\variable())->then->exception(function () use($asserter, &$notIdenticalValue, $value) { $asserter->isIdenticalTo($notIdenticalValue = (string) $value); })->isInstanceOf('mageekguy\\atoum\\asserter\\exception')->hasMessage(sprintf($generator->getLocale()->_('%s is not identical to %s'), $asserter, $asserter->getTypeOf($notIdenticalValue)) . PHP_EOL . $diff->setExpected($notIdenticalValue)->setActual($asserter->getValue()))->exception(function () use($asserter, $notIdenticalValue, &$failMessage) { $asserter->isIdenticalTo($notIdenticalValue, $failMessage = uniqid()); })->isInstanceOf('mageekguy\\atoum\\asserter\\exception')->hasMessage($failMessage . PHP_EOL . $diff->setExpected($notIdenticalValue)->setActual($asserter->getValue())); }
protected function matches($actual) { if ($this->delta == null && $this->analyzer->isFloat($actual) === false && $this->analyzer->isFloat($this->expected) === false) { $asserter = new asserters\variable(null, $this->analyzer); if ($this->analyzer->isString($actual) && $this->ignoreCase) { $actual = strtolower($actual); } if ($this->analyzer->isArray($actual) && $this->canonicalize) { $actual = sort($actual); } $asserter->setWith($actual); if ($actual === 0 && $this->expected == '' || $actual == '' && $this->expected === 0) { $asserter->isIdenticalTo($this->expected); } else { $expected = $this->expected; if ($this->analyzer->isString($expected) && $this->ignoreCase) { $expected = strtolower($expected); } if ($this->analyzer->isArray($expected) && $this->canonicalize) { $expected = sort($expected); } $asserter->isEqualTo($expected); } } else { $asserter = new asserters\phpFloat(null, $this->analyzer); $asserter->setWith((double) $actual)->isNearlyEqualTo((double) $this->expected, $this->delta); } }