15 #ifndef INCG_IRIS_IUTEST_PACKAGE_HPP_F57C9B7E_7CAA_4429_BE75_FCAAEED1B220_
16 #define INCG_IRIS_IUTEST_PACKAGE_HPP_F57C9B7E_7CAA_4429_BE75_FCAAEED1B220_
25 #define IUTEST_PACKAGE(name) IIUT_PACKAGE_(name)
32 #if IUTEST_HAS_PACKAGE
34 #define IUTEST_CONCAT_PACKAGE_(testcasename_) IIUT_CONCAT_PACKAGE_I(testcasename_)
35 #define IIUT_CONCAT_PACKAGE_I(testcasename_) \
36 iuTest_ConcatTestCaseName( iuTest_GetTestCasePackageName( \
37 static_cast<iuTest_TestCasePackage*>(NULL)) \
40 #define IUTEST_GET_PACKAGENAME_() \
41 iuTest_GetTestCasePackageName( static_cast<iuTest_TestCasePackage*>(NULL) )
44 #if IUTEST_HAS_IF_EXISTS
46 #define IIUT_PACKAGE_DECL_NAME_FUNC(name) \
47 static ::std::string IUTEST_ATTRIBUTE_UNUSED_ \
48 iuTest_GetTestCasePackageName(const iuTest_TestCasePackage*) { \
49 return iuTest_GetTestCaseParentPackageName( \
50 static_cast<iuTest_TestCaseParentPackage*>(NULL)) + #name "."; \
53 #define IIUT_PACKAGE_DECL_PARENT_NAME_FUNC(name) \
54 static ::std::string IUTEST_ATTRIBUTE_UNUSED_ \
55 iuTest_GetTestCaseParentPackageName(const iuTest_TestCaseParentPackage*) { \
56 return iuTest_GetTestCasePackageName(static_cast<iuTest_TestCasePackage*>(NULL)); \
60 #define IIUT_PACKAGE_CURRENT_NAMESPACE_(name) \
61 class iuTest_TestCasePackage; \
62 __if_not_exists(name::iuTest_GetTestCasePackageName) { \
63 IIUT_PACKAGE_DECL_NAME_FUNC(name) \
66 #define IIUT_PACKAGE_PARENT_NAMESPACE_(name) \
67 class iuTest_TestCaseParentPackage; \
68 __if_not_exists(name::iuTest_GetTestCaseParentPackageName) { \
69 IUTEST_PRAGMA_MSC_WARN_PUSH() \
70 IUTEST_PRAGMA_MSC_WARN_DISABLE(4505) \
71 IIUT_PACKAGE_DECL_PARENT_NAME_FUNC(name) \
72 IUTEST_PRAGMA_MSC_WARN_POP() \
77 #define IIUT_PACKAGE_CURRENT_NAMESPACE_(name) \
78 class iuTest_TestCasePackage; \
79 namespace { const int IUTEST_PP_CAT(k_iutest_package_##name##_dummy_, IUTEST_PP_UNIQUEID) \
80 IUTEST_ATTRIBUTE_UNUSED_ = ::iutest::detail::package_name_server< \
81 iuTest_TestCasePackage>::setname(iuTest_GetTestCaseParentPackageName( \
82 static_cast<iuTest_TestCaseParentPackage*>(NULL)) + #name "."); \
85 #define IIUT_PACKAGE_PARENT_NAMESPACE_(name) \
86 class iuTest_TestCaseParentPackage; \
87 namespace { const int IUTEST_PP_CAT(k_iutest_package_##name##_parent_dummy_, IUTEST_PP_UNIQUEID) \
88 IUTEST_ATTRIBUTE_UNUSED_ = ::iutest::detail::package_name_server<iuTest_TestCaseParentPackage> \
89 ::setname(iuTest_GetTestCasePackageName(static_cast<iuTest_TestCasePackage*>(NULL))); \
94 #define IIUT_PACKAGE_(name) \
96 IIUT_PACKAGE_CURRENT_NAMESPACE_(name) \
97 IIUT_PACKAGE_PARENT_NAMESPACE_(name) \
103 #define IUTEST_CONCAT_PACKAGE_(testcasename_) IIUT_CONCAT_PACKAGE_I(testcasename_)
104 #define IIUT_CONCAT_PACKAGE_I(testcasename_) #testcasename_
105 #define IIUT_PACKAGE_(name) namespace name
106 #define IUTEST_GET_PACKAGENAME_() ""
114 #if IUTEST_HAS_PACKAGE
116 class iuTest_TestCasePackage;
117 class iuTest_TestCaseParentPackage;
119 #if IUTEST_HAS_IF_EXISTS
150 class package_name_server
152 static ::std::string& getname_() { static ::std::string s;
return s; }
154 static ::std::string getname() {
return getname_(); }
155 static int setname(const ::std::string& s)
157 ::std::string& name = getname_();
176 return ::iutest::detail::package_name_server<T>::getname();
186 return ::iutest::detail::package_name_server<T>::getname();
195 inline ::std::string IUTEST_ATTRIBUTE_UNUSED_
iuTest_ConcatTestCaseName(const ::std::string& package,
const char* testcase_name)
197 return package + testcase_name;
202 #endif // INCG_IRIS_IUTEST_PACKAGE_HPP_F57C9B7E_7CAA_4429_BE75_FCAAEED1B220_