TEST_F(BooleanValueTests, CastTest) { type::Value result; auto valTrue0 = type::ValueFactory::GetVarcharValue("TrUe"); result = type::ValueFactory::CastAsBoolean(valTrue0); EXPECT_TRUE(result.IsTrue()); result = valTrue0.CastAs(type::TypeId::BOOLEAN); EXPECT_TRUE(result.IsTrue()); auto valTrue1 = type::ValueFactory::GetVarcharValue("1"); result = type::ValueFactory::CastAsBoolean(valTrue1); EXPECT_TRUE(result.IsTrue()); auto valTrue2 = type::ValueFactory::GetVarcharValue("t"); result = type::ValueFactory::CastAsBoolean(valTrue2); EXPECT_TRUE(result.IsTrue()); auto valFalse0 = type::ValueFactory::GetVarcharValue("FaLsE"); result = type::ValueFactory::CastAsBoolean(valFalse0); EXPECT_TRUE(result.IsFalse()); result = valFalse0.CastAs(type::TypeId::BOOLEAN); EXPECT_TRUE(result.IsFalse()); auto valFalse1 = type::ValueFactory::GetVarcharValue("0"); result = type::ValueFactory::CastAsBoolean(valFalse1); EXPECT_TRUE(result.IsFalse()); auto valFalse2 = type::ValueFactory::GetVarcharValue("f"); result = type::ValueFactory::CastAsBoolean(valFalse2); EXPECT_TRUE(result.IsFalse()); auto valBustedLike = type::ValueFactory::GetVarcharValue("YourMom"); EXPECT_THROW(type::ValueFactory::CastAsBoolean(valBustedLike), peloton::Exception); }
TEST_F(TimestampValueTests, CastTest) { type::Value result; auto strNull = type::ValueFactory::GetNullValueByType(type::TypeId::VARCHAR); auto valNull = type::ValueFactory::GetNullValueByType(type::TypeId::TIMESTAMP); result = valNull.CastAs(type::TypeId::TIMESTAMP); EXPECT_TRUE(result.IsNull()); EXPECT_EQ(result.CompareEquals(valNull) == type::CMP_NULL, true); EXPECT_EQ(result.GetTypeId(), valNull.GetTypeId()); result = valNull.CastAs(type::TypeId::VARCHAR); EXPECT_TRUE(result.IsNull()); EXPECT_EQ(result.CompareEquals(strNull) == type::CMP_NULL, true); EXPECT_EQ(result.GetTypeId(), strNull.GetTypeId()); EXPECT_THROW(valNull.CastAs(type::TypeId::BOOLEAN), peloton::Exception); auto valValid = type::ValueFactory::GetTimestampValue(static_cast<uint64_t>(1481746648)); result = valValid.CastAs(type::TypeId::VARCHAR); EXPECT_FALSE(result.IsNull()); }