// ================================================================================ // == This file is a part of Turbo Badger. (C) 2011-2014, Emil Segerås == // == See tb_core.h for more information. == // ================================================================================ #include "tb_test.h" #include "tb_object.h" #ifdef TB_UNIT_TESTING using namespace tb; TB_TEST_GROUP(tb_object) { class Car : public TBTypedObject { public: TBOBJECT_SUBCLASS(Car, TBTypedObject); }; class Fruit : public TBTypedObject { public: TBOBJECT_SUBCLASS(Fruit, TBTypedObject); }; class Apple : public Fruit { public: TBOBJECT_SUBCLASS(Apple, Fruit); }; TB_TEST(safe_cast) { Fruit fruit; Apple apple; Car car; TB_VERIFY(TBSafeCast(&fruit)); TB_VERIFY(TBSafeCast(&apple)); TB_VERIFY(TBSafeCast(&car)); TB_VERIFY(TBSafeCast(&fruit)); TB_VERIFY(TBSafeCast(&apple)); TB_VERIFY(!TBSafeCast(&car)); TB_VERIFY(!TBSafeCast(&fruit)); TB_VERIFY(TBSafeCast(&apple)); TB_VERIFY(!TBSafeCast(&car)); TB_VERIFY(!TBSafeCast(&fruit)); TB_VERIFY(!TBSafeCast(&apple)); TB_VERIFY(TBSafeCast(&car)); } } #endif // TB_UNIT_TESTING