blob: 7ae1f6d47d6c6efdc3a8e6d3a1914916358fa65a [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/sys/activity/activity_control_connection.h"
#include <fuchsia/ui/activity/control/cpp/fidl.h>
#include <memory>
#include "src/lib/testing/loop_fixture/test_loop_fixture.h"
#include "src/sys/activity/state_machine_driver.h"
namespace activity {
class ActivityControlConnectionTest : public ::gtest::TestLoopFixture {
public:
ActivityControlConnectionTest() : driver_(dispatcher()) {}
void SetUp() override {
conn_ = std::make_unique<ActivityControlConnection>(&driver_, dispatcher(),
client_.NewRequest(dispatcher()));
}
protected:
StateMachineDriver driver_;
std::unique_ptr<ActivityControlConnection> conn_;
fuchsia::ui::activity::control::ControlPtr client_;
};
TEST_F(ActivityControlConnectionTest, SetState) {
client_->SetState(fuchsia::ui::activity::State::ACTIVE);
RunLoopUntilIdle();
EXPECT_EQ(driver_.state(), fuchsia::ui::activity::State::ACTIVE);
auto timeout = driver_.state_machine().TimeoutFor(fuchsia::ui::activity::State::ACTIVE);
ASSERT_NE(timeout, std::nullopt);
RunLoopFor(*timeout);
// The state machine should now always report ACTIVE, even after timing out.
EXPECT_EQ(driver_.GetState(), fuchsia::ui::activity::State::ACTIVE);
}
} // namespace activity