TEST(MInstrEffects, PromoteNull) { MInstrEffects elem(SetElem, TLvalToNull); EXPECT_TEQ(TLvalToArr, elem.baseType); EXPECT_TRUE(elem.baseTypeChanged); EXPECT_TRUE(elem.baseValChanged); MInstrEffects prop(SetProp, TLvalToUninit); EXPECT_TEQ(TLvalToObj, prop.baseType); EXPECT_TRUE(prop.baseTypeChanged); EXPECT_TRUE(prop.baseValChanged); }
TEST(VectorEffects, PromoteNull) { VectorEffects elem(SetElem, Type::PtrToNull, Type::Int, Type::Str); EXPECT_TEQ(Type::PtrToArr, elem.baseType); EXPECT_TRUE(elem.baseTypeChanged); EXPECT_TRUE(elem.baseValChanged); VectorEffects prop(SetProp, Type::PtrToUninit, Type::StaticStr, Type::Str); EXPECT_TEQ(Type::PtrToObj, prop.baseType); EXPECT_TRUE(prop.baseTypeChanged); EXPECT_TRUE(prop.baseValChanged); }
TEST(VectorEffects, Basic) { VectorEffects elem(SetElem, Type::PtrToArr, Type::Int, Type::Str); EXPECT_TEQ(Type::PtrToArr, elem.baseType); EXPECT_FALSE(elem.baseTypeChanged); EXPECT_TRUE(elem.baseValChanged); VectorEffects prop(SetProp, Type::Obj, Type::StaticStr, Type::Str); EXPECT_TEQ(Type::Obj, prop.baseType); EXPECT_FALSE(prop.baseTypeChanged); EXPECT_FALSE(prop.baseValChanged); }
TEST(MInstrEffects, Basic) { MInstrEffects elem(SetElem, TLvalToArr); EXPECT_TEQ(TLvalToArr, elem.baseType); EXPECT_FALSE(elem.baseTypeChanged); EXPECT_TRUE(elem.baseValChanged); MInstrEffects prop(SetProp, TObj); EXPECT_TEQ(TObj, prop.baseType); EXPECT_FALSE(prop.baseTypeChanged); EXPECT_FALSE(prop.baseValChanged); }
TEST(VectorEffects, UnknownBase) { VectorEffects ve(SetElem, Type::PtrToCell, Type::Int, Type::Obj); EXPECT_TEQ(Type::PtrToCell, ve.baseType); EXPECT_FALSE(ve.baseTypeChanged); EXPECT_TRUE(ve.baseValChanged); }
TEST(VectorEffects, NonArrElem) { VectorEffects ve(SetElem, Type::PtrToDbl, Type::Int, Type::Obj); EXPECT_TEQ(Type::PtrToDbl, ve.baseType); EXPECT_FALSE(ve.baseTypeChanged); EXPECT_FALSE(ve.baseValChanged); }
TEST(VectorEffects, NonObjProp) { VectorEffects ve(SetProp, Type::PtrToInt, Type::Str, Type::Dbl); EXPECT_TEQ(Type::PtrToInt, ve.baseType); EXPECT_FALSE(ve.baseTypeChanged); EXPECT_FALSE(ve.baseValChanged); }
TEST(VectorEffects, BadArrayKey) { VectorEffects ve(SetElem, Type::PtrToArr, Type::Arr, Type::Int); EXPECT_TEQ(Type::PtrToArr, ve.baseType); EXPECT_FALSE(ve.baseTypeChanged); EXPECT_TRUE(ve.baseValChanged); }
TEST(MInstrEffects, UnknownBase) { MInstrEffects effects(SetElem, TLvalToCell); EXPECT_TEQ(TLvalToCell - TLvalToNull, effects.baseType); EXPECT_TRUE(effects.baseTypeChanged); EXPECT_TRUE(effects.baseValChanged); }
TEST(MInstrEffects, NonArrElem) { MInstrEffects effects(SetElem, TLvalToDbl); EXPECT_TEQ(TLvalToDbl, effects.baseType); EXPECT_FALSE(effects.baseTypeChanged); EXPECT_FALSE(effects.baseValChanged); }
TEST(MInstrEffects, NonObjProp) { MInstrEffects effects(SetProp, TLvalToInt); EXPECT_TEQ(TLvalToInt, effects.baseType); EXPECT_FALSE(effects.baseTypeChanged); EXPECT_FALSE(effects.baseValChanged); }
TEST(MInstrEffects, BadArrayKey) { MInstrEffects effects(SetElem, TLvalToArr); EXPECT_TEQ(TLvalToArr, effects.baseType); EXPECT_FALSE(effects.baseTypeChanged); EXPECT_TRUE(effects.baseValChanged); }