NumberCompareTest.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. new NumberCompare('foobar');
  18. $this->fail('->test() throws an \InvalidArgumentException if the test expression is not valid.');
  19. } catch (\Exception $e) {
  20. $this->assertInstanceOf('InvalidArgumentException', $e, '->test() throws an \InvalidArgumentException if the test expression is not valid.');
  21. }
  22. }
  23. /**
  24. * @dataProvider getTestData
  25. */
  26. public function testTest($test, $match, $noMatch)
  27. {
  28. foreach ($match as $m) {
  29. $c = new NumberCompare($test);
  30. $this->assertTrue($c->test($m), '->test() tests a string against the expression');
  31. }
  32. foreach ($noMatch as $m) {
  33. $c = new NumberCompare($test);
  34. $this->assertFalse($c->test($m), '->test() tests a string against the expression');
  35. }
  36. }
  37. public function getTestData()
  38. {
  39. return array(
  40. array('< 1000', array('500', '999'), array('1000', '1500')),
  41. array('< 1K', array('500', '999'), array('1000', '1500')),
  42. array('<1k', array('500', '999'), array('1000', '1500')),
  43. array(' < 1 K ', array('500', '999'), array('1000', '1500')),
  44. array('<= 1K', array('1000'), array('1001')),
  45. array('> 1K', array('1001'), array('1000')),
  46. array('>= 1K', array('1000'), array('999')),
  47. array('< 1KI', array('500', '1023'), array('1024', '1500')),
  48. array('<= 1KI', array('1024'), array('1025')),
  49. array('> 1KI', array('1025'), array('1024')),
  50. array('>= 1KI', array('1024'), array('1023')),
  51. array('1KI', array('1024'), array('1023', '1025')),
  52. array('==1KI', array('1024'), array('1023', '1025')),
  53. array('==1m', array('1000000'), array('999999', '1000001')),
  54. array('==1mi', array(1024*1024), array(1024*1024-1, 1024*1024+1)),
  55. array('==1g', array('1000000000'), array('999999999', '1000000001')),
  56. array('==1gi', array(1024*1024*1024), array(1024*1024*1024-1, 1024*1024*1024+1)),
  57. );
  58. }
  59. }