15 #ifndef INCG_IRIS_IUTEST_UTIL_MENU_HPP_52925DE1_A4AE_4CCB_B524_8E97AA73E03D_
16 #define INCG_IRIS_IUTEST_UTIL_MENU_HPP_52925DE1_A4AE_4CCB_B524_8E97AA73E03D_
24 #if defined(IUTEST_OS_WINDOWS)
38 typedef ::std::map<WORD, const ::iutest::TestInfo*> TestInfoMap;
39 typedef ::std::map<WORD, const ::iutest::TestSuite*> TestSuiteMap;
43 TestInfoMap m_TestInfoList;
44 TestSuiteMap m_TestSuiteList;
46 explicit TestMenu(WORD nIDTop) : m_nIDTop(nIDTop), m_nID(nIDTop), m_hRootMenu(NULL) {}
48 bool Create(HMENU hMenu)
54 if( m_hRootMenu == NULL )
61 return AppendPopup(hMenu,
"TestList", m_hRootMenu);
66 HMENU hRoot = CreateMenu();
72 Append(hRoot,
"以下をすべて実行", m_nID);
77 for(
int i=0; i < testsuite_count; ++i )
79 const ::iutest::TestSuite* pTestSuite = pUnitTest->
GetTestSuite(i);
81 HMENU hTestSuite = AppendPopup(hRoot, pTestSuite->name());
82 Append(hTestSuite,
"以下をすべて実行", m_nID);
83 #if IUTEST_HAS_STD_EMPLACE
84 m_TestSuiteList.emplace(m_nID, pTestSuite);
86 m_TestSuiteList.insert( ::std::pair<WORD, const ::iutest::TestSuite*>(m_nID, pTestSuite) );
89 for(
int j=0; j < test_count; ++j )
91 const ::iutest::TestInfo* pTestInfo = pTestSuite->GetTestInfo(j);
92 Append(hTestSuite, pTestInfo->name(), m_nID);
93 #if IUTEST_HAS_STD_EMPLACE
94 m_TestInfoList.emplace(m_nID, pTestInfo);
96 m_TestInfoList.insert(::std::pair<WORD, const ::iutest::TestInfo*>(m_nID, pTestInfo));
105 bool OnCommand(WORD wID)
107 if( wID == m_nIDTop )
114 TestInfoMap::iterator it = m_TestInfoList.find(wID);
115 if( it != m_TestInfoList.end() )
122 TestSuiteMap::iterator it = m_TestSuiteList.find(wID);
123 if( it != m_TestSuiteList.end() )
125 ::std::string filter = it->second->name();
134 bool TrackPopupMenu(HWND hWnd, POINT point)
136 if ( !::TrackPopupMenu(m_hRootMenu
137 , TPM_LEFTALIGN | TPM_BOTTOMALIGN
150 static bool Append(HMENU hMenu,
const char* lpszName, WORD nID)
153 MENUITEMINFOA mii = {0};
154 mii.cbSize =
sizeof(mii);
155 mii.fMask = MIIM_ID | MIIM_TYPE;
156 mii.fType = MFT_STRING;
157 mii.dwTypeData = str;
159 strcpy_s(str, lpszName);
160 const int num = ::GetMenuItemCount(hMenu);
161 if( !::InsertMenuItemA(hMenu, num, TRUE, &mii) )
167 static bool AppendPopup(HMENU hMenu,
const char* lpszName, HMENU hSubMenu)
170 MENUITEMINFOA mii = {0};
171 mii.cbSize =
sizeof(mii);
172 mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_SUBMENU;
173 mii.fType = MFT_STRING;
174 mii.dwTypeData = str;
175 mii.hSubMenu = hSubMenu;
176 strcpy_s(str, lpszName);
177 const int num = ::GetMenuItemCount(hMenu);
178 if( !::InsertMenuItemA(hMenu, num, TRUE, &mii) )
184 static HMENU AppendPopup(HMENU hMenu,
const char* lpszName)
186 HMENU hSubMenu = CreateMenu();
187 if( !AppendPopup(hMenu, lpszName, hSubMenu) )
189 DestroyMenu(hSubMenu);
int total_test_count() const IUTEST_CXX_NOEXCEPT_SPEC
Definition: iutest_suite.hpp:78
テスト全体の管理者
Definition: iutest_core.hpp:36
static UnitTest * GetInstance()
UnitTest インスタンスの取得
Definition: iutest_core.hpp:43
int total_test_suite_count() const
Definition: iutest_core.hpp:91
const TestSuite * GetTestSuite(int index) const
Definition: iutest_core.hpp:115
#define IUTEST_FLAG(name)
フラグセット
Definition: iutest_env.hpp:57
#define IUTEST_RUN_ALL_TESTS()
すべてのテストを実行する
Definition: iutest.hpp:160
iris unit test テスト情報 utility ファイル
iutest utility namespace
Definition: iutest_util.hpp:36
inline ::std::string TestFullName(const ::iutest::TestInfo *test_info)
Get TestName
Definition: iutest_util_tests.hpp:161