NerfUS / Mbed 2 deprecated NerfUSTarget

Dependencies:   LedController mbed-rtos mbed NerfUSXbee Servomotor TargetManager

Fork of NerfUS by NerfUS

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?

UserRevisionLine numberNew 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