diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2012-07-20 00:12:05 +0200 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2012-07-20 00:12:05 +0200 |
| commit | b8a9cafe23c547853726489747443d0e75e3911a (patch) | |
| tree | 0513edfc47c4cb9e0253beec78659abd52000af4 | |
| parent | 4c5d036835fb705e7a706d63d90c5062b24ab68a (diff) | |
test_edge_barrier_controller: added tests for temporary released barrier
(bzr r2509.1.25)
| -rw-r--r-- | tests/test_edge_barrier_controller.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/test_edge_barrier_controller.cpp b/tests/test_edge_barrier_controller.cpp index b5179799e..ddbcb37de 100644 --- a/tests/test_edge_barrier_controller.cpp +++ b/tests/test_edge_barrier_controller.cpp @@ -76,6 +76,7 @@ public: virtual void SetUp() { bc.options = std::make_shared<launcher::Options>(); + bc.options()->edge_passed_disabled_ms = 150; for (int i = 0; i < max_num_monitors; ++i) { @@ -163,4 +164,46 @@ TEST_F(TestEdgeBarrierController, ProcessUnHandledEventOnReleasedBarrier) bc.ProcessBarrierEvent(&owner, not_breaking_barrier_event); } +TEST_F(TestEdgeBarrierController, BreakingEdgeTemporaryReleasesBarrier) +{ + MockPointerBarrier owner; + + EXPECT_CALL(owner, ReleaseBarrier(1)); + bc.ProcessBarrierEvent(&owner, MakeBarrierEvent(1, true)); + ASSERT_TRUE(owner.released()); + + Utils::WaitForTimeoutMSec(bc.options()->edge_passed_disabled_ms); + EXPECT_FALSE(owner.released()); +} + +TEST_F(TestEdgeBarrierController, BreakingEdgeTemporaryReleasesBarrierForNotHandledEvents) +{ + MockPointerBarrier owner; + int monitor = 0; + subscribers_[monitor].handles_ = false; + + EXPECT_CALL(owner, ReleaseBarrier(5)); + bc.ProcessBarrierEvent(&owner, MakeBarrierEvent(5, true)); + ASSERT_TRUE(owner.released()); + + subscribers_[monitor].handles_ = false; + EXPECT_CALL(owner, ReleaseBarrier(6)); + bc.ProcessBarrierEvent(&owner, MakeBarrierEvent(6, false)); +} + +TEST_F(TestEdgeBarrierController, BreakingEdgeDontReleasesBarrierForHandledEvents) +{ + MockPointerBarrier owner; + int monitor = 0; + subscribers_[monitor].handles_ = false; + + EXPECT_CALL(owner, ReleaseBarrier(5)); + bc.ProcessBarrierEvent(&owner, MakeBarrierEvent(5, true)); + ASSERT_TRUE(owner.released()); + + subscribers_[monitor].handles_ = true; + EXPECT_CALL(owner, ReleaseBarrier(_)).Times(0); + bc.ProcessBarrierEvent(&owner, MakeBarrierEvent(6, true)); +} + } |
