From 933b2125e6c4b75a8c8fb0b497c5e1572169139c Mon Sep 17 00:00:00 2001 From: Sean Griffin Date: Sat, 17 May 2014 10:38:04 -0600 Subject: Add missing tests for column type cast behavior --- activerecord/test/cases/column_test.rb | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'activerecord/test/cases/column_test.rb') 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 -- cgit v1.2.3