forked from drogonframework/drogon
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDrObjectUnittest.cpp
48 lines (41 loc) · 1.14 KB
/
DrObjectUnittest.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <drogon/DrObject.h>
#include <gtest/gtest.h>
#include <string>
#include <iostream>
using namespace drogon;
class TestA : public DrObject<TestA>
{
};
namespace test
{
class TestB : public DrObject<TestB>
{
};
} // namespace test
TEST(DrObjectTest, creationTest)
{
using PtrType = std::shared_ptr<DrObjectBase>;
auto obj = PtrType(DrClassMap::newObject("TestA"));
EXPECT_NE(obj, nullptr);
auto objPtr = DrClassMap::getSingleInstance("TestA");
EXPECT_NE(objPtr.get(), nullptr);
auto objPtr2 = DrClassMap::getSingleInstance<TestA>();
EXPECT_NE(objPtr2.get(), nullptr);
EXPECT_EQ(objPtr, objPtr2);
}
TEST(DrObjectTest, namespaceTest)
{
using PtrType = std::shared_ptr<DrObjectBase>;
auto obj = PtrType(DrClassMap::newObject("test::TestB"));
EXPECT_NE(obj, nullptr);
auto objPtr = DrClassMap::getSingleInstance("test::TestB");
EXPECT_NE(objPtr.get(), nullptr);
auto objPtr2 = DrClassMap::getSingleInstance<test::TestB>();
EXPECT_NE(objPtr2.get(), nullptr);
EXPECT_EQ(objPtr, objPtr2);
}
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}