NumberCompareTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /*
  3. * This file is part of the symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Tests\Components\Finder;
  11. use Symfony\Components\Finder\NumberCompare;
  12. class NumberCompareTest extends \PHPUnit_Framework_TestCase
  13. {
  14. public function testConstructor()
  15. {
  16. try
  17. {
  18. new NumberCompare('foobar');
  19. $this->fail('->test() throws an \InvalidArgumentException if the test expression is not valid.');
  20. }
  21. catch (\Exception $e)
  22. {
  23. $this->assertInstanceOf('InvalidArgumentException', $e, '->test() throws an \InvalidArgumentException if the test expression is not valid.');
  24. }
  25. }
  26. /**
  27. * @dataProvider getTestData
  28. */
  29. public function testTest($test, $match, $noMatch)
  30. {
  31. foreach ($match as $m)
  32. {
  33. $c = new NumberCompare($test);
  34. $this->assertTrue($c->test($m), '->test() tests a string against the expression');
  35. }
  36. foreach ($noMatch as $m)
  37. {
  38. $c = new NumberCompare($test);
  39. $this->assertFalse($c->test($m), '->test() tests a string against the expression');
  40. }
  41. }
  42. public function getTestData()
  43. {
  44. return array(
  45. array('< 1000', array('500', '999'), array('1000', '1500')),
  46. array('< 1K', array('500', '999'), array('1000', '1500')),
  47. array('<1k', array('500', '999'), array('1000', '1500')),
  48. array(' < 1 K ', array('500', '999'), array('1000', '1500')),
  49. array('<= 1K', array('1000'), array('1001')),
  50. array('> 1K', array('1001'), array('1000')),
  51. array('>= 1K', array('1000'), array('999')),
  52. array('< 1KI', array('500', '1023'), array('1024', '1500')),
  53. array('<= 1KI', array('1024'), array('1025')),
  54. array('> 1KI', array('1025'), array('1024')),
  55. array('>= 1KI', array('1024'), array('1023')),
  56. array('1KI', array('1024'), array('1023', '1025')),
  57. array('==1KI', array('1024'), array('1023', '1025')),
  58. array('==1m', array('1000000'), array('999999', '1000001')),
  59. array('==1mi', array(1024*1024), array(1024*1024-1, 1024*1024+1)),
  60. array('==1g', array('1000000000'), array('999999999', '1000000001')),
  61. array('==1gi', array(1024*1024*1024), array(1024*1024*1024-1, 1024*1024*1024+1)),
  62. );
  63. }
  64. }