public
Description: Ruby on Rails
Homepage: http://rubyonrails.org
Clone URL: git://github.com/rails/rails.git
Allow Infinity (1.0/0.0) to pass validates_numericality_of. [#354 
state:resolved]

Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
ctcherry (author)
Thu Jun 05 23:26:35 -0700 2008
jeremy (committer)
Tue Jul 15 15:54:19 -0700 2008
commit  d12660022525b9b1e25b92cd4639e32c8608f729
tree    b3f9e20cd359ed4c9de34397732dbddd829a6483
parent  b32790c558435a3cb454a1221fb520264d3d42c2
...
855
856
857
858
 
859
860
861
...
855
856
857
 
858
859
860
861
0
@@ -855,7 +855,7 @@ module ActiveRecord
0
             raw_value = raw_value.to_i
0
           else
0
            begin
0
-              raw_value = Kernel.Float(raw_value.to_s)
0
+              raw_value = Kernel.Float(raw_value)
0
             rescue ArgumentError, TypeError
0
               record.errors.add(attr_name, configuration[:message] || ActiveRecord::Errors.default_error_messages[:not_a_number])
0
               next
...
1391
1392
1393
 
1394
1395
1396
...
1402
1403
1404
1405
 
1406
1407
1408
1409
1410
1411
1412
 
1413
1414
1415
1416
1417
1418
 
1419
1420
1421
1422
1423
1424
1425
 
1426
1427
1428
...
1443
1444
1445
1446
 
1447
1448
1449
...
1391
1392
1393
1394
1395
1396
1397
...
1403
1404
1405
 
1406
1407
1408
1409
1410
1411
1412
 
1413
1414
1415
1416
1417
1418
 
1419
1420
1421
1422
1423
1424
1425
 
1426
1427
1428
1429
...
1444
1445
1446
 
1447
1448
1449
1450
0
@@ -1391,6 +1391,7 @@ class ValidatesNumericalityTest < ActiveRecord::TestCase
0
   INTEGERS = [0, 10, -10] + INTEGER_STRINGS
0
   BIGDECIMAL = BIGDECIMAL_STRINGS.collect! { |bd| BigDecimal.new(bd) }
0
   JUNK = ["not a number", "42 not a number", "0xdeadbeef", "00-1", "--3", "+-3", "+3-1", "-+019.0", "12.12.13.12", "123\nnot a number"]
0
+  INFINITY = [1.0/0.0]
0
 
0
   def setup
0
     Topic.instance_variable_set("@validate_callbacks", ActiveSupport::Callbacks::CallbackChain.new)
0
@@ -1402,27 +1403,27 @@ class ValidatesNumericalityTest < ActiveRecord::TestCase
0
     Topic.validates_numericality_of :approved
0
 
0
     invalid!(NIL + BLANK + JUNK)
0
-    valid!(FLOATS + INTEGERS + BIGDECIMAL)
0
+    valid!(FLOATS + INTEGERS + BIGDECIMAL + INFINITY)
0
   end
0
 
0
   def test_validates_numericality_of_with_nil_allowed
0
     Topic.validates_numericality_of :approved, :allow_nil => true
0
 
0
     invalid!(BLANK + JUNK)
0
-    valid!(NIL + FLOATS + INTEGERS + BIGDECIMAL)
0
+    valid!(NIL + FLOATS + INTEGERS + BIGDECIMAL + INFINITY)
0
   end
0
 
0
   def test_validates_numericality_of_with_integer_only
0
     Topic.validates_numericality_of :approved, :only_integer => true
0
 
0
-    invalid!(NIL + BLANK + JUNK + FLOATS + BIGDECIMAL)
0
+    invalid!(NIL + BLANK + JUNK + FLOATS + BIGDECIMAL + INFINITY)
0
     valid!(INTEGERS)
0
   end
0
 
0
   def test_validates_numericality_of_with_integer_only_and_nil_allowed
0
     Topic.validates_numericality_of :approved, :only_integer => true, :allow_nil => true
0
 
0
-    invalid!(BLANK + JUNK + FLOATS + BIGDECIMAL)
0
+    invalid!(BLANK + JUNK + FLOATS + BIGDECIMAL + INFINITY)
0
     valid!(NIL + INTEGERS)
0
   end
0
 
0
@@ -1443,7 +1444,7 @@ class ValidatesNumericalityTest < ActiveRecord::TestCase
0
   def test_validates_numericality_with_equal_to
0
     Topic.validates_numericality_of :approved, :equal_to => 10
0
 
0
-    invalid!([-10, 11], 'must be equal to 10')
0
+    invalid!([-10, 11] + INFINITY, 'must be equal to 10')
0
     valid!([10])
0
   end
0
 

Comments