Skip to content

Commit

Permalink
Adding a validation rule for checking natural numbers
Browse files Browse the repository at this point in the history
  • Loading branch information
Jelle Henkens committed May 21, 2012
1 parent 4fd45c0 commit 7546be6
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
20 changes: 20 additions & 0 deletions lib/Cake/Test/Case/Utility/ValidationTest.php
Expand Up @@ -1960,6 +1960,26 @@ public function testNumeric() {
$this->assertTrue(Validation::numeric('2.2'));
}

/**
* testNaturalNumber method
*
* @return void
*/
public function testNaturalNumber() {
$this->assertFalse(Validation::naturalNumber('teststring'));
$this->assertFalse(Validation::naturalNumber('5.4'));
$this->assertFalse(Validation::naturalNumber(99.004));
$this->assertFalse(Validation::naturalNumber('0,05'));
$this->assertFalse(Validation::naturalNumber('-2'));
$this->assertFalse(Validation::naturalNumber(-2));
$this->assertFalse(Validation::naturalNumber('0'));

$this->assertTrue(Validation::naturalNumber('2'));
$this->assertTrue(Validation::naturalNumber(49));
$this->assertTrue(Validation::naturalNumber('0', true));
$this->assertTrue(Validation::naturalNumber(0, true));
}

/**
* testPhone method
*
Expand Down
13 changes: 13 additions & 0 deletions lib/Cake/Utility/Validation.php
Expand Up @@ -563,6 +563,19 @@ public static function numeric($check) {
return is_numeric($check);
}

/**
* Checks if a value is a natural value.
*
* @param string $check Value to check
* @param boolean $allowZero Set true to allow zero, defaults to false
* @return boolean Success
* @see http://en.wikipedia.org/wiki/Natural_number
*/
public static function naturalNumber($check, $allowZero = false) {
$regex = $allowZero ? '/^(?:0|[1-9][0-9]*)$/' : '/^[1-9][0-9]*$/';
return self::_check($check, $regex);
}

/**
* Check that a value is a valid phone number.
*
Expand Down

0 comments on commit 7546be6

Please sign in to comment.