/vendor/phpunit/phpunit/tests/Framework/AssertTest.php

https://gitlab.com/ealexis.t/trends · PHP · 1743 lines · 1127 code · 243 blank · 373 comment · 0 complexity · 5ced81e7a7b8430a48c8d4d38ef26d22 MD5 · raw file

  1. <?php
  2. /*
  3. * This file is part of PHPUnit.
  4. *
  5. * (c) Sebastian Bergmann <sebastian@phpunit.de>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. /**
  11. * @since Class available since Release 2.0.0
  12. */
  13. class Framework_AssertTest extends PHPUnit_Framework_TestCase
  14. {
  15. /**
  16. * @var string
  17. */
  18. private $filesDirectory;
  19. protected function setUp()
  20. {
  21. $this->filesDirectory = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR;
  22. }
  23. /**
  24. * @covers PHPUnit_Framework_Assert::fail
  25. */
  26. public function testFail()
  27. {
  28. try {
  29. $this->fail();
  30. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  31. return;
  32. }
  33. throw new PHPUnit_Framework_AssertionFailedError('Fail did not throw fail exception');
  34. }
  35. /**
  36. * @covers PHPUnit_Framework_Assert::assertContains
  37. */
  38. public function testAssertSplObjectStorageContainsObject()
  39. {
  40. $a = new stdClass;
  41. $b = new stdClass;
  42. $c = new SplObjectStorage;
  43. $c->attach($a);
  44. $this->assertContains($a, $c);
  45. try {
  46. $this->assertContains($b, $c);
  47. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  48. return;
  49. }
  50. $this->fail();
  51. }
  52. /**
  53. * @covers PHPUnit_Framework_Assert::assertContains
  54. */
  55. public function testAssertArrayContainsObject()
  56. {
  57. $a = new stdClass;
  58. $b = new stdClass;
  59. $this->assertContains($a, array($a));
  60. try {
  61. $this->assertContains($a, array($b));
  62. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  63. return;
  64. }
  65. $this->fail();
  66. }
  67. /**
  68. * @covers PHPUnit_Framework_Assert::assertContains
  69. */
  70. public function testAssertArrayContainsString()
  71. {
  72. $this->assertContains('foo', array('foo'));
  73. try {
  74. $this->assertContains('foo', array('bar'));
  75. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  76. return;
  77. }
  78. $this->fail();
  79. }
  80. /**
  81. * @covers PHPUnit_Framework_Assert::assertContains
  82. */
  83. public function testAssertArrayContainsNonObject()
  84. {
  85. $this->assertContains('foo', array(true));
  86. try {
  87. $this->assertContains('foo', array(true), '', false, true, true);
  88. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  89. return;
  90. }
  91. $this->fail();
  92. }
  93. /**
  94. * @covers PHPUnit_Framework_Assert::assertContainsOnlyInstancesOf
  95. */
  96. public function testAssertContainsOnlyInstancesOf()
  97. {
  98. $test = array(
  99. new Book(),
  100. new Book
  101. );
  102. $this->assertContainsOnlyInstancesOf('Book', $test);
  103. $this->assertContainsOnlyInstancesOf('stdClass', array(new stdClass()));
  104. $test2 = array(
  105. new Author('Test')
  106. );
  107. try {
  108. $this->assertContainsOnlyInstancesOf('Book', $test2);
  109. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  110. return;
  111. }
  112. $this->fail();
  113. }
  114. /**
  115. * @covers PHPUnit_Framework_Assert::assertArrayHasKey
  116. * @expectedException PHPUnit_Framework_Exception
  117. */
  118. public function testAssertArrayHasKeyThrowsExceptionForInvalidFirstArgument()
  119. {
  120. $this->assertArrayHasKey(null, array());
  121. }
  122. /**
  123. * @covers PHPUnit_Framework_Assert::assertArrayHasKey
  124. * @expectedException PHPUnit_Framework_Exception
  125. */
  126. public function testAssertArrayHasKeyThrowsExceptionForInvalidSecondArgument()
  127. {
  128. $this->assertArrayHasKey(0, null);
  129. }
  130. /**
  131. * @covers PHPUnit_Framework_Assert::assertArrayHasKey
  132. */
  133. public function testAssertArrayHasIntegerKey()
  134. {
  135. $this->assertArrayHasKey(0, array('foo'));
  136. try {
  137. $this->assertArrayHasKey(1, array('foo'));
  138. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  139. return;
  140. }
  141. $this->fail();
  142. }
  143. /**
  144. * @covers PHPUnit_Framework_Assert::assertArraySubset
  145. * @covers PHPUnit_Framework_Constraint_ArraySubset
  146. */
  147. public function testAssertArraySubset()
  148. {
  149. $array = array(
  150. 'a' => 'item a',
  151. 'b' => 'item b',
  152. 'c' => array('a2' => 'item a2', 'b2' => 'item b2'),
  153. 'd' => array('a2' => array('a3' => 'item a3', 'b3' => 'item b3'))
  154. );
  155. $this->assertArraySubset(array('a' => 'item a', 'c' => array('a2' => 'item a2')), $array);
  156. $this->assertArraySubset(array('a' => 'item a', 'd' => array('a2' => array('b3' => 'item b3'))), $array);
  157. try {
  158. $this->assertArraySubset(array('a' => 'bad value'), $array);
  159. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  160. }
  161. try {
  162. $this->assertArraySubset(array('d' => array('a2' => array('bad index' => 'item b3'))), $array);
  163. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  164. return;
  165. }
  166. $this->fail();
  167. }
  168. /**
  169. * @covers PHPUnit_Framework_Assert::assertArraySubset
  170. * @covers PHPUnit_Framework_Constraint_ArraySubset
  171. */
  172. public function testAssertArraySubsetWithDeepNestedArrays()
  173. {
  174. $array = array(
  175. 'path' => array(
  176. 'to' => array(
  177. 'the' => array(
  178. 'cake' => 'is a lie'
  179. )
  180. )
  181. )
  182. );
  183. $this->assertArraySubset(array('path' => array()), $array);
  184. $this->assertArraySubset(array('path' => array('to' => array())), $array);
  185. $this->assertArraySubset(array('path' => array('to' => array('the' => array()))), $array);
  186. $this->assertArraySubset(array('path' => array('to' => array('the' => array('cake' => 'is a lie')))), $array);
  187. try {
  188. $this->assertArraySubset(array('path' => array('to' => array('the' => array('cake' => 'is not a lie')))), $array);
  189. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  190. return;
  191. }
  192. $this->fail();
  193. }
  194. /**
  195. * @covers PHPUnit_Framework_Assert::assertArraySubset
  196. * @covers PHPUnit_Framework_Constraint_ArraySubset
  197. */
  198. public function testAssertArraySubsetWithNoStrictCheckAndObjects()
  199. {
  200. $obj = new \stdClass;
  201. $reference = &$obj;
  202. $array = array('a' => $obj);
  203. $this->assertArraySubset(array('a' => $reference), $array);
  204. $this->assertArraySubset(array('a' => new \stdClass), $array);
  205. }
  206. /**
  207. * @covers PHPUnit_Framework_Assert::assertArraySubset
  208. * @covers PHPUnit_Framework_Constraint_ArraySubset
  209. */
  210. public function testAssertArraySubsetWithStrictCheckAndObjects()
  211. {
  212. $obj = new \stdClass;
  213. $reference = &$obj;
  214. $array = array('a' => $obj);
  215. $this->assertArraySubset(array('a' => $reference), $array, true);
  216. try {
  217. $this->assertArraySubset(array('a' => new \stdClass), $array, true);
  218. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  219. return;
  220. }
  221. $this->fail('Strict recursive array check fail.');
  222. }
  223. /**
  224. * @covers PHPUnit_Framework_Assert::assertArraySubset
  225. * @covers PHPUnit_Framework_Constraint_ArraySubset
  226. * @expectedException PHPUnit_Framework_Exception
  227. * @expectedExceptionMessage array or ArrayAccess
  228. * @dataProvider assertArraySubsetInvalidArgumentProvider
  229. */
  230. public function testAssertArraySubsetRaisesExceptionForInvalidArguments($partial, $subject)
  231. {
  232. $this->assertArraySubset($partial, $subject);
  233. }
  234. /**
  235. * @return array
  236. */
  237. public function assertArraySubsetInvalidArgumentProvider()
  238. {
  239. return array(
  240. array(false, array()),
  241. array(array(), false),
  242. );
  243. }
  244. /**
  245. * @covers PHPUnit_Framework_Assert::assertArrayNotHasKey
  246. * @expectedException PHPUnit_Framework_Exception
  247. */
  248. public function testAssertArrayNotHasKeyThrowsExceptionForInvalidFirstArgument()
  249. {
  250. $this->assertArrayNotHasKey(null, array());
  251. }
  252. /**
  253. * @covers PHPUnit_Framework_Assert::assertArrayNotHasKey
  254. * @expectedException PHPUnit_Framework_Exception
  255. */
  256. public function testAssertArrayNotHasKeyThrowsExceptionForInvalidSecondArgument()
  257. {
  258. $this->assertArrayNotHasKey(0, null);
  259. }
  260. /**
  261. * @covers PHPUnit_Framework_Assert::assertArrayNotHasKey
  262. */
  263. public function testAssertArrayNotHasIntegerKey()
  264. {
  265. $this->assertArrayNotHasKey(1, array('foo'));
  266. try {
  267. $this->assertArrayNotHasKey(0, array('foo'));
  268. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  269. return;
  270. }
  271. $this->fail();
  272. }
  273. /**
  274. * @covers PHPUnit_Framework_Assert::assertArrayHasKey
  275. */
  276. public function testAssertArrayHasStringKey()
  277. {
  278. $this->assertArrayHasKey('foo', array('foo' => 'bar'));
  279. try {
  280. $this->assertArrayHasKey('bar', array('foo' => 'bar'));
  281. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  282. return;
  283. }
  284. $this->fail();
  285. }
  286. /**
  287. * @covers PHPUnit_Framework_Assert::assertArrayNotHasKey
  288. */
  289. public function testAssertArrayNotHasStringKey()
  290. {
  291. $this->assertArrayNotHasKey('bar', array('foo' => 'bar'));
  292. try {
  293. $this->assertArrayNotHasKey('foo', array('foo' => 'bar'));
  294. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  295. return;
  296. }
  297. $this->fail();
  298. }
  299. /**
  300. * @covers PHPUnit_Framework_Assert::assertArrayHasKey
  301. */
  302. public function testAssertArrayHasKeyAcceptsArrayObjectValue()
  303. {
  304. $array = new ArrayObject();
  305. $array['foo'] = 'bar';
  306. $this->assertArrayHasKey('foo', $array);
  307. }
  308. /**
  309. * @covers PHPUnit_Framework_Assert::assertArrayHasKey
  310. * @expectedException PHPUnit_Framework_AssertionFailedError
  311. */
  312. public function testAssertArrayHasKeyProperlyFailsWithArrayObjectValue()
  313. {
  314. $array = new ArrayObject();
  315. $array['bar'] = 'bar';
  316. $this->assertArrayHasKey('foo', $array);
  317. }
  318. /**
  319. * @covers PHPUnit_Framework_Assert::assertArrayHasKey
  320. */
  321. public function testAssertArrayHasKeyAcceptsArrayAccessValue()
  322. {
  323. $array = new SampleArrayAccess();
  324. $array['foo'] = 'bar';
  325. $this->assertArrayHasKey('foo', $array);
  326. }
  327. /**
  328. * @covers PHPUnit_Framework_Assert::assertArrayHasKey
  329. * @expectedException PHPUnit_Framework_AssertionFailedError
  330. */
  331. public function testAssertArrayHasKeyProperlyFailsWithArrayAccessValue()
  332. {
  333. $array = new SampleArrayAccess();
  334. $array['bar'] = 'bar';
  335. $this->assertArrayHasKey('foo', $array);
  336. }
  337. /**
  338. * @covers PHPUnit_Framework_Assert::assertArrayNotHasKey
  339. */
  340. public function testAssertArrayNotHasKeyAcceptsArrayAccessValue()
  341. {
  342. $array = new ArrayObject();
  343. $array['foo'] = 'bar';
  344. $this->assertArrayNotHasKey('bar', $array);
  345. }
  346. /**
  347. * @covers PHPUnit_Framework_Assert::assertArrayNotHasKey
  348. * @expectedException PHPUnit_Framework_AssertionFailedError
  349. */
  350. public function testAssertArrayNotHasKeyPropertlyFailsWithArrayAccessValue()
  351. {
  352. $array = new ArrayObject();
  353. $array['bar'] = 'bar';
  354. $this->assertArrayNotHasKey('bar', $array);
  355. }
  356. /**
  357. * @covers PHPUnit_Framework_Assert::assertContains
  358. * @expectedException PHPUnit_Framework_Exception
  359. */
  360. public function testAssertContainsThrowsException()
  361. {
  362. $this->assertContains(null, null);
  363. }
  364. /**
  365. * @covers PHPUnit_Framework_Assert::assertContains
  366. */
  367. public function testAssertIteratorContainsObject()
  368. {
  369. $foo = new stdClass;
  370. $this->assertContains($foo, new TestIterator(array($foo)));
  371. try {
  372. $this->assertContains($foo, new TestIterator(array(new stdClass)));
  373. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  374. return;
  375. }
  376. $this->fail();
  377. }
  378. /**
  379. * @covers PHPUnit_Framework_Assert::assertContains
  380. */
  381. public function testAssertIteratorContainsString()
  382. {
  383. $this->assertContains('foo', new TestIterator(array('foo')));
  384. try {
  385. $this->assertContains('foo', new TestIterator(array('bar')));
  386. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  387. return;
  388. }
  389. $this->fail();
  390. }
  391. /**
  392. * @covers PHPUnit_Framework_Assert::assertContains
  393. */
  394. public function testAssertStringContainsString()
  395. {
  396. $this->assertContains('foo', 'foobar');
  397. try {
  398. $this->assertContains('foo', 'bar');
  399. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  400. return;
  401. }
  402. $this->fail();
  403. }
  404. /**
  405. * @covers PHPUnit_Framework_Assert::assertNotContains
  406. * @expectedException PHPUnit_Framework_Exception
  407. */
  408. public function testAssertNotContainsThrowsException()
  409. {
  410. $this->assertNotContains(null, null);
  411. }
  412. /**
  413. * @covers PHPUnit_Framework_Assert::assertNotContains
  414. */
  415. public function testAssertSplObjectStorageNotContainsObject()
  416. {
  417. $a = new stdClass;
  418. $b = new stdClass;
  419. $c = new SplObjectStorage;
  420. $c->attach($a);
  421. $this->assertNotContains($b, $c);
  422. try {
  423. $this->assertNotContains($a, $c);
  424. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  425. return;
  426. }
  427. $this->fail();
  428. }
  429. /**
  430. * @covers PHPUnit_Framework_Assert::assertNotContains
  431. */
  432. public function testAssertArrayNotContainsObject()
  433. {
  434. $a = new stdClass;
  435. $b = new stdClass;
  436. $this->assertNotContains($a, array($b));
  437. try {
  438. $this->assertNotContains($a, array($a));
  439. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  440. return;
  441. }
  442. $this->fail();
  443. }
  444. /**
  445. * @covers PHPUnit_Framework_Assert::assertNotContains
  446. */
  447. public function testAssertArrayNotContainsString()
  448. {
  449. $this->assertNotContains('foo', array('bar'));
  450. try {
  451. $this->assertNotContains('foo', array('foo'));
  452. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  453. return;
  454. }
  455. $this->fail();
  456. }
  457. /**
  458. * @covers PHPUnit_Framework_Assert::assertNotContains
  459. */
  460. public function testAssertArrayNotContainsNonObject()
  461. {
  462. $this->assertNotContains('foo', array(true), '', false, true, true);
  463. try {
  464. $this->assertNotContains('foo', array(true));
  465. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  466. return;
  467. }
  468. $this->fail();
  469. }
  470. /**
  471. * @covers PHPUnit_Framework_Assert::assertNotContains
  472. */
  473. public function testAssertStringNotContainsString()
  474. {
  475. $this->assertNotContains('foo', 'bar');
  476. try {
  477. $this->assertNotContains('foo', 'foo');
  478. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  479. return;
  480. }
  481. $this->fail();
  482. }
  483. /**
  484. * @covers PHPUnit_Framework_Assert::assertContainsOnly
  485. * @expectedException PHPUnit_Framework_Exception
  486. */
  487. public function testAssertContainsOnlyThrowsException()
  488. {
  489. $this->assertContainsOnly(null, null);
  490. }
  491. /**
  492. * @covers PHPUnit_Framework_Assert::assertNotContainsOnly
  493. * @expectedException PHPUnit_Framework_Exception
  494. */
  495. public function testAssertNotContainsOnlyThrowsException()
  496. {
  497. $this->assertNotContainsOnly(null, null);
  498. }
  499. /**
  500. * @covers PHPUnit_Framework_Assert::assertContainsOnlyInstancesOf
  501. * @expectedException PHPUnit_Framework_Exception
  502. */
  503. public function testAssertContainsOnlyInstancesOfThrowsException()
  504. {
  505. $this->assertContainsOnlyInstancesOf(null, null);
  506. }
  507. /**
  508. * @covers PHPUnit_Framework_Assert::assertContainsOnly
  509. */
  510. public function testAssertArrayContainsOnlyIntegers()
  511. {
  512. $this->assertContainsOnly('integer', array(1, 2, 3));
  513. try {
  514. $this->assertContainsOnly('integer', array('1', 2, 3));
  515. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  516. return;
  517. }
  518. $this->fail();
  519. }
  520. /**
  521. * @covers PHPUnit_Framework_Assert::assertNotContainsOnly
  522. */
  523. public function testAssertArrayNotContainsOnlyIntegers()
  524. {
  525. $this->assertNotContainsOnly('integer', array('1', 2, 3));
  526. try {
  527. $this->assertNotContainsOnly('integer', array(1, 2, 3));
  528. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  529. return;
  530. }
  531. $this->fail();
  532. }
  533. /**
  534. * @covers PHPUnit_Framework_Assert::assertContainsOnly
  535. */
  536. public function testAssertArrayContainsOnlyStdClass()
  537. {
  538. $this->assertContainsOnly('StdClass', array(new stdClass));
  539. try {
  540. $this->assertContainsOnly('StdClass', array('StdClass'));
  541. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  542. return;
  543. }
  544. $this->fail();
  545. }
  546. /**
  547. * @covers PHPUnit_Framework_Assert::assertNotContainsOnly
  548. */
  549. public function testAssertArrayNotContainsOnlyStdClass()
  550. {
  551. $this->assertNotContainsOnly('StdClass', array('StdClass'));
  552. try {
  553. $this->assertNotContainsOnly('StdClass', array(new stdClass));
  554. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  555. return;
  556. }
  557. $this->fail();
  558. }
  559. protected function sameValues()
  560. {
  561. $object = new SampleClass(4, 8, 15);
  562. // cannot use $filesDirectory, because neither setUp() nor
  563. // setUpBeforeClass() are executed before the data providers
  564. $file = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'foo.xml';
  565. $resource = fopen($file, 'r');
  566. return array(
  567. // null
  568. array(null, null),
  569. // strings
  570. array('a', 'a'),
  571. // integers
  572. array(0, 0),
  573. // floats
  574. array(2.3, 2.3),
  575. array(1/3, 1 - 2/3),
  576. array(log(0), log(0)),
  577. // arrays
  578. array(array(), array()),
  579. array(array(0 => 1), array(0 => 1)),
  580. array(array(0 => null), array(0 => null)),
  581. array(array('a', 'b' => array(1, 2)), array('a', 'b' => array(1, 2))),
  582. // objects
  583. array($object, $object),
  584. // resources
  585. array($resource, $resource),
  586. );
  587. }
  588. protected function notEqualValues()
  589. {
  590. // cyclic dependencies
  591. $book1 = new Book;
  592. $book1->author = new Author('Terry Pratchett');
  593. $book1->author->books[] = $book1;
  594. $book2 = new Book;
  595. $book2->author = new Author('Terry Pratch');
  596. $book2->author->books[] = $book2;
  597. $book3 = new Book;
  598. $book3->author = 'Terry Pratchett';
  599. $book4 = new stdClass;
  600. $book4->author = 'Terry Pratchett';
  601. $object1 = new SampleClass(4, 8, 15);
  602. $object2 = new SampleClass(16, 23, 42);
  603. $object3 = new SampleClass(4, 8, 15);
  604. $storage1 = new SplObjectStorage;
  605. $storage1->attach($object1);
  606. $storage2 = new SplObjectStorage;
  607. $storage2->attach($object3); // same content, different object
  608. // cannot use $filesDirectory, because neither setUp() nor
  609. // setUpBeforeClass() are executed before the data providers
  610. $file = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'foo.xml';
  611. return array(
  612. // strings
  613. array('a', 'b'),
  614. array('a', 'A'),
  615. // https://github.com/sebastianbergmann/phpunit/issues/1023
  616. array('9E6666666','9E7777777'),
  617. // integers
  618. array(1, 2),
  619. array(2, 1),
  620. // floats
  621. array(2.3, 4.2),
  622. array(2.3, 4.2, 0.5),
  623. array(array(2.3), array(4.2), 0.5),
  624. array(array(array(2.3)), array(array(4.2)), 0.5),
  625. array(new Struct(2.3), new Struct(4.2), 0.5),
  626. array(array(new Struct(2.3)), array(new Struct(4.2)), 0.5),
  627. // NAN
  628. array(NAN, NAN),
  629. // arrays
  630. array(array(), array(0 => 1)),
  631. array(array(0 => 1), array()),
  632. array(array(0 => null), array()),
  633. array(array(0 => 1, 1 => 2), array(0 => 1, 1 => 3)),
  634. array(array('a', 'b' => array(1, 2)), array('a', 'b' => array(2, 1))),
  635. // objects
  636. array(new SampleClass(4, 8, 15), new SampleClass(16, 23, 42)),
  637. array($object1, $object2),
  638. array($book1, $book2),
  639. array($book3, $book4), // same content, different class
  640. // resources
  641. array(fopen($file, 'r'), fopen($file, 'r')),
  642. // SplObjectStorage
  643. array($storage1, $storage2),
  644. // DOMDocument
  645. array(
  646. PHPUnit_Util_XML::load('<root></root>'),
  647. PHPUnit_Util_XML::load('<bar/>'),
  648. ),
  649. array(
  650. PHPUnit_Util_XML::load('<foo attr1="bar"/>'),
  651. PHPUnit_Util_XML::load('<foo attr1="foobar"/>'),
  652. ),
  653. array(
  654. PHPUnit_Util_XML::load('<foo> bar </foo>'),
  655. PHPUnit_Util_XML::load('<foo />'),
  656. ),
  657. array(
  658. PHPUnit_Util_XML::load('<foo xmlns="urn:myns:bar"/>'),
  659. PHPUnit_Util_XML::load('<foo xmlns="urn:notmyns:bar"/>'),
  660. ),
  661. array(
  662. PHPUnit_Util_XML::load('<foo> bar </foo>'),
  663. PHPUnit_Util_XML::load('<foo> bir </foo>'),
  664. ),
  665. array(
  666. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  667. new DateTime('2013-03-29 03:13:35', new DateTimeZone('America/New_York')),
  668. ),
  669. array(
  670. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  671. new DateTime('2013-03-29 03:13:35', new DateTimeZone('America/New_York')),
  672. 3500
  673. ),
  674. array(
  675. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  676. new DateTime('2013-03-29 05:13:35', new DateTimeZone('America/New_York')),
  677. 3500
  678. ),
  679. array(
  680. new DateTime('2013-03-29', new DateTimeZone('America/New_York')),
  681. new DateTime('2013-03-30', new DateTimeZone('America/New_York')),
  682. ),
  683. array(
  684. new DateTime('2013-03-29', new DateTimeZone('America/New_York')),
  685. new DateTime('2013-03-30', new DateTimeZone('America/New_York')),
  686. 43200
  687. ),
  688. array(
  689. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  690. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/Chicago')),
  691. ),
  692. array(
  693. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  694. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/Chicago')),
  695. 3500
  696. ),
  697. array(
  698. new DateTime('2013-03-30', new DateTimeZone('America/New_York')),
  699. new DateTime('2013-03-30', new DateTimeZone('America/Chicago')),
  700. ),
  701. array(
  702. new DateTime('2013-03-29T05:13:35-0600'),
  703. new DateTime('2013-03-29T04:13:35-0600'),
  704. ),
  705. array(
  706. new DateTime('2013-03-29T05:13:35-0600'),
  707. new DateTime('2013-03-29T05:13:35-0500'),
  708. ),
  709. // Exception
  710. //array(new Exception('Exception 1'), new Exception('Exception 2')),
  711. // different types
  712. array(new SampleClass(4, 8, 15), false),
  713. array(false, new SampleClass(4, 8, 15)),
  714. array(array(0 => 1, 1 => 2), false),
  715. array(false, array(0 => 1, 1 => 2)),
  716. array(array(), new stdClass),
  717. array(new stdClass, array()),
  718. // PHP: 0 == 'Foobar' => true!
  719. // We want these values to differ
  720. array(0, 'Foobar'),
  721. array('Foobar', 0),
  722. array(3, acos(8)),
  723. array(acos(8), 3)
  724. );
  725. }
  726. protected function equalValues()
  727. {
  728. // cyclic dependencies
  729. $book1 = new Book;
  730. $book1->author = new Author('Terry Pratchett');
  731. $book1->author->books[] = $book1;
  732. $book2 = new Book;
  733. $book2->author = new Author('Terry Pratchett');
  734. $book2->author->books[] = $book2;
  735. $object1 = new SampleClass(4, 8, 15);
  736. $object2 = new SampleClass(4, 8, 15);
  737. $storage1 = new SplObjectStorage;
  738. $storage1->attach($object1);
  739. $storage2 = new SplObjectStorage;
  740. $storage2->attach($object1);
  741. return array(
  742. // strings
  743. array('a', 'A', 0, false, true), // ignore case
  744. // arrays
  745. array(array('a' => 1, 'b' => 2), array('b' => 2, 'a' => 1)),
  746. array(array(1), array('1')),
  747. array(array(3, 2, 1), array(2, 3, 1), 0, true), // canonicalized comparison
  748. // floats
  749. array(2.3, 2.5, 0.5),
  750. array(array(2.3), array(2.5), 0.5),
  751. array(array(array(2.3)), array(array(2.5)), 0.5),
  752. array(new Struct(2.3), new Struct(2.5), 0.5),
  753. array(array(new Struct(2.3)), array(new Struct(2.5)), 0.5),
  754. // numeric with delta
  755. array(1, 2, 1),
  756. // objects
  757. array($object1, $object2),
  758. array($book1, $book2),
  759. // SplObjectStorage
  760. array($storage1, $storage2),
  761. // DOMDocument
  762. array(
  763. PHPUnit_Util_XML::load('<root></root>'),
  764. PHPUnit_Util_XML::load('<root/>'),
  765. ),
  766. array(
  767. PHPUnit_Util_XML::load('<root attr="bar"></root>'),
  768. PHPUnit_Util_XML::load('<root attr="bar"/>'),
  769. ),
  770. array(
  771. PHPUnit_Util_XML::load('<root><foo attr="bar"></foo></root>'),
  772. PHPUnit_Util_XML::load('<root><foo attr="bar"/></root>'),
  773. ),
  774. array(
  775. PHPUnit_Util_XML::load("<root>\n <child/>\n</root>"),
  776. PHPUnit_Util_XML::load('<root><child/></root>'),
  777. ),
  778. array(
  779. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  780. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  781. ),
  782. array(
  783. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  784. new DateTime('2013-03-29 04:13:25', new DateTimeZone('America/New_York')),
  785. 10
  786. ),
  787. array(
  788. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  789. new DateTime('2013-03-29 04:14:40', new DateTimeZone('America/New_York')),
  790. 65
  791. ),
  792. array(
  793. new DateTime('2013-03-29', new DateTimeZone('America/New_York')),
  794. new DateTime('2013-03-29', new DateTimeZone('America/New_York')),
  795. ),
  796. array(
  797. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  798. new DateTime('2013-03-29 03:13:35', new DateTimeZone('America/Chicago')),
  799. ),
  800. array(
  801. new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York')),
  802. new DateTime('2013-03-29 03:13:49', new DateTimeZone('America/Chicago')),
  803. 15
  804. ),
  805. array(
  806. new DateTime('2013-03-30', new DateTimeZone('America/New_York')),
  807. new DateTime('2013-03-29 23:00:00', new DateTimeZone('America/Chicago')),
  808. ),
  809. array(
  810. new DateTime('2013-03-30', new DateTimeZone('America/New_York')),
  811. new DateTime('2013-03-29 23:01:30', new DateTimeZone('America/Chicago')),
  812. 100
  813. ),
  814. array(
  815. new DateTime('@1364616000'),
  816. new DateTime('2013-03-29 23:00:00', new DateTimeZone('America/Chicago')),
  817. ),
  818. array(
  819. new DateTime('2013-03-29T05:13:35-0500'),
  820. new DateTime('2013-03-29T04:13:35-0600'),
  821. ),
  822. // Exception
  823. //array(new Exception('Exception 1'), new Exception('Exception 1')),
  824. // mixed types
  825. array(0, '0'),
  826. array('0', 0),
  827. array(2.3, '2.3'),
  828. array('2.3', 2.3),
  829. array((string) (1/3), 1 - 2/3),
  830. array(1/3, (string) (1 - 2/3)),
  831. array('string representation', new ClassWithToString),
  832. array(new ClassWithToString, 'string representation'),
  833. );
  834. }
  835. public function equalProvider()
  836. {
  837. // same |= equal
  838. return array_merge($this->equalValues(), $this->sameValues());
  839. }
  840. public function notEqualProvider()
  841. {
  842. return $this->notEqualValues();
  843. }
  844. public function sameProvider()
  845. {
  846. return $this->sameValues();
  847. }
  848. public function notSameProvider()
  849. {
  850. // not equal |= not same
  851. // equal, ¬same |= not same
  852. return array_merge($this->notEqualValues(), $this->equalValues());
  853. }
  854. /**
  855. * @covers PHPUnit_Framework_Assert::assertEquals
  856. * @dataProvider equalProvider
  857. */
  858. public function testAssertEqualsSucceeds($a, $b, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
  859. {
  860. $this->assertEquals($a, $b, '', $delta, 10, $canonicalize, $ignoreCase);
  861. }
  862. /**
  863. * @covers PHPUnit_Framework_Assert::assertEquals
  864. * @dataProvider notEqualProvider
  865. */
  866. public function testAssertEqualsFails($a, $b, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
  867. {
  868. try {
  869. $this->assertEquals($a, $b, '', $delta, 10, $canonicalize, $ignoreCase);
  870. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  871. return;
  872. }
  873. $this->fail();
  874. }
  875. /**
  876. * @covers PHPUnit_Framework_Assert::assertNotEquals
  877. * @dataProvider notEqualProvider
  878. */
  879. public function testAssertNotEqualsSucceeds($a, $b, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
  880. {
  881. $this->assertNotEquals($a, $b, '', $delta, 10, $canonicalize, $ignoreCase);
  882. }
  883. /**
  884. * @covers PHPUnit_Framework_Assert::assertNotEquals
  885. * @dataProvider equalProvider
  886. */
  887. public function testAssertNotEqualsFails($a, $b, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
  888. {
  889. try {
  890. $this->assertNotEquals($a, $b, '', $delta, 10, $canonicalize, $ignoreCase);
  891. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  892. return;
  893. }
  894. $this->fail();
  895. }
  896. /**
  897. * @covers PHPUnit_Framework_Assert::assertSame
  898. * @dataProvider sameProvider
  899. */
  900. public function testAssertSameSucceeds($a, $b)
  901. {
  902. $this->assertSame($a, $b);
  903. }
  904. /**
  905. * @covers PHPUnit_Framework_Assert::assertSame
  906. * @dataProvider notSameProvider
  907. */
  908. public function testAssertSameFails($a, $b)
  909. {
  910. try {
  911. $this->assertSame($a, $b);
  912. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  913. return;
  914. }
  915. $this->fail();
  916. }
  917. /**
  918. * @covers PHPUnit_Framework_Assert::assertNotSame
  919. * @dataProvider notSameProvider
  920. */
  921. public function testAssertNotSameSucceeds($a, $b)
  922. {
  923. $this->assertNotSame($a, $b);
  924. }
  925. /**
  926. * @covers PHPUnit_Framework_Assert::assertNotSame
  927. * @dataProvider sameProvider
  928. */
  929. public function testAssertNotSameFails($a, $b)
  930. {
  931. try {
  932. $this->assertNotSame($a, $b);
  933. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  934. return;
  935. }
  936. $this->fail();
  937. }
  938. /**
  939. * @covers PHPUnit_Framework_Assert::assertXmlFileEqualsXmlFile
  940. */
  941. public function testAssertXmlFileEqualsXmlFile()
  942. {
  943. $this->assertXmlFileEqualsXmlFile(
  944. $this->filesDirectory . 'foo.xml',
  945. $this->filesDirectory . 'foo.xml'
  946. );
  947. try {
  948. $this->assertXmlFileEqualsXmlFile(
  949. $this->filesDirectory . 'foo.xml',
  950. $this->filesDirectory . 'bar.xml'
  951. );
  952. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  953. return;
  954. }
  955. $this->fail();
  956. }
  957. /**
  958. * @covers PHPUnit_Framework_Assert::assertXmlFileNotEqualsXmlFile
  959. */
  960. public function testAssertXmlFileNotEqualsXmlFile()
  961. {
  962. $this->assertXmlFileNotEqualsXmlFile(
  963. $this->filesDirectory . 'foo.xml',
  964. $this->filesDirectory . 'bar.xml'
  965. );
  966. try {
  967. $this->assertXmlFileNotEqualsXmlFile(
  968. $this->filesDirectory . 'foo.xml',
  969. $this->filesDirectory . 'foo.xml'
  970. );
  971. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  972. return;
  973. }
  974. $this->fail();
  975. }
  976. /**
  977. * @covers PHPUnit_Framework_Assert::assertXmlStringEqualsXmlFile
  978. */
  979. public function testAssertXmlStringEqualsXmlFile()
  980. {
  981. $this->assertXmlStringEqualsXmlFile(
  982. $this->filesDirectory . 'foo.xml',
  983. file_get_contents($this->filesDirectory . 'foo.xml')
  984. );
  985. try {
  986. $this->assertXmlStringEqualsXmlFile(
  987. $this->filesDirectory . 'foo.xml',
  988. file_get_contents($this->filesDirectory . 'bar.xml')
  989. );
  990. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  991. return;
  992. }
  993. $this->fail();
  994. }
  995. /**
  996. * @covers PHPUnit_Framework_Assert::assertXmlStringNotEqualsXmlFile
  997. */
  998. public function testXmlStringNotEqualsXmlFile()
  999. {
  1000. $this->assertXmlStringNotEqualsXmlFile(
  1001. $this->filesDirectory . 'foo.xml',
  1002. file_get_contents($this->filesDirectory . 'bar.xml')
  1003. );
  1004. try {
  1005. $this->assertXmlStringNotEqualsXmlFile(
  1006. $this->filesDirectory . 'foo.xml',
  1007. file_get_contents($this->filesDirectory . 'foo.xml')
  1008. );
  1009. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1010. return;
  1011. }
  1012. $this->fail();
  1013. }
  1014. /**
  1015. * @covers PHPUnit_Framework_Assert::assertXmlStringEqualsXmlString
  1016. */
  1017. public function testAssertXmlStringEqualsXmlString()
  1018. {
  1019. $this->assertXmlStringEqualsXmlString('<root/>', '<root/>');
  1020. try {
  1021. $this->assertXmlStringEqualsXmlString('<foo/>', '<bar/>');
  1022. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1023. return;
  1024. }
  1025. $this->fail();
  1026. }
  1027. /**
  1028. * @expectedException PHPUnit_Framework_Exception
  1029. * @covers PHPUnit_Framework_Assert::assertXmlStringEqualsXmlString
  1030. * @ticket 1860
  1031. */
  1032. public function testAssertXmlStringEqualsXmlString2()
  1033. {
  1034. $this->assertXmlStringEqualsXmlString('<a></b>', '<c></d>');
  1035. }
  1036. /**
  1037. * @covers PHPUnit_Framework_Assert::assertXmlStringEqualsXmlString
  1038. * @ticket 1860
  1039. */
  1040. public function testAssertXmlStringEqualsXmlString3()
  1041. {
  1042. $expected = <<<XML
  1043. <?xml version="1.0"?>
  1044. <root>
  1045. <node />
  1046. </root>
  1047. XML;
  1048. $actual = <<<XML
  1049. <?xml version="1.0"?>
  1050. <root>
  1051. <node />
  1052. </root>
  1053. XML;
  1054. $this->assertXmlStringEqualsXmlString($expected, $actual);
  1055. }
  1056. /**
  1057. * @covers PHPUnit_Framework_Assert::assertXmlStringNotEqualsXmlString
  1058. */
  1059. public function testAssertXmlStringNotEqualsXmlString()
  1060. {
  1061. $this->assertXmlStringNotEqualsXmlString('<foo/>', '<bar/>');
  1062. try {
  1063. $this->assertXmlStringNotEqualsXmlString('<root/>', '<root/>');
  1064. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1065. return;
  1066. }
  1067. $this->fail();
  1068. }
  1069. /**
  1070. * @covers PHPUnit_Framework_Assert::assertEqualXMLStructure
  1071. */
  1072. public function testXMLStructureIsSame()
  1073. {
  1074. $expected = new DOMDocument;
  1075. $expected->load($this->filesDirectory . 'structureExpected.xml');
  1076. $actual = new DOMDocument;
  1077. $actual->load($this->filesDirectory . 'structureExpected.xml');
  1078. $this->assertEqualXMLStructure(
  1079. $expected->firstChild, $actual->firstChild, true
  1080. );
  1081. }
  1082. /**
  1083. * @covers PHPUnit_Framework_Assert::assertEqualXMLStructure
  1084. * @expectedException PHPUnit_Framework_ExpectationFailedException
  1085. */
  1086. public function testXMLStructureWrongNumberOfAttributes()
  1087. {
  1088. $expected = new DOMDocument;
  1089. $expected->load($this->filesDirectory . 'structureExpected.xml');
  1090. $actual = new DOMDocument;
  1091. $actual->load($this->filesDirectory . 'structureWrongNumberOfAttributes.xml');
  1092. $this->assertEqualXMLStructure(
  1093. $expected->firstChild, $actual->firstChild, true
  1094. );
  1095. }
  1096. /**
  1097. * @covers PHPUnit_Framework_Assert::assertEqualXMLStructure
  1098. * @expectedException PHPUnit_Framework_ExpectationFailedException
  1099. */
  1100. public function testXMLStructureWrongNumberOfNodes()
  1101. {
  1102. $expected = new DOMDocument;
  1103. $expected->load($this->filesDirectory . 'structureExpected.xml');
  1104. $actual = new DOMDocument;
  1105. $actual->load($this->filesDirectory . 'structureWrongNumberOfNodes.xml');
  1106. $this->assertEqualXMLStructure(
  1107. $expected->firstChild, $actual->firstChild, true
  1108. );
  1109. }
  1110. /**
  1111. * @covers PHPUnit_Framework_Assert::assertEqualXMLStructure
  1112. */
  1113. public function testXMLStructureIsSameButDataIsNot()
  1114. {
  1115. $expected = new DOMDocument;
  1116. $expected->load($this->filesDirectory . 'structureExpected.xml');
  1117. $actual = new DOMDocument;
  1118. $actual->load($this->filesDirectory . 'structureIsSameButDataIsNot.xml');
  1119. $this->assertEqualXMLStructure(
  1120. $expected->firstChild, $actual->firstChild, true
  1121. );
  1122. }
  1123. /**
  1124. * @covers PHPUnit_Framework_Assert::assertEqualXMLStructure
  1125. */
  1126. public function testXMLStructureAttributesAreSameButValuesAreNot()
  1127. {
  1128. $expected = new DOMDocument;
  1129. $expected->load($this->filesDirectory . 'structureExpected.xml');
  1130. $actual = new DOMDocument;
  1131. $actual->load($this->filesDirectory . 'structureAttributesAreSameButValuesAreNot.xml');
  1132. $this->assertEqualXMLStructure(
  1133. $expected->firstChild, $actual->firstChild, true
  1134. );
  1135. }
  1136. /**
  1137. * @covers PHPUnit_Framework_Assert::assertEqualXMLStructure
  1138. */
  1139. public function testXMLStructureIgnoreTextNodes()
  1140. {
  1141. $expected = new DOMDocument;
  1142. $expected->load($this->filesDirectory . 'structureExpected.xml');
  1143. $actual = new DOMDocument;
  1144. $actual->load($this->filesDirectory . 'structureIgnoreTextNodes.xml');
  1145. $this->assertEqualXMLStructure(
  1146. $expected->firstChild, $actual->firstChild, true
  1147. );
  1148. }
  1149. /**
  1150. * @covers PHPUnit_Framework_Assert::assertEquals
  1151. */
  1152. public function testAssertStringEqualsNumeric()
  1153. {
  1154. $this->assertEquals('0', 0);
  1155. try {
  1156. $this->assertEquals('0', 1);
  1157. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1158. return;
  1159. }
  1160. $this->fail();
  1161. }
  1162. /**
  1163. * @covers PHPUnit_Framework_Assert::assertNotEquals
  1164. */
  1165. public function testAssertStringEqualsNumeric2()
  1166. {
  1167. $this->assertNotEquals('A', 0);
  1168. }
  1169. /**
  1170. * @covers PHPUnit_Framework_Assert::assertFileExists
  1171. * @expectedException PHPUnit_Framework_Exception
  1172. */
  1173. public function testAssertFileExistsThrowsException()
  1174. {
  1175. $this->assertFileExists(null);
  1176. }
  1177. /**
  1178. * @covers PHPUnit_Framework_Assert::assertFileExists
  1179. */
  1180. public function testAssertFileExists()
  1181. {
  1182. $this->assertFileExists(__FILE__);
  1183. try {
  1184. $this->assertFileExists(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting');
  1185. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1186. return;
  1187. }
  1188. $this->fail();
  1189. }
  1190. /**
  1191. * @covers PHPUnit_Framework_Assert::assertFileNotExists
  1192. * @expectedException PHPUnit_Framework_Exception
  1193. */
  1194. public function testAssertFileNotExistsThrowsException()
  1195. {
  1196. $this->assertFileNotExists(null);
  1197. }
  1198. /**
  1199. * @covers PHPUnit_Framework_Assert::assertFileNotExists
  1200. */
  1201. public function testAssertFileNotExists()
  1202. {
  1203. $this->assertFileNotExists(__DIR__ . DIRECTORY_SEPARATOR . 'NotExisting');
  1204. try {
  1205. $this->assertFileNotExists(__FILE__);
  1206. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1207. return;
  1208. }
  1209. $this->fail();
  1210. }
  1211. /**
  1212. * @covers PHPUnit_Framework_Assert::assertObjectHasAttribute
  1213. */
  1214. public function testAssertObjectHasAttribute()
  1215. {
  1216. $o = new Author('Terry Pratchett');
  1217. $this->assertObjectHasAttribute('name', $o);
  1218. try {
  1219. $this->assertObjectHasAttribute('foo', $o);
  1220. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1221. return;
  1222. }
  1223. $this->fail();
  1224. }
  1225. /**
  1226. * @covers PHPUnit_Framework_Assert::assertObjectNotHasAttribute
  1227. */
  1228. public function testAssertObjectNotHasAttribute()
  1229. {
  1230. $o = new Author('Terry Pratchett');
  1231. $this->assertObjectNotHasAttribute('foo', $o);
  1232. try {
  1233. $this->assertObjectNotHasAttribute('name', $o);
  1234. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1235. return;
  1236. }
  1237. $this->fail();
  1238. }
  1239. /**
  1240. * @covers PHPUnit_Framework_Assert::assertNull
  1241. */
  1242. public function testAssertNull()
  1243. {
  1244. $this->assertNull(null);
  1245. try {
  1246. $this->assertNull(new stdClass);
  1247. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1248. return;
  1249. }
  1250. $this->fail();
  1251. }
  1252. /**
  1253. * @covers PHPUnit_Framework_Assert::assertNotNull
  1254. */
  1255. public function testAssertNotNull()
  1256. {
  1257. $this->assertNotNull(new stdClass);
  1258. try {
  1259. $this->assertNotNull(null);
  1260. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1261. return;
  1262. }
  1263. $this->fail();
  1264. }
  1265. /**
  1266. * @covers PHPUnit_Framework_Assert::assertTrue
  1267. */
  1268. public function testAssertTrue()
  1269. {
  1270. $this->assertTrue(true);
  1271. try {
  1272. $this->assertTrue(false);
  1273. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1274. return;
  1275. }
  1276. $this->fail();
  1277. }
  1278. /**
  1279. * @covers PHPUnit_Framework_Assert::assertNotTrue
  1280. */
  1281. public function testAssertNotTrue()
  1282. {
  1283. $this->assertNotTrue(false);
  1284. $this->assertNotTrue(1);
  1285. $this->assertNotTrue('true');
  1286. try {
  1287. $this->assertNotTrue(true);
  1288. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1289. return;
  1290. }
  1291. $this->fail();
  1292. }
  1293. /**
  1294. * @covers PHPUnit_Framework_Assert::assertFalse
  1295. */
  1296. public function testAssertFalse()
  1297. {
  1298. $this->assertFalse(false);
  1299. try {
  1300. $this->assertFalse(true);
  1301. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1302. return;
  1303. }
  1304. $this->fail();
  1305. }
  1306. /**
  1307. * @covers PHPUnit_Framework_Assert::assertNotFalse
  1308. */
  1309. public function testAssertNotFalse()
  1310. {
  1311. $this->assertNotFalse(true);
  1312. $this->assertNotFalse(0);
  1313. $this->assertNotFalse('');
  1314. try {
  1315. $this->assertNotFalse(false);
  1316. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1317. return;
  1318. }
  1319. $this->fail();
  1320. }
  1321. /**
  1322. * @covers PHPUnit_Framework_Assert::assertRegExp
  1323. * @expectedException PHPUnit_Framework_Exception
  1324. */
  1325. public function testAssertRegExpThrowsException()
  1326. {
  1327. $this->assertRegExp(null, null);
  1328. }
  1329. /**
  1330. * @covers PHPUnit_Framework_Assert::assertRegExp
  1331. * @expectedException PHPUnit_Framework_Exception
  1332. */
  1333. public function testAssertRegExpThrowsException2()
  1334. {
  1335. $this->assertRegExp('', null);
  1336. }
  1337. /**
  1338. * @covers PHPUnit_Framework_Assert::assertNotRegExp
  1339. * @expectedException PHPUnit_Framework_Exception
  1340. */
  1341. public function testAssertNotRegExpThrowsException()
  1342. {
  1343. $this->assertNotRegExp(null, null);
  1344. }
  1345. /**
  1346. * @covers PHPUnit_Framework_Assert::assertNotRegExp
  1347. * @expectedException PHPUnit_Framework_Exception
  1348. */
  1349. public function testAssertNotRegExpThrowsException2()
  1350. {
  1351. $this->assertNotRegExp('', null);
  1352. }
  1353. /**
  1354. * @covers PHPUnit_Framework_Assert::assertRegExp
  1355. */
  1356. public function testAssertRegExp()
  1357. {
  1358. $this->assertRegExp('/foo/', 'foobar');
  1359. try {
  1360. $this->assertRegExp('/foo/', 'bar');
  1361. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1362. return;
  1363. }
  1364. $this->fail();
  1365. }
  1366. /**
  1367. * @covers PHPUnit_Framework_Assert::assertNotRegExp
  1368. */
  1369. public function testAssertNotRegExp()
  1370. {
  1371. $this->assertNotRegExp('/foo/', 'bar');
  1372. try {
  1373. $this->assertNotRegExp('/foo/', 'foobar');
  1374. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1375. return;
  1376. }
  1377. $this->fail();
  1378. }
  1379. /**
  1380. * @covers PHPUnit_Framework_Assert::assertSame
  1381. */
  1382. public function testAssertSame()
  1383. {
  1384. $o = new stdClass;
  1385. $this->assertSame($o, $o);
  1386. try {
  1387. $this->assertSame(
  1388. new stdClass,
  1389. new stdClass
  1390. );
  1391. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1392. return;
  1393. }
  1394. $this->fail();
  1395. }
  1396. /**
  1397. * @covers PHPUnit_Framework_Assert::assertSame
  1398. */
  1399. public function testAssertSame2()
  1400. {
  1401. $this->assertSame(true, true);
  1402. $this->assertSame(false, false);
  1403. try {
  1404. $this->assertSame(true, false);
  1405. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1406. return;
  1407. }
  1408. $this->fail();
  1409. }
  1410. /**
  1411. * @covers PHPUnit_Framework_Assert::assertNotSame
  1412. */
  1413. public function testAssertNotSame()
  1414. {
  1415. $this->assertNotSame(
  1416. new stdClass,
  1417. null
  1418. );
  1419. $this->assertNotSame(
  1420. null,
  1421. new stdClass
  1422. );
  1423. $this->assertNotSame(
  1424. new stdClass,
  1425. new stdClass
  1426. );
  1427. $o = new stdClass;
  1428. try {
  1429. $this->assertNotSame($o, $o);
  1430. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1431. return;
  1432. }
  1433. $this->fail();
  1434. }
  1435. /**
  1436. * @covers PHPUnit_Framework_Assert::assertNotSame
  1437. */
  1438. public function testAssertNotSame2()
  1439. {
  1440. $this->assertNotSame(true, false);
  1441. $this->assertNotSame(false, true);
  1442. try {
  1443. $this->assertNotSame(true, true);
  1444. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1445. return;
  1446. }
  1447. $this->fail();
  1448. }
  1449. /**
  1450. * @covers PHPUnit_Framework_Assert::assertNotSame
  1451. */
  1452. public function testAssertNotSameFailsNull()
  1453. {
  1454. try {
  1455. $this->assertNotSame(null, null);
  1456. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1457. return;
  1458. }
  1459. $this->fail();
  1460. }
  1461. /**
  1462. * @covers PHPUnit_Framework_Assert::assertGreaterThan
  1463. */
  1464. public function testGreaterThan()
  1465. {
  1466. $this->assertGreaterThan(1, 2);
  1467. try {
  1468. $this->assertGreaterThan(2, 1);
  1469. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1470. return;
  1471. }
  1472. $this->fail();
  1473. }
  1474. /**
  1475. * @covers PHPUnit_Framework_Assert::assertAttributeGreaterThan
  1476. */
  1477. public function testAttributeGreaterThan()
  1478. {
  1479. $this->assertAttributeGreaterThan(
  1480. 1, 'bar', new ClassWithNonPublicAttributes
  1481. );
  1482. try {
  1483. $this->assertAttributeGreaterThan(
  1484. 1, 'foo', new ClassWithNonPublicAttributes
  1485. );
  1486. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1487. return;
  1488. }
  1489. $this->fail();
  1490. }
  1491. /**
  1492. * @covers PHPUnit_Framework_Assert::assertGreaterThanOrEqual
  1493. */
  1494. public function testGreaterThanOrEqual()
  1495. {
  1496. $this->assertGreaterThanOrEqual(1, 2);
  1497. try {
  1498. $this->assertGreaterThanOrEqual(2, 1);
  1499. } catch (PHPUnit_Framework_AssertionFailedError $e) {
  1500. ret