diff options
author | Sean Griffin <sean@thoughtbot.com> | 2014-05-17 10:38:04 -0600 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2014-05-17 12:29:34 -0600 |
commit | 933b2125e6c4b75a8c8fb0b497c5e1572169139c (patch) | |
tree | a4ac32edc23837516295c7df9397064bf809e1c8 /activerecord/test/cases | |
parent | 1b8529ec028d5189d3c104fcf470824d3ada7ff2 (diff) | |
download | rails-933b2125e6c4b75a8c8fb0b497c5e1572169139c.tar.gz rails-933b2125e6c4b75a8c8fb0b497c5e1572169139c.tar.bz2 rails-933b2125e6c4b75a8c8fb0b497c5e1572169139c.zip |
Add missing tests for column type cast behavior
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/column_test.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/activerecord/test/cases/column_test.rb b/activerecord/test/cases/column_test.rb index 2a6d8cc2ab..39489c3718 100644 --- a/activerecord/test/cases/column_test.rb +++ b/activerecord/test/cases/column_test.rb @@ -35,6 +35,13 @@ module ActiveRecord assert_equal false, column.type_cast('SOMETHING RANDOM') end + def test_type_cast_string + column = Column.new("field", nil, "varchar") + assert_equal "1", column.type_cast(true) + assert_equal "0", column.type_cast(false) + assert_equal "123", column.type_cast(123) + end + def test_type_cast_integer column = Column.new("field", nil, "integer") assert_equal 1, column.type_cast(1) @@ -72,6 +79,25 @@ module ActiveRecord assert_nil column.type_cast(1.0/0.0) end + def test_type_cast_float + column = Column.new("field", nil, "float") + assert_equal 1.0, column.type_cast("1") + end + + def test_type_cast_decimal + column = Column.new("field", nil, "decimal") + assert_equal BigDecimal.new("0"), column.type_cast(BigDecimal.new("0")) + assert_equal BigDecimal.new("123"), column.type_cast(123.0) + assert_equal BigDecimal.new("1"), column.type_cast(:"1") + end + + def test_type_cast_binary + column = Column.new("field", nil, "binary") + assert_equal nil, column.type_cast(nil) + assert_equal "1", column.type_cast("1") + assert_equal 1, column.type_cast(1) + end + def test_type_cast_time column = Column.new("field", nil, "time") assert_equal nil, column.type_cast(nil) @@ -118,6 +144,16 @@ module ActiveRecord end end end + + if current_adapter?(:SQLite3Adapter) + def test_binary_encoding + column = SQLite3Column.new("field", nil, "binary") + utf8_string = "a string".encode(Encoding::UTF_8) + type_cast = column.type_cast(utf8_string) + + assert_equal Encoding::ASCII_8BIT, type_cast.encoding + end + end end end end |