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
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
Generated on Thu Jul 14 2022 01:50:39 by
1.7.2
