Beispiel #1
0
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());
}