void SwitchManager::changeActivity(const std::shared_ptr<ActivityChangeRequest> &request)
{
ASSERT(request, "request is not initialized");
- if (activities.empty() || (activities.back() && activities.back()->getType() != request->getActivityType())) {
+ if (activities.empty() || (activities.top() && activities.top()->getType() != request->getActivityType())) {
auto activity = activityFactory->createActivity(request->getActivityType());
if (!activity) {
ERROR("Activity stack size: %d, unhandled activity type name: %s", activities.size(), request->getActivityType().c_str());
auto uiActivity = dynamic_cast<UIActivity *>(activity.get());
if (uiActivity)
- uiActivity->setUIElement(request->getUIElement());
+ uiActivity->update(request->getUIElement());
- activities.push_back(activity);
+ activities.push(activity);
}
bool completed = false;
if (activities.empty())
ERROR("No activity provided.");
else
- completed = activities.back()->process();
+ completed = activities.top()->process();
if (completed)
- activities.pop_back();
+ activities.pop();
//TODO: check if activity change request observers are properly detached from activity object removed from activity stack
}
#include "ActivityChangeRequestObserver.hpp"
#include <memory>
+#include <stack>
class SwitchManager : public SwitchConfigurationItemObserver, public SwitchObserver, public std::enable_shared_from_this<SwitchManager>, public ActivityChangeRequestObserver
{
std::shared_ptr<Configuration> configuration;
std::shared_ptr<ActivityFactory> activityFactory;
- std::vector<std::shared_ptr<Activity>> activities;
+ std::stack<std::shared_ptr<Activity>> activities;
private:
void changeActivity(const std::shared_ptr<ActivityChangeRequest> &request);
TEST_F(ActivityProcessingFixture, ActivityNotFullyProcessed)
{
initialEnvironmentExpect();
- auto activity = switchManager_->getActivities().back();
+ auto activity = switchManager_->getActivities().top();
ASSERT_NE(activity, nullptr);
EXPECT_EQ(activity->getType(), "TWO_STEP_PROCESS_ACTIVITY");
}
TEST_F(ActivityProcessingFixture, ActivityReady)
{
initialEnvironmentExpect();
- auto activity = switchManager_->getActivities().back();
+ auto activity = switchManager_->getActivities().top();
ASSERT_NE(activity, nullptr);
EXPECT_EQ(activity->getType(), "TWO_STEP_PROCESS_ACTIVITY");
TEST_F(ActivityProcessingFixture, ActivityAbandoned)
{
initialEnvironmentExpect();
- auto activity = switchManager_->getActivities().back();
+ auto activity = switchManager_->getActivities().top();
ASSERT_NE(activity, nullptr);
EXPECT_EQ(activity->getType(), "TWO_STEP_PROCESS_ACTIVITY");
simulateKeyDown(keyMappedToThreeStepProcessActivity_);
EXPECT_EQ(switchManager_->getActivities().size(), 2u);
- activity = switchManager_->getActivities().back();
+ activity = switchManager_->getActivities().top();
ASSERT_NE(activity, nullptr);
EXPECT_EQ(activity->getType(), "THREE_STEP_PROCESS_ACTIVITY");
simulateKeyDown(keyMappedToThreeStepProcessActivity_);
EXPECT_EQ(switchManager_->getActivities().size(), 2u);
- activity = switchManager_->getActivities().back();
+ activity = switchManager_->getActivities().top();
ASSERT_NE(activity, nullptr);
EXPECT_EQ(activity->getType(), "THREE_STEP_PROCESS_ACTIVITY");
simulateKeyDown(keyMappedToThreeStepProcessActivity_);
EXPECT_EQ(switchManager_->getActivities().size(), 1u);
- activity = switchManager_->getActivities().back();
+ activity = switchManager_->getActivities().top();
ASSERT_NE(activity, nullptr);
EXPECT_EQ(activity->getType(), "TWO_STEP_PROCESS_ACTIVITY");
}