Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: LedController mbed-rtos mbed NerfUSXbee Servomotor TargetManager
Fork of NerfUS by
TESTS/TargetTest.cpp@51:6bf268cd1a1b, 2017-04-12 (annotated)
- Committer:
- Maxime Dupuis
- Date:
- Wed Apr 12 10:33:32 2017 -0400
- Revision:
- 51:6bf268cd1a1b
- Parent:
- 45:e4bf209c1e54
Update tests to ignore target hits before 750ms threshold
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Maxime Dupuis |
18:353fb432c03c | 1 | #include "gmock/gmock.h" |
| Maxime Dupuis |
18:353fb432c03c | 2 | #include "gtest/gtest.h" |
| Maxime Dupuis |
18:353fb432c03c | 3 | |
| Maxime Dupuis |
18:353fb432c03c | 4 | #include "Target.hpp" |
| Maxime Dupuis |
27:3ae7c62008ea | 5 | #include "mocks/MockServomotor.hpp" |
| Maxime Dupuis |
27:3ae7c62008ea | 6 | #include "mocks/MockLedController.hpp" |
| Maxime Dupuis |
27:3ae7c62008ea | 7 | #include "mocks/MockXbeeTransmitter.hpp" |
| Maxime Dupuis |
18:353fb432c03c | 8 | |
| Maxime Dupuis |
18:353fb432c03c | 9 | class TargetTest : public ::testing::Test |
| Maxime Dupuis |
18:353fb432c03c | 10 | { |
| Maxime Dupuis |
18:353fb432c03c | 11 | public: |
| Maxime Dupuis |
18:353fb432c03c | 12 | TargetTest() : |
| Maxime Dupuis |
23:fb47bceb61da | 13 | target(mock_servomotor, mock_ally_leds, mock_enemy_leds, mock_xbee_transmitter, 32) |
| Maxime Dupuis |
18:353fb432c03c | 14 | { |
| Maxime Dupuis |
18:353fb432c03c | 15 | } |
| Maxime Dupuis |
18:353fb432c03c | 16 | |
| Maxime Dupuis |
18:353fb432c03c | 17 | MockServomotor mock_servomotor; |
| Maxime Dupuis |
22:d9df16225df3 | 18 | MockLedController mock_ally_leds; |
| Maxime Dupuis |
22:d9df16225df3 | 19 | MockLedController mock_enemy_leds; |
| Maxime Dupuis |
19:377887760869 | 20 | MockXbeeTransmitter mock_xbee_transmitter; |
| Maxime Dupuis |
18:353fb432c03c | 21 | Target target; |
| Maxime Dupuis |
18:353fb432c03c | 22 | }; |
| Maxime Dupuis |
18:353fb432c03c | 23 | |
| Maxime Dupuis |
18:353fb432c03c | 24 | TEST_F(TargetTest, AllyCommandRaisesTarget) |
| Maxime Dupuis |
18:353fb432c03c | 25 | { |
| Maxime Dupuis |
22:d9df16225df3 | 26 | EXPECT_CALL(mock_ally_leds, turn_on()) |
| Maxime Dupuis |
22:d9df16225df3 | 27 | .Times(1); |
| Maxime Dupuis |
22:d9df16225df3 | 28 | |
| Maxime Dupuis |
18:353fb432c03c | 29 | EXPECT_CALL(mock_servomotor, set_position_up()) |
| Maxime Dupuis |
18:353fb432c03c | 30 | .Times(1); |
| Maxime Dupuis |
18:353fb432c03c | 31 | |
| Maxime Dupuis |
18:353fb432c03c | 32 | target.ally_command(); |
| Maxime Dupuis |
18:353fb432c03c | 33 | } |
| Maxime Dupuis |
18:353fb432c03c | 34 | |
| Maxime Dupuis |
18:353fb432c03c | 35 | TEST_F(TargetTest, EnemyCommandRaisesTargetAndTurnsOnLED) |
| Maxime Dupuis |
18:353fb432c03c | 36 | { |
| Maxime Dupuis |
22:d9df16225df3 | 37 | EXPECT_CALL(mock_enemy_leds, turn_on()) |
| Maxime Dupuis |
18:353fb432c03c | 38 | .Times(1); |
| Maxime Dupuis |
22:d9df16225df3 | 39 | |
| Maxime Dupuis |
22:d9df16225df3 | 40 | EXPECT_CALL(mock_servomotor, set_position_up()) |
| Maxime Dupuis |
18:353fb432c03c | 41 | .Times(1); |
| Maxime Dupuis |
18:353fb432c03c | 42 | |
| Maxime Dupuis |
18:353fb432c03c | 43 | target.enemy_command(); |
| Maxime Dupuis |
18:353fb432c03c | 44 | } |
| Maxime Dupuis |
18:353fb432c03c | 45 | |
| Maxime Dupuis |
23:fb47bceb61da | 46 | TEST_F(TargetTest, WhenTargetTimesOutThenTransmitRightMessage) |
| Maxime Dupuis |
23:fb47bceb61da | 47 | { |
| Maxime Dupuis |
41:d60c9ced57ab | 48 | uint8_t expected_message[4]; |
| Maxime Dupuis |
41:d60c9ced57ab | 49 | target.generate_message(32, Target::RESULT_MISSED, 42, expected_message); |
| Maxime Dupuis |
23:fb47bceb61da | 50 | |
| Maxime Dupuis |
45:e4bf209c1e54 | 51 | EXPECT_CALL(mock_xbee_transmitter, transmit(::testing::_, 4, coordinator_address)) |
| Maxime Dupuis |
45:e4bf209c1e54 | 52 | .With(::testing::Args<0,1>(::testing::ContainerEq(expected_message))) |
| Maxime Dupuis |
23:fb47bceb61da | 53 | .Times(1); |
| Maxime Dupuis |
23:fb47bceb61da | 54 | |
| Maxime Dupuis |
45:e4bf209c1e54 | 55 | EXPECT_CALL(mock_servomotor, set_position_down()); |
| Maxime Dupuis |
45:e4bf209c1e54 | 56 | EXPECT_CALL(mock_ally_leds, turn_off()); |
| Maxime Dupuis |
45:e4bf209c1e54 | 57 | EXPECT_CALL(mock_enemy_leds, turn_off()); |
| Maxime Dupuis |
45:e4bf209c1e54 | 58 | |
| Maxime Dupuis |
23:fb47bceb61da | 59 | target.timeout(42); |
| Maxime Dupuis |
23:fb47bceb61da | 60 | } |
| Maxime Dupuis |
23:fb47bceb61da | 61 | |
| Maxime Dupuis |
24:801271795da0 | 62 | TEST_F(TargetTest, WhenTargetIsHitThenTransmitRightMessage) |
| Maxime Dupuis |
24:801271795da0 | 63 | { |
| Maxime Dupuis |
41:d60c9ced57ab | 64 | uint8_t expected_message[4]; |
| Maxime Dupuis |
41:d60c9ced57ab | 65 | target.generate_message(32, Target::RESULT_HIT, 42, expected_message); |
| Maxime Dupuis |
24:801271795da0 | 66 | |
| Maxime Dupuis |
45:e4bf209c1e54 | 67 | EXPECT_CALL(mock_xbee_transmitter, transmit(::testing::_, 4, coordinator_address)) |
| Maxime Dupuis |
45:e4bf209c1e54 | 68 | .With(::testing::Args<0,1>(::testing::ContainerEq(expected_message))) |
| Maxime Dupuis |
24:801271795da0 | 69 | .Times(1); |
| Maxime Dupuis |
24:801271795da0 | 70 | |
| Maxime Dupuis |
45:e4bf209c1e54 | 71 | EXPECT_CALL(mock_servomotor, set_position_down()); |
| Maxime Dupuis |
45:e4bf209c1e54 | 72 | EXPECT_CALL(mock_ally_leds, turn_off()); |
| Maxime Dupuis |
45:e4bf209c1e54 | 73 | EXPECT_CALL(mock_enemy_leds, turn_off()); |
| Maxime Dupuis |
45:e4bf209c1e54 | 74 | |
| Maxime Dupuis |
24:801271795da0 | 75 | target.hit(42); |
| Maxime Dupuis |
24:801271795da0 | 76 | } |
| Maxime Dupuis |
24:801271795da0 | 77 | |
| Maxime Dupuis |
19:377887760869 | 78 | TEST_F(TargetTest, GenerateMessageTargetHit) |
| Maxime Dupuis |
19:377887760869 | 79 | { |
| Maxime Dupuis |
19:377887760869 | 80 | const int target_number = 0x05; |
| Maxime Dupuis |
19:377887760869 | 81 | const int time_taken_ms = 0x4254; |
| Maxime Dupuis |
19:377887760869 | 82 | |
| Maxime Dupuis |
41:d60c9ced57ab | 83 | uint8_t message[4]; |
| Maxime Dupuis |
41:d60c9ced57ab | 84 | target.generate_message(target_number, Target::RESULT_HIT, time_taken_ms, message); |
| Maxime Dupuis |
19:377887760869 | 85 | |
| Maxime Dupuis |
41:d60c9ced57ab | 86 | uint8_t expected_message[4]; |
| Maxime Dupuis |
41:d60c9ced57ab | 87 | expected_message[0] = 0x05; |
| Maxime Dupuis |
41:d60c9ced57ab | 88 | expected_message[1] = Target::RESULT_HIT; |
| Maxime Dupuis |
41:d60c9ced57ab | 89 | expected_message[2] = 0x42; |
| Maxime Dupuis |
41:d60c9ced57ab | 90 | expected_message[3] = 0x54; |
| Maxime Dupuis |
19:377887760869 | 91 | EXPECT_THAT(message, ::testing::ContainerEq(expected_message)); |
| Maxime Dupuis |
19:377887760869 | 92 | } |
| Maxime Dupuis |
19:377887760869 | 93 | |
| Maxime Dupuis |
19:377887760869 | 94 | TEST_F(TargetTest, GenerateMessageTargetMissed) |
| Maxime Dupuis |
19:377887760869 | 95 | { |
| Maxime Dupuis |
19:377887760869 | 96 | const int target_number = 0x05; |
| Maxime Dupuis |
19:377887760869 | 97 | const int time_taken_ms = 0x4254; |
| Maxime Dupuis |
19:377887760869 | 98 | |
| Maxime Dupuis |
41:d60c9ced57ab | 99 | uint8_t message[4]; |
| Maxime Dupuis |
41:d60c9ced57ab | 100 | target.generate_message(target_number, Target::RESULT_MISSED, time_taken_ms, message); |
| Maxime Dupuis |
19:377887760869 | 101 | |
| Maxime Dupuis |
41:d60c9ced57ab | 102 | uint8_t expected_message[4]; |
| Maxime Dupuis |
41:d60c9ced57ab | 103 | expected_message[0] = 0x05; |
| Maxime Dupuis |
41:d60c9ced57ab | 104 | expected_message[1] = Target::RESULT_MISSED; |
| Maxime Dupuis |
41:d60c9ced57ab | 105 | expected_message[2] = 0x42; |
| Maxime Dupuis |
41:d60c9ced57ab | 106 | expected_message[3] = 0x54; |
| Maxime Dupuis |
19:377887760869 | 107 | EXPECT_THAT(message, ::testing::ContainerEq(expected_message)); |
| Maxime Dupuis |
19:377887760869 | 108 | } |
| Maxime Dupuis |
19:377887760869 | 109 |
