diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-05-17 15:55:11 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-05-17 15:55:11 -0300 |
commit | 33ab32f1b581dd2e0c39b01c8d8c53254b693541 (patch) | |
tree | 98b6b7df7f08cc2d7a3636b3c321f17e3c972c69 | |
parent | 31fb1ef536db5c593613e6c34dd6546000066f67 (diff) | |
parent | 933b2125e6c4b75a8c8fb0b497c5e1572169139c (diff) | |
download | rails-33ab32f1b581dd2e0c39b01c8d8c53254b693541.tar.gz rails-33ab32f1b581dd2e0c39b01c8d8c53254b693541.tar.bz2 rails-33ab32f1b581dd2e0c39b01c8d8c53254b693541.zip |
Merge pull request #15149 from sgrif/sg-missing-tests
Add missing tests for column type cast behavior
-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 |