From: Guilherme Maciel Ferreira Date: Fri, 6 Jan 2012 10:19:51 +0000 (-0200) Subject: Test: finished MessagePayload test case. X-Git-Tag: v1.3~11^2~47 X-Git-Url: http://developer.intra2net.com/git/?a=commitdiff_plain;h=3de1281bfca045ef8d129df5d9f90e1031b74639;p=pingcheck Test: finished MessagePayload test case. --- diff --git a/test/test_messagepayload.cpp b/test/test_messagepayload.cpp index d30bf7d..2be9d5f 100644 --- a/test/test_messagepayload.cpp +++ b/test/test_messagepayload.cpp @@ -20,87 +20,278 @@ on this file might be covered by the GNU General Public License. #define BOOST_TEST_MAIN #define BOOST_TEST_DYN_LINK + + +#include + #include #include "host/messagepayload.h" +MessagePayload create_message_payload( const std::size_t bytes_total ) +{ + return MessagePayload( bytes_total ); +} + +void fill_message_payload( + const std::size_t bytes_total, + const uint8_t first_value, + MessagePayload& mp +) +{ + for ( std::size_t byte_index = 0; byte_index < bytes_total; byte_index++ ) + { + mp[ byte_index ] = static_cast( first_value + byte_index ); + } +} + BOOST_AUTO_TEST_SUITE( TestMessagePayload ) BOOST_AUTO_TEST_CASE( basic_assignment ) { - BOOST_CHECK_EQUAL( 3, 3 ); + MessagePayload mp_filled = create_message_payload( 10 ); + fill_message_payload( 10, 0xC0, mp_filled ); + + MessagePayload mp_assigned = create_message_payload( 10 ); + mp_assigned = mp_filled; + + BOOST_CHECK_EQUAL( mp_assigned[0], 0xC0 ); + BOOST_CHECK_EQUAL( mp_assigned[1], 0xC1 ); + BOOST_CHECK_EQUAL( mp_assigned[2], 0xC2 ); + BOOST_CHECK_EQUAL( mp_assigned[3], 0xC3 ); + BOOST_CHECK_EQUAL( mp_assigned[4], 0xC4 ); + BOOST_CHECK_EQUAL( mp_assigned[5], 0xC5 ); + BOOST_CHECK_EQUAL( mp_assigned[6], 0xC6 ); + BOOST_CHECK_EQUAL( mp_assigned[7], 0xC7 ); + BOOST_CHECK_EQUAL( mp_assigned[8], 0xC8 ); + BOOST_CHECK_EQUAL( mp_assigned[9], 0xC9 ); } BOOST_AUTO_TEST_CASE( array_subscript_const ) { - BOOST_CHECK_EQUAL( 3, 3 ); + MessagePayload mp_filled = create_message_payload( 10 ); + fill_message_payload( 10, 0xC0, mp_filled ); + + const MessagePayload mp_const( mp_filled ); + + BOOST_CHECK_EQUAL( mp_const[0], 0xC0 ); + BOOST_CHECK_EQUAL( mp_const[1], 0xC1 ); + BOOST_CHECK_EQUAL( mp_const[2], 0xC2 ); + BOOST_CHECK_EQUAL( mp_const[3], 0xC3 ); + BOOST_CHECK_EQUAL( mp_const[4], 0xC4 ); + BOOST_CHECK_EQUAL( mp_const[5], 0xC5 ); + BOOST_CHECK_EQUAL( mp_const[6], 0xC6 ); + BOOST_CHECK_EQUAL( mp_const[7], 0xC7 ); + BOOST_CHECK_EQUAL( mp_const[8], 0xC8 ); + BOOST_CHECK_EQUAL( mp_const[9], 0xC9 ); } BOOST_AUTO_TEST_CASE( array_subscript ) { MessagePayload mp( 10 ); - mp[0] = 0xA0; - mp[1] = 0xA1; - mp[2] = 0xA2; - mp[3] = 0xA3; - mp[4] = 0xA4; - mp[5] = 0xA5; - mp[6] = 0xA6; - mp[7] = 0xA7; - mp[8] = 0xA8; - mp[9] = 0xA9; - - MessagePayload mp2( mp ); - BOOST_CHECK_EQUAL( mp2[0], 0xA0 ); - BOOST_CHECK_EQUAL( mp2[1], 0xA1 ); - BOOST_CHECK_EQUAL( mp2[2], 0xA2 ); - BOOST_CHECK_EQUAL( mp2[3], 0xA3 ); - BOOST_CHECK_EQUAL( mp2[4], 0xA4 ); - BOOST_CHECK_EQUAL( mp2[5], 0xA5 ); - BOOST_CHECK_EQUAL( mp2[6], 0xA6 ); - BOOST_CHECK_EQUAL( mp2[7], 0xA7 ); - BOOST_CHECK_EQUAL( mp2[8], 0xA8 ); - BOOST_CHECK_EQUAL( mp2[9], 0xA9 ); + mp[0] = 0xC0; + mp[1] = 0xC1; + mp[2] = 0xC2; + mp[3] = 0xC3; + mp[4] = 0xC4; + mp[5] = 0xC5; + mp[6] = 0xC6; + mp[7] = 0xC7; + mp[8] = 0xC8; + mp[9] = 0xC9; + + BOOST_CHECK_EQUAL( mp[0], 0xC0 ); + BOOST_CHECK_EQUAL( mp[1], 0xC1 ); + BOOST_CHECK_EQUAL( mp[2], 0xC2 ); + BOOST_CHECK_EQUAL( mp[3], 0xC3 ); + BOOST_CHECK_EQUAL( mp[4], 0xC4 ); + BOOST_CHECK_EQUAL( mp[5], 0xC5 ); + BOOST_CHECK_EQUAL( mp[6], 0xC6 ); + BOOST_CHECK_EQUAL( mp[7], 0xC7 ); + BOOST_CHECK_EQUAL( mp[8], 0xC8 ); + BOOST_CHECK_EQUAL( mp[9], 0xC9 ); } BOOST_AUTO_TEST_CASE( get ) { - BOOST_CHECK_EQUAL( 3, 3 ); + MessagePayload mp_filled = create_message_payload( 10 ); + fill_message_payload( 10, 0xC0, mp_filled ); + + uint8_t *mp_ptr = mp_filled.get(); + BOOST_CHECK_EQUAL( mp_ptr[0], 0xC0 ); + BOOST_CHECK_EQUAL( mp_ptr[1], 0xC1 ); + BOOST_CHECK_EQUAL( mp_ptr[2], 0xC2 ); + BOOST_CHECK_EQUAL( mp_ptr[3], 0xC3 ); + BOOST_CHECK_EQUAL( mp_ptr[4], 0xC4 ); + BOOST_CHECK_EQUAL( mp_ptr[5], 0xC5 ); + BOOST_CHECK_EQUAL( mp_ptr[6], 0xC6 ); + BOOST_CHECK_EQUAL( mp_ptr[7], 0xC7 ); + BOOST_CHECK_EQUAL( mp_ptr[8], 0xC8 ); + BOOST_CHECK_EQUAL( mp_ptr[9], 0xC9 ); } BOOST_AUTO_TEST_CASE( append ) { - BOOST_CHECK_EQUAL( 3, 3 ); + MessagePayload mp_original( 10 ); + fill_message_payload( 10, 0xC0, mp_original ); + + MessagePayload mp_extra( 10 ); + fill_message_payload( 10, 0xB0, mp_extra ); + + mp_original.append( mp_extra.get(), 10 ); + + BOOST_CHECK_EQUAL( mp_original[0], 0xC0 ); + BOOST_CHECK_EQUAL( mp_original[1], 0xC1 ); + BOOST_CHECK_EQUAL( mp_original[2], 0xC2 ); + BOOST_CHECK_EQUAL( mp_original[3], 0xC3 ); + BOOST_CHECK_EQUAL( mp_original[4], 0xC4 ); + BOOST_CHECK_EQUAL( mp_original[5], 0xC5 ); + BOOST_CHECK_EQUAL( mp_original[6], 0xC6 ); + BOOST_CHECK_EQUAL( mp_original[7], 0xC7 ); + BOOST_CHECK_EQUAL( mp_original[8], 0xC8 ); + BOOST_CHECK_EQUAL( mp_original[9], 0xC9 ); + + BOOST_CHECK_EQUAL( mp_original[10], 0xB0 ); + BOOST_CHECK_EQUAL( mp_original[11], 0xB1 ); + BOOST_CHECK_EQUAL( mp_original[12], 0xB2 ); + BOOST_CHECK_EQUAL( mp_original[13], 0xB3 ); + BOOST_CHECK_EQUAL( mp_original[14], 0xB4 ); + BOOST_CHECK_EQUAL( mp_original[15], 0xB5 ); + BOOST_CHECK_EQUAL( mp_original[16], 0xB6 ); + BOOST_CHECK_EQUAL( mp_original[17], 0xB7 ); + BOOST_CHECK_EQUAL( mp_original[18], 0xB8 ); + BOOST_CHECK_EQUAL( mp_original[19], 0xB9 ); } BOOST_AUTO_TEST_CASE( decode16 ) { - BOOST_CHECK_EQUAL( 3, 3 ); + MessagePayload mp = create_message_payload( 10 ); + fill_message_payload( 10, 0xC0, mp ); + + BOOST_CHECK_EQUAL( mp.decode16( 0, 1 ), 0xC0C1 ); + BOOST_CHECK_EQUAL( mp.decode16( 1, 2 ), 0xC1C2 ); + BOOST_CHECK_EQUAL( mp.decode16( 2, 3 ), 0xC2C3 ); + BOOST_CHECK_EQUAL( mp.decode16( 3, 4 ), 0xC3C4 ); + BOOST_CHECK_EQUAL( mp.decode16( 4, 5 ), 0xC4C5 ); + BOOST_CHECK_EQUAL( mp.decode16( 5, 6 ), 0xC5C6 ); + BOOST_CHECK_EQUAL( mp.decode16( 6, 7 ), 0xC6C7 ); + BOOST_CHECK_EQUAL( mp.decode16( 7, 8 ), 0xC7C8 ); + BOOST_CHECK_EQUAL( mp.decode16( 8, 9 ), 0xC8C9 ); } BOOST_AUTO_TEST_CASE( encode16 ) { - BOOST_CHECK_EQUAL( 3, 3 ); + MessagePayload mp = create_message_payload( 10 ); + + mp.encode16( 0, 1, 0xC0C1 ); + mp.encode16( 1, 2, 0xC1C2 ); + mp.encode16( 2, 3, 0xC2C3 ); + mp.encode16( 3, 4, 0xC3C4 ); + mp.encode16( 4, 5, 0xC4C5 ); + mp.encode16( 5, 6, 0xC5C6 ); + mp.encode16( 6, 7, 0xC6C7 ); + mp.encode16( 7, 8, 0xC7C8 ); + mp.encode16( 8, 9, 0xC8C9 ); + + BOOST_CHECK_EQUAL( mp[0], 0xC0 ); + BOOST_CHECK_EQUAL( mp[1], 0xC1 ); + BOOST_CHECK_EQUAL( mp[2], 0xC2 ); + BOOST_CHECK_EQUAL( mp[3], 0xC3 ); + BOOST_CHECK_EQUAL( mp[4], 0xC4 ); + BOOST_CHECK_EQUAL( mp[5], 0xC5 ); + BOOST_CHECK_EQUAL( mp[6], 0xC6 ); + BOOST_CHECK_EQUAL( mp[7], 0xC7 ); + BOOST_CHECK_EQUAL( mp[8], 0xC8 ); + BOOST_CHECK_EQUAL( mp[9], 0xC9 ); } BOOST_AUTO_TEST_CASE( decode32 ) { - BOOST_CHECK_EQUAL( 3, 3 ); + MessagePayload mp = create_message_payload( 10 ); + fill_message_payload( 10, 0xC0, mp ); + + BOOST_CHECK_EQUAL( mp.decode32( 0, 3 ), 0xC0C1C2C3 ); + BOOST_CHECK_EQUAL( mp.decode32( 1, 4 ), 0xC1C2C3C4 ); + BOOST_CHECK_EQUAL( mp.decode32( 2, 5 ), 0xC2C3C4C5 ); + BOOST_CHECK_EQUAL( mp.decode32( 3, 6 ), 0xC3C4C5C6 ); + BOOST_CHECK_EQUAL( mp.decode32( 4, 7 ), 0xC4C5C6C7 ); + BOOST_CHECK_EQUAL( mp.decode32( 5, 8 ), 0xC5C6C7C8 ); + BOOST_CHECK_EQUAL( mp.decode32( 6, 9 ), 0xC6C7C8C9 ); } BOOST_AUTO_TEST_CASE( encode32 ) { - BOOST_CHECK_EQUAL( 3, 3 ); + MessagePayload mp = create_message_payload( 10 ); + + mp.encode32( 0, 3, 0xC0C1C2C3 ); + mp.encode32( 1, 4, 0xC1C2C3C4 ); + mp.encode32( 2, 5, 0xC2C3C4C5 ); + mp.encode32( 3, 6, 0xC3C4C5C6 ); + mp.encode32( 4, 7, 0xC4C5C6C7 ); + mp.encode32( 5, 8, 0xC5C6C7C8 ); + mp.encode32( 6, 9, 0xC6C7C8C9 ); + + BOOST_CHECK_EQUAL( mp[0], 0xC0 ); + BOOST_CHECK_EQUAL( mp[1], 0xC1 ); + BOOST_CHECK_EQUAL( mp[2], 0xC2 ); + BOOST_CHECK_EQUAL( mp[3], 0xC3 ); + BOOST_CHECK_EQUAL( mp[4], 0xC4 ); + BOOST_CHECK_EQUAL( mp[5], 0xC5 ); + BOOST_CHECK_EQUAL( mp[6], 0xC6 ); + BOOST_CHECK_EQUAL( mp[7], 0xC7 ); + BOOST_CHECK_EQUAL( mp[8], 0xC8 ); + BOOST_CHECK_EQUAL( mp[9], 0xC9 ); } BOOST_AUTO_TEST_CASE( read ) { - BOOST_CHECK_EQUAL( 3, 3 ); + uint8_t numbers[] = { + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9 + }; + + std::basic_stringbuf sb; + sb.pubsetbuf( numbers, 10 ); + std::basic_istream is( &sb ); + + MessagePayload mp = create_message_payload( 10 ); + mp.read( reinterpret_cast(is) ); + + BOOST_CHECK_EQUAL( mp[0], 0xC0 ); + BOOST_CHECK_EQUAL( mp[1], 0xC1 ); + BOOST_CHECK_EQUAL( mp[2], 0xC2 ); + BOOST_CHECK_EQUAL( mp[3], 0xC3 ); + BOOST_CHECK_EQUAL( mp[4], 0xC4 ); + BOOST_CHECK_EQUAL( mp[5], 0xC5 ); + BOOST_CHECK_EQUAL( mp[6], 0xC6 ); + BOOST_CHECK_EQUAL( mp[7], 0xC7 ); + BOOST_CHECK_EQUAL( mp[8], 0xC8 ); + BOOST_CHECK_EQUAL( mp[9], 0xC9 ); } BOOST_AUTO_TEST_CASE( write ) { - BOOST_CHECK_EQUAL( 3, 3 ); + uint8_t numbers[ 10 ]; + std::fill( numbers, numbers + 9, 0 ); + + std::basic_stringbuf sb; + sb.pubsetbuf( numbers, 10 ); + std::basic_ostream os( &sb ); + + MessagePayload mp = create_message_payload( 10 ); + fill_message_payload( 10, 0xC0, mp ); + mp.write( reinterpret_cast(os) ); + os.flush(); + + BOOST_CHECK_EQUAL( numbers[0], 0xC0 ); + BOOST_CHECK_EQUAL( numbers[1], 0xC1 ); + BOOST_CHECK_EQUAL( numbers[2], 0xC2 ); + BOOST_CHECK_EQUAL( numbers[3], 0xC3 ); + BOOST_CHECK_EQUAL( numbers[4], 0xC4 ); + BOOST_CHECK_EQUAL( numbers[5], 0xC5 ); + BOOST_CHECK_EQUAL( numbers[6], 0xC6 ); + BOOST_CHECK_EQUAL( numbers[7], 0xC7 ); + BOOST_CHECK_EQUAL( numbers[8], 0xC8 ); + BOOST_CHECK_EQUAL( numbers[9], 0xC9 ); } BOOST_AUTO_TEST_SUITE_END()