Skip to content

Commit

Permalink
✅ (BehaviorKit): Add init to cover all unexpected calls
Browse files Browse the repository at this point in the history
  • Loading branch information
YannLocatelli committed Feb 1, 2024
1 parent cd805f1 commit 210cbca
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 2 deletions.
1 change: 1 addition & 0 deletions include/interface/libs/BehaviorKit.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class BehaviorKit
public:
virtual ~BehaviorKit() = default;

virtual void init() = 0;
virtual void registerBehaviors(std::span<interface::Behavior *> behaviors) = 0;
virtual void setTimeoutDuration(std::chrono::seconds duration) = 0;
virtual void start(interface::Behavior *behavior) = 0;
Expand Down
6 changes: 5 additions & 1 deletion libs/BehaviorKit/include/BehaviorKit.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@ namespace leka {
class BehaviorKit : public interface::BehaviorKit
{
public:
explicit BehaviorKit(interface::Timeout &timeout);
explicit BehaviorKit(interface::Timeout &timeout) : _timeout(timeout)
{
// nothing to do
}

void init() final;
void registerBehaviors(std::span<interface::Behavior *> behaviors) final;
void setTimeoutDuration(std::chrono::seconds duration) final;

Expand Down
2 changes: 1 addition & 1 deletion libs/BehaviorKit/source/BehaviorKit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

using namespace leka;

BehaviorKit::BehaviorKit(interface::Timeout &timeout) : _timeout(timeout)
void BehaviorKit::init()
{
_timeout.onTimeout([this] { stop(); });
}
Expand Down
29 changes: 29 additions & 0 deletions libs/BehaviorKit/tests/BehaviorKit_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "mocks/leka/Timeout.h"

using namespace leka;
using namespace std::chrono_literals;

using ::testing::Return;

Expand All @@ -33,8 +34,18 @@ TEST_F(BehaviorKitTest, initialization)
ASSERT_NE(&behaviorkit, nullptr);
}

TEST_F(BehaviorKitTest, initialize)
{
EXPECT_CALL(mock_timeout, onTimeout);

behaviorkit.init();
}

TEST_F(BehaviorKitTest, startFirstBehavior)
{
EXPECT_CALL(mock_timeout, onTimeout);
behaviorkit.init();

auto behaviors = std::to_array<interface::Behavior *>({&mock_behavior_a});
behaviorkit.registerBehaviors(behaviors);

Expand All @@ -47,6 +58,9 @@ TEST_F(BehaviorKitTest, startFirstBehavior)

TEST_F(BehaviorKitTest, startBehaviorNullPtr)
{
EXPECT_CALL(mock_timeout, onTimeout);
behaviorkit.init();

EXPECT_CALL(mock_timeout, stop);
EXPECT_CALL(mock_timeout, start).Times(0);

Expand All @@ -55,6 +69,9 @@ TEST_F(BehaviorKitTest, startBehaviorNullPtr)

TEST_F(BehaviorKitTest, startFirstBehaviorID)
{
EXPECT_CALL(mock_timeout, onTimeout);
behaviorkit.init();

auto behaviors = std::to_array<interface::Behavior *>({
&mock_behavior_a,
&mock_behavior_b,
Expand All @@ -75,6 +92,9 @@ TEST_F(BehaviorKitTest, startFirstBehaviorID)

TEST_F(BehaviorKitTest, startBehaviorIDNotRegistered)
{
EXPECT_CALL(mock_timeout, onTimeout);
behaviorkit.init();

auto behaviors = std::to_array<interface::Behavior *>({
&mock_behavior_a,
&mock_behavior_b,
Expand All @@ -94,6 +114,9 @@ TEST_F(BehaviorKitTest, startBehaviorIDNotRegistered)

TEST_F(BehaviorKitTest, startBehaviorNotRegistered)
{
EXPECT_CALL(mock_timeout, onTimeout);
behaviorkit.init();

auto behaviors = std::to_array<interface::Behavior *>({
&mock_behavior_a,
});
Expand All @@ -108,6 +131,9 @@ TEST_F(BehaviorKitTest, startBehaviorNotRegistered)

TEST_F(BehaviorKitTest, startAnyBehavior)
{
EXPECT_CALL(mock_timeout, onTimeout);
behaviorkit.init();

auto behaviors = std::to_array<interface::Behavior *>({
&mock_behavior_a,
&mock_behavior_b,
Expand All @@ -130,6 +156,9 @@ TEST_F(BehaviorKitTest, startAnyBehavior)

TEST_F(BehaviorKitTest, setTimeoutDuration)
{
EXPECT_CALL(mock_timeout, onTimeout);
behaviorkit.init();

auto behaviors = std::to_array<interface::Behavior *>({&mock_behavior_a});
behaviorkit.registerBehaviors(behaviors);

Expand Down

0 comments on commit 210cbca

Please sign in to comment.