AutoTest: Simplify TestFrameworkManager

With only four items the hash is not really needed.

Change-Id: Ifc858bc6517e4e0ff46b515a74568742897ddb11
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2020-03-19 16:59:59 +01:00
parent dd980e23f8
commit 05a0b33146
2 changed files with 21 additions and 31 deletions

View File

@@ -65,43 +65,34 @@ TestFrameworkManager *TestFrameworkManager::instance()
TestFrameworkManager::~TestFrameworkManager() TestFrameworkManager::~TestFrameworkManager()
{ {
delete m_testRunner; delete m_testRunner;
for (ITestFramework *framework : m_registeredFrameworks.values()) qDeleteAll(m_registeredFrameworks);
delete framework;
} }
bool TestFrameworkManager::registerTestFramework(ITestFramework *framework) bool TestFrameworkManager::registerTestFramework(ITestFramework *framework)
{ {
QTC_ASSERT(framework, return false); QTC_ASSERT(framework, return false);
Id id = framework->id(); QTC_ASSERT(!m_registeredFrameworks.contains(framework), return false);
QTC_ASSERT(!m_registeredFrameworks.contains(id), delete framework; return false);
// TODO check for unique priority before registering // TODO check for unique priority before registering
qCDebug(LOG) << "Registering" << id; m_registeredFrameworks.append(framework);
m_registeredFrameworks.insert(id, framework);
if (IFrameworkSettings *frameworkSettings = framework->frameworkSettings())
m_frameworkSettings.insert(id, frameworkSettings);
return true; return true;
} }
void TestFrameworkManager::activateFrameworksFromSettings(const Internal::TestSettings *settings) void TestFrameworkManager::activateFrameworksFromSettings(const Internal::TestSettings *settings)
{ {
FrameworkIterator it = m_registeredFrameworks.begin(); for (ITestFramework *framework : qAsConst(m_registeredFrameworks)) {
FrameworkIterator end = m_registeredFrameworks.end(); framework->setActive(settings->frameworks.value(framework->id(), false));
for ( ; it != end; ++it) { framework->setGrouping(settings->frameworksGrouping.value(framework->id(), false));
it.value()->setActive(settings->frameworks.value(it.key(), false));
it.value()->setGrouping(settings->frameworksGrouping.value(it.key(), false));
} }
} }
TestFrameworks TestFrameworkManager::registeredFrameworks() const TestFrameworks TestFrameworkManager::registeredFrameworks() const
{ {
return m_registeredFrameworks.values(); return m_registeredFrameworks;
} }
TestFrameworks TestFrameworkManager::sortedRegisteredFrameworks() const TestFrameworks TestFrameworkManager::sortedRegisteredFrameworks() const
{ {
TestFrameworks registered = m_registeredFrameworks.values(); TestFrameworks registered = m_registeredFrameworks;
Utils::sort(registered, &ITestFramework::priority); Utils::sort(registered, &ITestFramework::priority);
qCDebug(LOG) << "Registered frameworks sorted by priority" << registered; qCDebug(LOG) << "Registered frameworks sorted by priority" << registered;
return registered; return registered;
@@ -110,7 +101,7 @@ TestFrameworks TestFrameworkManager::sortedRegisteredFrameworks() const
TestFrameworks TestFrameworkManager::activeFrameworks() const TestFrameworks TestFrameworkManager::activeFrameworks() const
{ {
TestFrameworks active; TestFrameworks active;
for (ITestFramework *framework : m_registeredFrameworks) { for (ITestFramework *framework : qAsConst(m_registeredFrameworks)) {
if (framework->active()) if (framework->active())
active.append(framework); active.append(framework);
} }
@@ -127,31 +118,32 @@ TestFrameworks TestFrameworkManager::sortedActiveFrameworks() const
ITestFramework *TestFrameworkManager::frameworkForId(Id frameworkId) ITestFramework *TestFrameworkManager::frameworkForId(Id frameworkId)
{ {
return instance()->m_registeredFrameworks.value(frameworkId, nullptr); return Utils::findOrDefault(s_instance->m_registeredFrameworks,
[frameworkId](ITestFramework *framework) {
return framework->id() == frameworkId;
});
} }
IFrameworkSettings *TestFrameworkManager::settingsForTestFramework( IFrameworkSettings *TestFrameworkManager::settingsForTestFramework(
const Id &frameworkId) const const Id &frameworkId) const
{ {
return m_frameworkSettings.value(frameworkId, nullptr); ITestFramework *framework = frameworkForId(frameworkId);
QTC_ASSERT(framework, return nullptr);
return framework->frameworkSettings();
} }
void TestFrameworkManager::synchronizeSettings(QSettings *s) void TestFrameworkManager::synchronizeSettings(QSettings *s)
{ {
Internal::AutotestPlugin::settings()->fromSettings(s); Internal::AutotestPlugin::settings()->fromSettings(s);
for (const Id &id : m_frameworkSettings.keys()) { for (ITestFramework *framework : qAsConst(m_registeredFrameworks)) {
if (IFrameworkSettings *fSettings = settingsForTestFramework(id)) if (IFrameworkSettings *fSettings = framework->frameworkSettings())
fSettings->fromSettings(s); fSettings->fromSettings(s);
} }
} }
bool TestFrameworkManager::hasActiveFrameworks() const bool TestFrameworkManager::hasActiveFrameworks() const
{ {
for (ITestFramework *framework : m_registeredFrameworks.values()) { return Utils::anyOf(m_registeredFrameworks, &ITestFramework::active);
if (framework->active())
return true;
}
return false;
} }
Id ITestFramework::settingsId() const Id ITestFramework::settingsId() const

View File

@@ -66,11 +66,9 @@ public:
private: private:
TestFrameworks activeFrameworks() const; TestFrameworks activeFrameworks() const;
explicit TestFrameworkManager(); explicit TestFrameworkManager();
QHash<Core::Id, ITestFramework *> m_registeredFrameworks;
QHash<Core::Id, IFrameworkSettings *> m_frameworkSettings;
Internal::TestRunner *m_testRunner;
typedef QHash<Core::Id, ITestFramework *>::ConstIterator FrameworkIterator; TestFrameworks m_registeredFrameworks;
Internal::TestRunner *m_testRunner;
}; };
} // namespace Autotest } // namespace Autotest