Skip to content

Commit

Permalink
Deprecate magic string comparison operators.
Browse files Browse the repository at this point in the history
  • Loading branch information
robertpustulka committed Jan 8, 2018
1 parent 3383aac commit a8c0549
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 23 deletions.
10 changes: 8 additions & 2 deletions src/Validation/Validation.php
Original file line number Diff line number Diff line change
Expand Up @@ -295,51 +295,57 @@ public static function comparison($check1, $operator, $check2)
return false;
}

$message = 'Operator `%s` is deprecated, use constant `Validation::%s` instead.';

$operator = str_replace([' ', "\t", "\n", "\r", "\0", "\x0B"], '', strtolower($operator));
switch ($operator) {
case 'isgreater':
deprecationWarning(sprintf($message, $operator, 'COMPARE_GREATER'));
case static::COMPARE_GREATER:
if ($check1 > $check2) {
return true;
}
break;
case 'isless':
deprecationWarning(sprintf($message, $operator, 'COMPARE_LESS'));
case static::COMPARE_LESS:
if ($check1 < $check2) {
return true;
}
break;
case 'greaterorequal':
deprecationWarning(sprintf($message, $operator, 'COMPARE_GREATER_OR_EQUAL'));
case static::COMPARE_GREATER_OR_EQUAL:
if ($check1 >= $check2) {
return true;
}
break;
case 'lessorequal':
deprecationWarning(sprintf($message, $operator, 'COMPARE_LESS_OR_EQUAL'));
case static::COMPARE_LESS_OR_EQUAL:
if ($check1 <= $check2) {
return true;
}
break;
case 'equalto':
deprecationWarning(sprintf($message, $operator, 'COMPARE_EQUAL'));
case static::COMPARE_EQUAL:
if ($check1 == $check2) {
return true;
}
break;
case 'notequal':
deprecationWarning(sprintf($message, $operator, 'COMPARE_NOT_EQUAL'));
case static::COMPARE_NOT_EQUAL:
if ($check1 != $check2) {
return true;
}
break;
case 'sameas':
case static::COMPARE_SAME:
if ($check1 === $check2) {
return true;
}
break;
case 'notsameas':
case static::COMPARE_NOT_SAME:
if ($check1 !== $check2) {
return true;
Expand Down
40 changes: 19 additions & 21 deletions tests/TestCase/Validation/ValidationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -841,45 +841,43 @@ public function testAllCcDeep()
public function testComparison()
{
$this->assertFalse(Validation::comparison(7, null, 6));
$this->assertTrue(Validation::comparison(7, 'is greater', 6));
$this->assertTrue(Validation::comparison(7, Validation::COMPARE_GREATER, 6));
$this->assertTrue(Validation::comparison(6, 'is less', 7));
$this->assertTrue(Validation::comparison(6, Validation::COMPARE_LESS, 7));
$this->assertTrue(Validation::comparison(7, 'greater or equal', 7));
$this->assertTrue(Validation::comparison(7, Validation::COMPARE_GREATER_OR_EQUAL, 7));
$this->assertTrue(Validation::comparison(7, 'greater or equal', 6));
$this->assertTrue(Validation::comparison(7, Validation::COMPARE_GREATER_OR_EQUAL, 6));
$this->assertTrue(Validation::comparison(6, 'less or equal', 7));
$this->assertTrue(Validation::comparison(6, Validation::COMPARE_LESS_OR_EQUAL, 7));
$this->assertTrue(Validation::comparison(7, 'equal to', 7));
$this->assertTrue(Validation::comparison(7, Validation::COMPARE_EQUAL, 7));
$this->assertTrue(Validation::comparison(7, 'not equal', 6));
$this->assertTrue(Validation::comparison(7, Validation::COMPARE_NOT_EQUAL, 6));
$this->assertTrue(Validation::comparison(7, 'same as', 7));
$this->assertTrue(Validation::comparison(7, Validation::COMPARE_SAME, 7));
$this->assertTrue(Validation::comparison(7, 'not same as', '7'));
$this->assertTrue(Validation::comparison(7, Validation::COMPARE_NOT_SAME, '7'));
$this->assertFalse(Validation::comparison(6, 'is greater', 7));
$this->assertFalse(Validation::comparison(6, Validation::COMPARE_GREATER, 7));
$this->assertFalse(Validation::comparison(7, 'is less', 6));
$this->assertFalse(Validation::comparison(7, Validation::COMPARE_LESS, 6));
$this->assertFalse(Validation::comparison(6, 'greater or equal', 7));
$this->assertFalse(Validation::comparison(6, Validation::COMPARE_GREATER_OR_EQUAL, 7));
$this->assertFalse(Validation::comparison(6, 'greater or equal', 7));
$this->assertFalse(Validation::comparison(6, Validation::COMPARE_GREATER_OR_EQUAL, 7));
$this->assertFalse(Validation::comparison(7, 'less or equal', 6));
$this->assertFalse(Validation::comparison(7, Validation::COMPARE_LESS_OR_EQUAL, 6));
$this->assertFalse(Validation::comparison(7, 'equal to', 6));
$this->assertFalse(Validation::comparison(7, Validation::COMPARE_EQUAL, 6));
$this->assertFalse(Validation::comparison(7, 'not equal', 7));
$this->assertFalse(Validation::comparison(7, Validation::COMPARE_NOT_EQUAL, 7));
$this->assertFalse(Validation::comparison(7, 'same as', '7'));
$this->assertFalse(Validation::comparison(7, Validation::COMPARE_SAME, '7'));
$this->assertFalse(Validation::comparison(7, 'not same as', 7));
$this->assertFalse(Validation::comparison(7, Validation::COMPARE_NOT_SAME, 7));

$this->assertTrue(Validation::comparison('6.5', Validation::COMPARE_NOT_EQUAL, 6));
$this->assertTrue(Validation::comparison('6.5', Validation::COMPARE_LESS, 7));

$this->deprecated(function () {
$this->assertTrue(Validation::comparison(7, 'is greater', 6));
$this->assertTrue(Validation::comparison(6, 'is less', 7));
$this->assertTrue(Validation::comparison(7, 'greater or equal', 7));
$this->assertTrue(Validation::comparison(7, 'greater or equal', 6));
$this->assertTrue(Validation::comparison(6, 'less or equal', 7));
$this->assertTrue(Validation::comparison(7, 'equal to', 7));
$this->assertTrue(Validation::comparison(7, 'not equal', 6));
$this->assertFalse(Validation::comparison(6, 'is greater', 7));
$this->assertFalse(Validation::comparison(7, 'is less', 6));
$this->assertFalse(Validation::comparison(6, 'greater or equal', 7));
$this->assertFalse(Validation::comparison(6, 'greater or equal', 7));
$this->assertFalse(Validation::comparison(7, 'less or equal', 6));
$this->assertFalse(Validation::comparison(7, 'equal to', 6));
$this->assertFalse(Validation::comparison(7, 'not equal', 7));
});
}

/**
Expand Down Expand Up @@ -2602,13 +2600,13 @@ public function testFileSize()
{
$image = TEST_APP . 'webroot/img/cake.power.gif';
$this->assertTrue(Validation::fileSize($image, Validation::COMPARE_LESS, 1024));
$this->assertTrue(Validation::fileSize(['tmp_name' => $image], 'isless', 1024));
$this->assertTrue(Validation::fileSize(['tmp_name' => $image], Validation::COMPARE_LESS, 1024));
$this->assertTrue(Validation::fileSize($image, Validation::COMPARE_LESS, '1KB'));
$this->assertTrue(Validation::fileSize($image, Validation::COMPARE_GREATER_OR_EQUAL, 200));
$this->assertTrue(Validation::fileSize($image, Validation::COMPARE_EQUAL, 201));
$this->assertTrue(Validation::fileSize($image, Validation::COMPARE_EQUAL, '201B'));

$this->assertFalse(Validation::fileSize($image, 'isgreater', 1024));
$this->assertFalse(Validation::fileSize($image, Validation::COMPARE_GREATER, 1024));
$this->assertFalse(Validation::fileSize(['tmp_name' => $image], Validation::COMPARE_GREATER, '1KB'));
}

Expand Down

0 comments on commit a8c0549

Please sign in to comment.