/protected/vendor/fabpot/php-cs-fixer/Symfony/CS/Tests/Fixer/Contrib/Php4ConstructorFixerTest.php

https://gitlab.com/I-NOZex/quiz · PHP · 1061 lines · 796 code · 158 blank · 107 comment · 0 complexity · 8c5938d498955fb1909df75175142211 MD5 · raw file

  1. <?php
  2. /*
  3. * This file is part of the PHP CS utility.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * This source file is subject to the MIT license that is bundled
  8. * with this source code in the file LICENSE.
  9. */
  10. namespace Symfony\CS\Tests\Fixer\Contrib;
  11. use Symfony\CS\Tests\Fixer\AbstractFixerTestBase;
  12. /**
  13. * @author Matteo Beccati <matteo@beccati.com>
  14. */
  15. class Php4ConstructorFixerTest extends AbstractFixerTestBase
  16. {
  17. public function testNamespaces()
  18. {
  19. $expected = <<<'EOF'
  20. <?php
  21. namespace Baz\Qux;
  22. class Foo
  23. {
  24. public function __construct($bar)
  25. {
  26. var_dump(1);
  27. }
  28. public function Foo($bar)
  29. {
  30. var_dump(2);
  31. }
  32. }
  33. EOF;
  34. $this->makeTest($expected);
  35. }
  36. public function testNamespaces2()
  37. {
  38. $expected = <<<'EOF'
  39. <?php
  40. namespace Baz\Qux
  41. {
  42. class Foo
  43. {
  44. public function __construct($bar)
  45. {
  46. var_dump(1);
  47. }
  48. public function Foo($bar)
  49. {
  50. var_dump(2);
  51. }
  52. }
  53. class Bar
  54. {
  55. public function Bar()
  56. {
  57. var_dump(3);
  58. }
  59. }
  60. }
  61. class Foo
  62. {
  63. public function __construct($bar)
  64. {
  65. var_dump(2);
  66. }
  67. }
  68. EOF;
  69. $input = <<<'EOF'
  70. <?php
  71. namespace Baz\Qux
  72. {
  73. class Foo
  74. {
  75. public function __construct($bar)
  76. {
  77. var_dump(1);
  78. }
  79. public function Foo($bar)
  80. {
  81. var_dump(2);
  82. }
  83. }
  84. class Bar
  85. {
  86. public function Bar()
  87. {
  88. var_dump(3);
  89. }
  90. }
  91. }
  92. class Foo
  93. {
  94. public function Foo($bar)
  95. {
  96. var_dump(2);
  97. }
  98. }
  99. EOF;
  100. $this->makeTest($expected, $input);
  101. }
  102. public function testNamespaceGlobal()
  103. {
  104. $expected = <<<'EOF'
  105. <?php
  106. namespace {
  107. class Foo
  108. {
  109. function __construct($bar)
  110. {
  111. var_dump(1);
  112. }
  113. }
  114. }
  115. EOF;
  116. $input = <<<'EOF'
  117. <?php
  118. namespace {
  119. class Foo
  120. {
  121. function Foo($bar)
  122. {
  123. var_dump(1);
  124. }
  125. }
  126. }
  127. EOF;
  128. $this->makeTest($expected, $input);
  129. }
  130. public function testPhp5Only()
  131. {
  132. $expected = <<<'EOF'
  133. <?php
  134. class Foo
  135. {
  136. function __construct($bar)
  137. {
  138. var_dump(1);
  139. }
  140. function bar()
  141. {
  142. var_dump(3);
  143. }
  144. }
  145. EOF;
  146. $this->makeTest($expected);
  147. }
  148. public function testPhp4Only()
  149. {
  150. $expected = <<<'EOF'
  151. <?php
  152. class Foo
  153. {
  154. /**
  155. * Constructor
  156. */
  157. function __construct($bar)
  158. {
  159. var_dump(1);
  160. }
  161. function bar()
  162. {
  163. var_dump(3);
  164. }
  165. }
  166. EOF;
  167. $input = <<<'EOF'
  168. <?php
  169. class Foo
  170. {
  171. /**
  172. * Constructor
  173. */
  174. function foO($bar)
  175. {
  176. var_dump(1);
  177. }
  178. function bar()
  179. {
  180. var_dump(3);
  181. }
  182. }
  183. EOF;
  184. $this->makeTest($expected, $input);
  185. }
  186. public function testBothTheRightWay1()
  187. {
  188. $expected = <<<'EOF'
  189. <?php
  190. class Foo
  191. {
  192. /**
  193. * Constructor
  194. */
  195. public function __construct()
  196. {
  197. var_dump(1);
  198. }
  199. public function bar()
  200. {
  201. var_dump(3);
  202. }
  203. }
  204. EOF;
  205. $input = <<<'EOF'
  206. <?php
  207. class Foo
  208. {
  209. /**
  210. * Constructor
  211. */
  212. public function __construct()
  213. {
  214. var_dump(1);
  215. }
  216. /**
  217. * PHP-4 Constructor
  218. */
  219. function Foo()
  220. {
  221. // Call PHP5!
  222. $this->__construct();
  223. }
  224. public function bar()
  225. {
  226. var_dump(3);
  227. }
  228. }
  229. EOF;
  230. $this->makeTest($expected, $input);
  231. }
  232. public function testBothTheRightWay2()
  233. {
  234. $expected = <<<'EOF'
  235. <?php
  236. class Foo
  237. {
  238. /**
  239. * Constructor
  240. */
  241. public function __construct($bar)
  242. {
  243. var_dump(1);
  244. }
  245. public function bar()
  246. {
  247. var_dump(3);
  248. }
  249. }
  250. EOF;
  251. $input = <<<'EOF'
  252. <?php
  253. class Foo
  254. {
  255. /**
  256. * Constructor
  257. */
  258. public function __construct($bar)
  259. {
  260. var_dump(1);
  261. }
  262. /**
  263. * PHP-4 Constructor
  264. */
  265. function Foo($bar)
  266. {
  267. // Call PHP5!
  268. $this->__construct($bar);
  269. }
  270. public function bar()
  271. {
  272. var_dump(3);
  273. }
  274. }
  275. EOF;
  276. $this->makeTest($expected, $input);
  277. }
  278. public function testBothTheRightWay3()
  279. {
  280. $expected = <<<'EOF'
  281. <?php
  282. class Foo
  283. {
  284. /**
  285. * Constructor
  286. */
  287. public function __construct($bar = 1, $baz = null)
  288. {
  289. var_dump(1);
  290. }
  291. public function bar()
  292. {
  293. var_dump(3);
  294. }
  295. }
  296. EOF;
  297. $input = <<<'EOF'
  298. <?php
  299. class Foo
  300. {
  301. /**
  302. * Constructor
  303. */
  304. public function __construct($bar = 1, $baz = null)
  305. {
  306. var_dump(1);
  307. }
  308. /**
  309. * PHP-4 Constructor
  310. */
  311. function Foo($bar = 1, $baz = null)
  312. {
  313. // Call PHP5!
  314. $this->__construct($bar, $baz);
  315. }
  316. public function bar()
  317. {
  318. var_dump(3);
  319. }
  320. }
  321. EOF;
  322. $this->makeTest($expected, $input);
  323. }
  324. public function testBothTheOtherWayAround()
  325. {
  326. $expected = <<<'EOF'
  327. <?php
  328. class Foo
  329. {
  330. /**
  331. * PHP-4 Constructor.
  332. *
  333. * This is the real constructor. It's the one that most likely contains any meaningful info in the docblock.
  334. */
  335. private function __construct($bar)
  336. {
  337. var_dump(1);
  338. }
  339. function bar()
  340. {
  341. var_dump(3);
  342. }
  343. }
  344. EOF;
  345. $input = <<<'EOF'
  346. <?php
  347. class Foo
  348. {
  349. /**
  350. * PHP-5 Constructor.
  351. *
  352. * This docblock is removed, along with the entire wrapper method.
  353. */
  354. protected function __construct($bar)
  355. {
  356. // Call The Real Constructor, not the hippy fake one!
  357. $this->Foo($bar);
  358. }
  359. /**
  360. * PHP-4 Constructor.
  361. *
  362. * This is the real constructor. It's the one that most likely contains any meaningful info in the docblock.
  363. */
  364. private function Foo($bar)
  365. {
  366. var_dump(1);
  367. }
  368. function bar()
  369. {
  370. var_dump(3);
  371. }
  372. }
  373. EOF;
  374. $this->makeTest($expected, $input);
  375. }
  376. public function testPhp4Parent()
  377. {
  378. $expected = <<<'EOF'
  379. <?php
  380. class Foo extends FooParEnt
  381. {
  382. /**
  383. * Constructor
  384. */
  385. function __construct($bar)
  386. {
  387. parent::__construct(1);
  388. var_dump(9);
  389. }
  390. function bar()
  391. {
  392. var_dump(3);
  393. }
  394. }
  395. EOF;
  396. $input = <<<'EOF'
  397. <?php
  398. class Foo extends FooParEnt
  399. {
  400. /**
  401. * Constructor
  402. */
  403. function Foo($bar)
  404. {
  405. parent::FooPaRent(1);
  406. var_dump(9);
  407. }
  408. function bar()
  409. {
  410. var_dump(3);
  411. }
  412. }
  413. EOF;
  414. $this->makeTest($expected, $input);
  415. }
  416. public function testPhp4ParentInit()
  417. {
  418. $expected = <<<'EOF'
  419. <?php
  420. class Foo extends FooParent
  421. {
  422. /**
  423. * Constructor
  424. */
  425. function __construct($bar)
  426. {
  427. parent::init(1);
  428. var_dump(9);
  429. }
  430. function bar()
  431. {
  432. var_dump(3);
  433. }
  434. }
  435. EOF;
  436. $input = <<<'EOF'
  437. <?php
  438. class Foo extends FooParent
  439. {
  440. /**
  441. * Constructor
  442. */
  443. function Foo($bar)
  444. {
  445. parent::init(1);
  446. var_dump(9);
  447. }
  448. function bar()
  449. {
  450. var_dump(3);
  451. }
  452. }
  453. EOF;
  454. $this->makeTest($expected, $input);
  455. }
  456. public function testMixedParent()
  457. {
  458. $expected = <<<'EOF'
  459. <?php
  460. class Foo extends FooParent
  461. {
  462. /**
  463. * Constructor
  464. */
  465. function __construcT($bar)
  466. {
  467. parent::__construct(1);
  468. var_dump(9);
  469. }
  470. function bar()
  471. {
  472. var_dump(3);
  473. }
  474. }
  475. EOF;
  476. $input = <<<'EOF'
  477. <?php
  478. class Foo extends FooParent
  479. {
  480. /**
  481. * Constructor
  482. */
  483. function __construcT($bar)
  484. {
  485. parent::FooParenT(1);
  486. var_dump(9);
  487. }
  488. function bar()
  489. {
  490. var_dump(3);
  491. }
  492. }
  493. EOF;
  494. $this->makeTest($expected, $input);
  495. }
  496. public function testMixedParent2()
  497. {
  498. $expected = <<<'EOF'
  499. <?php
  500. class Foo extends FooParent
  501. {
  502. /**
  503. * Constructor
  504. */
  505. function __construcT($bar)
  506. {
  507. parent::__construct(1);
  508. var_dump(9);
  509. }
  510. function bar()
  511. {
  512. var_dump(3);
  513. }
  514. }
  515. EOF;
  516. $input = <<<'EOF'
  517. <?php
  518. class Foo extends FooParent
  519. {
  520. /**
  521. * Constructor
  522. */
  523. function __construcT($bar)
  524. {
  525. $this->FooParenT(1);
  526. var_dump(9);
  527. }
  528. function bar()
  529. {
  530. var_dump(3);
  531. }
  532. }
  533. EOF;
  534. $this->makeTest($expected, $input);
  535. }
  536. public function testParentOther()
  537. {
  538. $expected = <<<'EOF'
  539. <?php
  540. class Foo extends FooParent
  541. {
  542. /**
  543. * Constructor
  544. */
  545. function __construct($bar)
  546. {
  547. parent::__construct(1);
  548. var_dump(9);
  549. }
  550. function bar()
  551. {
  552. var_dump(3);
  553. }
  554. }
  555. EOF;
  556. $input = <<<'EOF'
  557. <?php
  558. class Foo extends FooParent
  559. {
  560. /**
  561. * Constructor
  562. */
  563. function Foo($bar)
  564. {
  565. $this->FooParent(1);
  566. var_dump(9);
  567. }
  568. function bar()
  569. {
  570. var_dump(3);
  571. }
  572. }
  573. EOF;
  574. $this->makeTest($expected, $input);
  575. }
  576. public function testParentOther2()
  577. {
  578. $expected = <<<'EOF'
  579. <?php
  580. class Foo extends FooParent
  581. {
  582. /**
  583. * Constructor
  584. */
  585. function __construct($bar)
  586. {
  587. parent::__construct(1);
  588. var_dump(9);
  589. }
  590. function bar()
  591. {
  592. var_dump(3);
  593. }
  594. }
  595. EOF;
  596. $input = <<<'EOF'
  597. <?php
  598. class Foo extends FooParent
  599. {
  600. /**
  601. * Constructor
  602. */
  603. function Foo($bar)
  604. {
  605. FooParent::FooParent(1);
  606. var_dump(9);
  607. }
  608. function bar()
  609. {
  610. var_dump(3);
  611. }
  612. }
  613. EOF;
  614. $this->makeTest($expected, $input);
  615. }
  616. public function testClassWithAnonymous()
  617. {
  618. $expected = <<<'EOF'
  619. <?php
  620. class Foo {
  621. private $bar;
  622. public function __construct()
  623. {
  624. $this->bar = function () {};
  625. }
  626. }
  627. EOF;
  628. $input = <<<'EOF'
  629. <?php
  630. class Foo {
  631. private $bar;
  632. public function Foo()
  633. {
  634. $this->bar = function () {};
  635. }
  636. }
  637. EOF;
  638. $this->makeTest($expected, $input);
  639. }
  640. public function testClassWithComments()
  641. {
  642. $expected = <<<'EOF'
  643. <?php
  644. class /* test */
  645. // another
  646. Foo {
  647. public function /* test */ __construct($param) {
  648. }
  649. }
  650. EOF;
  651. $input = <<<'EOF'
  652. <?php
  653. class /* test */
  654. // another
  655. Foo {
  656. public function /* test */ Foo($param) {
  657. }
  658. }
  659. EOF;
  660. $this->makeTest($expected, $input);
  661. }
  662. public function testAlphaBeta()
  663. {
  664. $expected = <<<'EOF'
  665. <?php
  666. class Foo
  667. {
  668. public function Foo()
  669. {
  670. echo 'alpha';
  671. }
  672. public function __construct()
  673. {
  674. echo 'beta';
  675. }
  676. }
  677. EOF;
  678. $this->makeTest($expected);
  679. }
  680. public function testAlphaBetaTrick1()
  681. {
  682. $expected = <<<'EOF'
  683. <?php
  684. class Foo
  685. {
  686. public function Foo()
  687. {
  688. // This is not $this->__construct()
  689. echo 'alpha';
  690. }
  691. public function __construct()
  692. {
  693. echo 'beta';
  694. }
  695. }
  696. EOF;
  697. $this->makeTest($expected);
  698. }
  699. public function testAlphaBetaTrick2()
  700. {
  701. $expected = <<<'EOF'
  702. <?php
  703. class Foo
  704. {
  705. public function Foo()
  706. {
  707. echo 'alpha';
  708. }
  709. public function __construct()
  710. {
  711. // This is not $this->Foo()
  712. echo 'beta';
  713. }
  714. }
  715. EOF;
  716. $this->makeTest($expected);
  717. }
  718. public function testAlphaBetaTrick3()
  719. {
  720. $expected = <<<'EOF'
  721. <?php
  722. class Foo
  723. {
  724. public function Foo()
  725. {
  726. echo 'alpha';
  727. /* yeah, ok let's construct it anyway */
  728. $this->__construct();
  729. }
  730. public function __construct()
  731. {
  732. echo 'beta';
  733. }
  734. }
  735. EOF;
  736. $this->makeTest($expected);
  737. }
  738. public function testAlphaBetaTrick4WithAnotherClass()
  739. {
  740. $expected = <<<'EOF'
  741. <?php
  742. class Foo
  743. {
  744. public function Foo()
  745. {
  746. echo 'alpha';
  747. }
  748. public function __construct()
  749. {
  750. $this->Foo();
  751. // Do something more!
  752. echo 'beta';
  753. }
  754. }
  755. Class Bar
  756. {
  757. function __construct()
  758. {
  759. $this->foo = 1;
  760. }
  761. }
  762. EOF;
  763. $input = <<<'EOF'
  764. <?php
  765. class Foo
  766. {
  767. public function Foo()
  768. {
  769. echo 'alpha';
  770. }
  771. public function __construct()
  772. {
  773. $this->Foo();
  774. // Do something more!
  775. echo 'beta';
  776. }
  777. }
  778. Class Bar
  779. {
  780. function bar()
  781. {
  782. $this->foo = 1;
  783. }
  784. }
  785. EOF;
  786. $this->makeTest($expected, $input);
  787. }
  788. public function testAbstract()
  789. {
  790. $expected = <<<'EOF'
  791. <?php
  792. abstract class Foo
  793. {
  794. abstract function Foo();
  795. }
  796. EOF;
  797. $this->makeTest($expected);
  798. }
  799. public function testAbstractTrick()
  800. {
  801. $expected = <<<'EOF'
  802. <?php
  803. abstract class Foo
  804. {
  805. abstract public function Foo();
  806. public function bar()
  807. {
  808. // This is messed up, I know
  809. $this->__construct();
  810. }
  811. public function __construct()
  812. {
  813. $this->baz = 1;
  814. }
  815. }
  816. EOF;
  817. $this->makeTest($expected);
  818. }
  819. public function testParentMultipleClasses()
  820. {
  821. $expected = <<<'EOF'
  822. <?php
  823. class Class1 extends Parent1
  824. {
  825. function __construct($foo)
  826. {
  827. parent::__construct();
  828. echo "something";
  829. }
  830. }
  831. class Class2 extends Parent2
  832. {
  833. function __construct($foo)
  834. {
  835. echo "something";
  836. }
  837. }
  838. ?>
  839. EOF;
  840. $input = <<<'EOF'
  841. <?php
  842. class Class1 extends Parent1
  843. {
  844. function __construct($foo)
  845. {
  846. $this->Parent1();
  847. echo "something";
  848. }
  849. }
  850. class Class2 extends Parent2
  851. {
  852. function __construct($foo)
  853. {
  854. echo "something";
  855. }
  856. }
  857. ?>
  858. EOF;
  859. $this->makeTest($expected, $input);
  860. }
  861. public function testInfiniteRecursion()
  862. {
  863. $expected = <<<'EOF'
  864. <?php
  865. class Parent1
  866. {
  867. function __construct()
  868. {
  869. echo "foobar";
  870. }
  871. }
  872. class Class1 extends Parent1
  873. {
  874. function __construct($foo)
  875. {
  876. parent::__construct();
  877. echo "something";
  878. }
  879. }
  880. ?>
  881. EOF;
  882. $input = <<<'EOF'
  883. <?php
  884. class Parent1
  885. {
  886. function __construct()
  887. {
  888. echo "foobar";
  889. }
  890. }
  891. class Class1 extends Parent1
  892. {
  893. function Class1($foo)
  894. {
  895. $this->__construct();
  896. echo "something";
  897. }
  898. }
  899. ?>
  900. EOF;
  901. $this->makeTest($expected, $input);
  902. }
  903. }