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_(testsuitename_) IIUT_CONCAT_PACKAGE_I(testsuitename_)
35 #define IIUT_CONCAT_PACKAGE_I(testsuitename_) \
36 iuTest_ConcatTestSuiteName( iuTest_GetTestSuitePackageName( \
37 static_cast<iuTest_TestSuitePackage*>(NULL)) \
40 #define IUTEST_GET_PACKAGENAME_() \
41 iuTest_GetTestSuitePackageName( static_cast<iuTest_TestSuitePackage*>(NULL) )
44 #if IUTEST_HAS_IF_EXISTS
46 #define IIUT_PACKAGE_DECL_NAME_FUNC(name) \
47 static ::std::string IUTEST_ATTRIBUTE_UNUSED_ \
48 iuTest_GetTestSuitePackageName(const iuTest_TestSuitePackage*) { \
49 return iuTest_GetTestSuiteParentPackageName( \
50 static_cast<iuTest_TestSuiteParentPackage*>(NULL)) + #name "."; \
53 #define IIUT_PACKAGE_DECL_PARENT_NAME_FUNC(name) \
54 static ::std::string IUTEST_ATTRIBUTE_UNUSED_ \
55 iuTest_GetTestSuiteParentPackageName(const iuTest_TestSuiteParentPackage*) { \
56 return iuTest_GetTestSuitePackageName(static_cast<iuTest_TestSuitePackage*>(NULL)); \
60 #define IIUT_PACKAGE_CURRENT_NAMESPACE_(name) \
61 class iuTest_TestSuitePackage; \
62 __if_not_exists(name::iuTest_GetTestSuitePackageName) { \
63 IIUT_PACKAGE_DECL_NAME_FUNC(name) \
66 #define IIUT_PACKAGE_PARENT_NAMESPACE_(name) \
67 class iuTest_TestSuiteParentPackage; \
68 __if_not_exists(name::iuTest_GetTestSuiteParentPackageName) { \
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_TestSuitePackage; \
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_TestSuitePackage>::setname(iuTest_GetTestSuiteParentPackageName( \
82 static_cast<iuTest_TestSuiteParentPackage*>(NULL)) + #name "."); \
85 #define IIUT_PACKAGE_PARENT_NAMESPACE_(name) \
86 class iuTest_TestSuiteParentPackage; \
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_TestSuiteParentPackage> \
89 ::setname(iuTest_GetTestSuitePackageName(static_cast<iuTest_TestSuitePackage*>(NULL))); \
94 #define IIUT_PACKAGE_(name) \
96 IIUT_PACKAGE_CURRENT_NAMESPACE_(name) \
97 IIUT_PACKAGE_PARENT_NAMESPACE_(name) \
103 #define IUTEST_CONCAT_PACKAGE_(testsuitename_) IIUT_CONCAT_PACKAGE_I(testsuitename_)
104 #define IIUT_CONCAT_PACKAGE_I(testsuitename_) #testsuitename_
105 #define IIUT_PACKAGE_(name) namespace name
106 #define IUTEST_GET_PACKAGENAME_() ""
114 #if IUTEST_HAS_PACKAGE
116 class iuTest_TestSuitePackage;
117 class iuTest_TestSuiteParentPackage;
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_ConcatTestSuiteName(const ::std::string& package,
const char* testsuite_name)
197 return package + testsuite_name;
inline ::std::string IUTEST_ATTRIBUTE_UNUSED_ iuTest_ConcatTestSuiteName(const ::std::string &package, const char *testsuite_name)
TestSuite 名との結合
Definition: iutest_package.hpp:196
::std::string iuTest_GetTestSuitePackageName(T *)
パッケージ名の取得
Definition: iutest_package.hpp:175
::std::string iuTest_GetTestSuiteParentPackageName(T *)
親空間のパッケージ名の取得
Definition: iutest_package.hpp:185
iutest root namespace
Definition: iutest_charcode.hpp:33