Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

account for localized floats more robustly.

Normalize floats, strings too, so that they are validated as

    dddddddddd.dd

ref #2853
  • Loading branch information...
commit 4e0627232c284d697e4e61f41a076de42d2f2d2c 1 parent 0a51458
@AD7six AD7six authored
View
9 lib/Cake/Test/Case/Utility/ValidationTest.php
@@ -1660,12 +1660,15 @@ public function testDecimalCustomRegex() {
* @return void
*/
public function testDecimalLocaleSet() {
- $this->skipIf(DS === '\\', 'The locale is not supported in Windows and affect the others tests.');
+ $this->skipIf(DS === '\\', 'The locale is not supported in Windows and affects other tests.');
$restore = setlocale(LC_NUMERIC, 0);
$this->skipIf(setlocale(LC_NUMERIC, 'de_DE') === false, "The German locale isn't available.");
- $this->assertTrue(Validation::decimal(1.54));
- $this->assertTrue(Validation::decimal('1.54'));
+ $this->assertTrue(Validation::decimal(1.54), '1.54 should be considered a valid float');
+ $this->assertTrue(Validation::decimal('1.54'), '"1.54" should be considered a valid float');
+
+ $this->assertTrue(Validation::decimal(12345.67), '12345.67 should be considered a valid float');
+ $this->assertTrue(Validation::decimal('12,345.67'), '"12,345.67" should be considered a valid float');
setlocale(LC_NUMERIC, $restore);
}
View
9 lib/Cake/Utility/Validation.php
@@ -426,10 +426,11 @@ public static function decimal($check, $places = null, $regex = null) {
}
}
- // Workaround localized floats.
- if (is_float($check)) {
- $check = str_replace(',', '.', strval($check));
- }
+ // account for localized floats.
+ $data = localeconv();
+ $check = str_replace($data['thousands_sep'], '', $check);
+ $check = str_replace($data['decimal_point'], '.', $check);
+
return self::_check($check, $regex);
}
Please sign in to comment.
Something went wrong with that request. Please try again.