NerfUS / Mbed 2 deprecated NerfUSTarget

Dependencies:   LedController mbed-rtos mbed NerfUSXbee Servomotor TargetManager

Fork of NerfUS by NerfUS

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TargetTest.cpp Source File

TargetTest.cpp

00001 #include "gmock/gmock.h"
00002 #include "gtest/gtest.h"
00003 
00004 #include "Target.hpp"
00005 #include "mocks/MockServomotor.hpp"
00006 #include "mocks/MockLedController.hpp"
00007 #include "mocks/MockXbeeTransmitter.hpp"
00008 
00009 class TargetTest : public ::testing::Test
00010 {
00011     public:
00012         TargetTest() :
00013             target(mock_servomotor, mock_ally_leds, mock_enemy_leds, mock_xbee_transmitter, 32)
00014         {
00015         }
00016 
00017         MockServomotor mock_servomotor;
00018         MockLedController mock_ally_leds;
00019         MockLedController mock_enemy_leds;
00020         MockXbeeTransmitter mock_xbee_transmitter;
00021         Target target;
00022 };
00023 
00024 TEST_F(TargetTest, AllyCommandRaisesTarget)
00025 {
00026     EXPECT_CALL(mock_ally_leds, turn_on())
00027         .Times(1);
00028 
00029     EXPECT_CALL(mock_servomotor, set_position_up())
00030         .Times(1);
00031 
00032     target.ally_command();
00033 }
00034 
00035 TEST_F(TargetTest, EnemyCommandRaisesTargetAndTurnsOnLED)
00036 {
00037     EXPECT_CALL(mock_enemy_leds, turn_on())
00038         .Times(1);
00039 
00040     EXPECT_CALL(mock_servomotor, set_position_up())
00041         .Times(1);
00042 
00043     target.enemy_command();
00044 }
00045 
00046 TEST_F(TargetTest, WhenTargetTimesOutThenTransmitRightMessage)
00047 {
00048     uint8_t expected_message[4];
00049     target.generate_message(32, Target::RESULT_MISSED, 42, expected_message);
00050 
00051     EXPECT_CALL(mock_xbee_transmitter, transmit(::testing::_, 4, coordinator_address))
00052         .With(::testing::Args<0,1>(::testing::ContainerEq(expected_message)))
00053         .Times(1);
00054 
00055     EXPECT_CALL(mock_servomotor, set_position_down());
00056     EXPECT_CALL(mock_ally_leds, turn_off());
00057     EXPECT_CALL(mock_enemy_leds, turn_off());
00058 
00059     target.timeout(42);
00060 }
00061 
00062 TEST_F(TargetTest, WhenTargetIsHitThenTransmitRightMessage)
00063 {
00064     uint8_t expected_message[4];
00065     target.generate_message(32, Target::RESULT_HIT, 42, expected_message);
00066 
00067     EXPECT_CALL(mock_xbee_transmitter, transmit(::testing::_, 4, coordinator_address))
00068         .With(::testing::Args<0,1>(::testing::ContainerEq(expected_message)))
00069         .Times(1);
00070 
00071     EXPECT_CALL(mock_servomotor, set_position_down());
00072     EXPECT_CALL(mock_ally_leds, turn_off());
00073     EXPECT_CALL(mock_enemy_leds, turn_off());
00074 
00075     target.hit(42);
00076 }
00077 
00078 TEST_F(TargetTest, GenerateMessageTargetHit)
00079 {
00080     const int target_number = 0x05;
00081     const int time_taken_ms = 0x4254;
00082 
00083     uint8_t message[4];
00084     target.generate_message(target_number, Target::RESULT_HIT, time_taken_ms, message);
00085 
00086     uint8_t expected_message[4];
00087     expected_message[0] = 0x05;
00088     expected_message[1] = Target::RESULT_HIT;
00089     expected_message[2] = 0x42;
00090     expected_message[3] = 0x54;
00091     EXPECT_THAT(message, ::testing::ContainerEq(expected_message));
00092 }
00093 
00094 TEST_F(TargetTest, GenerateMessageTargetMissed)
00095 {
00096     const int target_number = 0x05;
00097     const int time_taken_ms = 0x4254;
00098 
00099     uint8_t message[4];
00100     target.generate_message(target_number, Target::RESULT_MISSED, time_taken_ms, message);
00101 
00102     uint8_t expected_message[4];
00103     expected_message[0] = 0x05;
00104     expected_message[1] = Target::RESULT_MISSED;
00105     expected_message[2] = 0x42;
00106     expected_message[3] = 0x54;
00107     EXPECT_THAT(message, ::testing::ContainerEq(expected_message));
00108 }
00109