test_ewk2_object.cpp [plain text]
#include "config.h"
#include "UnitTestUtils/EWK2UnitTestBase.h"
#include "UnitTestUtils/EWK2UnitTestServer.h"
#include "WKEinaSharedString.h"
#include "ewk_object_private.h"
using namespace EWK2UnitTest;
using namespace WTF;
extern EWK2UnitTestEnvironment* environment;
class TestEwkObject1 : public EwkObject {
public:
EWK_OBJECT_DECLARE(TestEwkObject)
static Ref<TestEwkObject1> create()
{
wasDeleted = false;
return adoptRef(*new TestEwkObject1());
}
static bool wasDeleted;
~TestEwkObject1()
{
wasDeleted = true;
}
};
bool TestEwkObject1::wasDeleted = false;
class TestEwkObject2 : public EwkObject {
public:
EWK_OBJECT_DECLARE(TestEwkObject2)
static Ref<TestEwkObject2> create()
{
return adoptRef(*new TestEwkObject2());
}
};
TEST_F(EWK2UnitTestBase, ewk_object_ref)
{
Ewk_Object* objectRef = 0;
{
RefPtr<Ewk_Object> object = TestEwkObject1::create();
ASSERT_FALSE(TestEwkObject1::wasDeleted);
ASSERT_EQ(1, object->refCount());
objectRef = object.get();
ewk_object_ref(objectRef);
ASSERT_EQ(2, objectRef->refCount());
}
ASSERT_FALSE(TestEwkObject1::wasDeleted);
ASSERT_EQ(1, objectRef->refCount());
ewk_object_unref(objectRef);
ASSERT_TRUE(TestEwkObject1::wasDeleted);
}
TEST_F(EWK2UnitTestBase, ewk_object_is_of_type)
{
RefPtr<EwkObject> object1 = TestEwkObject1::create();
RefPtr<EwkObject> object2 = TestEwkObject2::create();
ASSERT_TRUE(ewk_object_is_of_type<TestEwkObject1*>(object1.get()));
ASSERT_TRUE(ewk_object_is_of_type<TestEwkObject2*>(object2.get()));
ASSERT_FALSE(ewk_object_is_of_type<TestEwkObject1*>(object2.get()));
ASSERT_FALSE(ewk_object_is_of_type<TestEwkObject2*>(object1.get()));
}
TEST_F(EWK2UnitTestBase, ewk_object_cast)
{
RefPtr<EwkObject> object1 = TestEwkObject1::create();
RefPtr<EwkObject> object2 = TestEwkObject2::create();
TestEwkObject1* objectRef1 = ewk_object_cast<TestEwkObject1*>(object1.get());
ASSERT_TRUE(objectRef1);
TestEwkObject2* objectRef2 = ewk_object_cast<TestEwkObject2*>(object2.get());
ASSERT_TRUE(objectRef2);
}