提交 933b2125 编写于 作者: S Sean Griffin

Add missing tests for column type cast behavior

上级 1b8529ec
......@@ -35,6 +35,13 @@ def test_type_cast_boolean
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 @@ def test_type_cast_nan_and_infinity_to_integer
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 @@ def test_string_to_time_with_timezone
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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册