Skip to content

Commit

Permalink
backend: add mission finished
Browse files Browse the repository at this point in the history
  • Loading branch information
JonasVautherin committed May 17, 2018
1 parent 3c282b5 commit a47f0cd
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
12 changes: 12 additions & 0 deletions backend/src/plugins/mission/mission_service_impl.h
Expand Up @@ -52,6 +52,18 @@ class MissionServiceImpl final : public dronecore::rpc::mission::MissionService:
return grpc::Status::OK;
}

grpc::Status IsMissionFinished(grpc::ServerContext * /* context */,
const rpc::mission::IsMissionFinishedRequest * /* request */,
rpc::mission::IsMissionFinishedResponse *response) override
{
if (response != nullptr) {
auto is_mission_finished = _mission.mission_finished();
response->set_is_finished(is_mission_finished);
}

return grpc::Status::OK;
}

private:
std::vector<std::shared_ptr<MissionItem>> extractMissionItems(const
rpc::mission::UploadMissionRequest *request) const
Expand Down
38 changes: 38 additions & 0 deletions backend/test/mission_service_impl_test.cpp
Expand Up @@ -348,6 +348,44 @@ TEST_P(MissionServiceImplStartTest, startResultIsTranslatedCorrectly)
EXPECT_EQ(GetParam().first, rpc::MissionResult::Result_Name(response->mission_result().result()));
}

class MissionServiceImplIsFinishedTest : public MissionServiceImplTestBase
{
protected:
void checkReturnsCorrectFinishedStatus(const bool expected_finished_status);
};

TEST_F(MissionServiceImplIsFinishedTest, isMissionFinishedCallsGetter)
{
EXPECT_CALL(_mission, mission_finished())
.Times(1);
dronecore::rpc::mission::IsMissionFinishedResponse response;

_mission_service.IsMissionFinished(nullptr, nullptr, &response);
}

TEST_F(MissionServiceImplIsFinishedTest, isMissionFinishedgetsCorrectValue)
{
checkReturnsCorrectFinishedStatus(false);
checkReturnsCorrectFinishedStatus(true);
}

void MissionServiceImplIsFinishedTest::checkReturnsCorrectFinishedStatus(
const bool expected_finished_status)
{
ON_CALL(_mission, mission_finished())
.WillByDefault(Return(expected_finished_status));
dronecore::rpc::mission::IsMissionFinishedResponse response;

_mission_service.IsMissionFinished(nullptr, nullptr, &response);

EXPECT_EQ(expected_finished_status, response.is_finished());
}

TEST_F(MissionServiceImplIsFinishedTest, isMissionFinishedDoesNotCrashWithNullResponse)
{
_mission_service.IsMissionFinished(nullptr, nullptr, nullptr);
}

std::vector<InputPair> generateInputPairs()
{
std::vector<InputPair> input_pairs;
Expand Down
1 change: 1 addition & 0 deletions plugins/mission/mocks/mission_mock.h
Expand Up @@ -14,6 +14,7 @@ class MockMission
MOCK_CONST_METHOD2(upload_mission_async, void(const std::vector<std::shared_ptr<MissionItem>> &,
Mission::result_callback_t));
MOCK_CONST_METHOD1(start_mission_async, void(Mission::result_callback_t));
MOCK_CONST_METHOD0(mission_finished, bool());
};

} // namespace testing
Expand Down

0 comments on commit a47f0cd

Please sign in to comment.