X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2F80221Bundle%2FMIHPacket.test.cc;h=3b021ee33a120d966278c0d48fba14e0b815bb18;hb=b8ca4a544cce3e6023bb56b712a03d6362f2bb79;hp=80a28c1d3d64a96615c91eb2048cbc215e0d930f;hpb=fb503247154c4a0f966cef898c813e18b8bec6ed;p=senf.git diff --git a/Packets/80221Bundle/MIHPacket.test.cc b/Packets/80221Bundle/MIHPacket.test.cc index 80a28c1..3b021ee 100644 --- a/Packets/80221Bundle/MIHPacket.test.cc +++ b/Packets/80221Bundle/MIHPacket.test.cc @@ -26,15 +26,15 @@ //#include "MIHPacket.test.hh" //#include "MIHPacket.test.ih" -#include "../../Utils/auto_unit_test.hh" -#include - +// Custom includes #include "MIHPacket.hh" -using namespace senf; +#include "../../Utils/auto_unit_test.hh" +#include #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// +using namespace senf; BOOST_AUTO_UNIT_TEST(MIHPacket_create_string) { @@ -45,13 +45,13 @@ BOOST_AUTO_UNIT_TEST(MIHPacket_create_string) mihPacket->src_mihfId().setString( "senf@berlios.de"); mihPacket->dst_mihfId().setString( "test"); mihPacket.finalizeThis(); - - unsigned char data[] = { + + unsigned char data[] = { // MIH header 0x10, 0x54, 0x00, 0x00, 0x00, 0x15, 0x00, 0x17, // source MIHF_ID TLV: 0x01, 0x0f, // type, length - 0x73, 0x65, 0x6e, 0x66, 0x40, 0x62, 0x65, 0x72, 0x6c, + 0x73, 0x65, 0x6e, 0x66, 0x40, 0x62, 0x65, 0x72, 0x6c, 0x69, 0x6f, 0x73, 0x2e, 0x64, 0x65, // value // destination MIHF_ID TLV: 0x02, 0x04, 0x74, 0x65, 0x73, 0x74 @@ -59,16 +59,22 @@ BOOST_AUTO_UNIT_TEST(MIHPacket_create_string) BOOST_CHECK(equal( mihPacket.data().begin(), mihPacket.data().end(), data )); BOOST_CHECK_EQUAL( mihPacket->src_mihfId().asString(), "senf@berlios.de"); BOOST_CHECK_EQUAL( mihPacket->dst_mihfId().asString(), "test"); - + + // the maximum length of a MIHF_ID is 253 octets + BOOST_CHECK_THROW( mihPacket->dst_mihfId().setString( std::string(254, 'x')), std::length_error); + // now expand a MIHF_ID mihPacket->dst_mihfId().maxLengthValue(253); mihPacket->dst_mihfId().setString( std::string(200, 'x')); mihPacket.finalizeThis(); - + BOOST_CHECK_EQUAL( mihPacket.size(), unsigned(8 + 17 + 203)); BOOST_CHECK_EQUAL( mihPacket->payloadLength(), 17 + 203); BOOST_CHECK_EQUAL( mihPacket->dst_mihfId().length(), 200u); BOOST_CHECK_EQUAL( senf::bytes(mihPacket->dst_mihfId()), 203u); + + std::ostringstream oss (std::ostringstream::out); + SENF_CHECK_NO_THROW( mihPacket.dump( oss)); } @@ -81,8 +87,8 @@ BOOST_AUTO_UNIT_TEST(MIHPacket_create_mac) mihPacket->src_mihfId().setMACAddress( MACAddress::from_string("01:02:03:04:05:06")); mihPacket->dst_mihfId().setMACAddress( MACAddress::from_string("07:08:09:0a:0b:0c")); mihPacket.finalizeThis(); - - unsigned char data[] = { + + unsigned char data[] = { // MIH header 0x10, 0x54, 0x00, 0x00, 0x00, 0x15, 0x00, 0x1c, // source MIHF_ID TLV: @@ -93,11 +99,11 @@ BOOST_AUTO_UNIT_TEST(MIHPacket_create_mac) 0x5c, 0x07, 0x5c, 0x08, 0x5c, 0x09, 0x5c, 0x0a, 0x5c, 0x0b, 0x5c, 0x0c // value (nai-encoded) }; BOOST_CHECK(equal( mihPacket.data().begin(), mihPacket.data().end(), data )); - BOOST_CHECK_EQUAL( - mihPacket->src_mihfId().asMACAddress(), + BOOST_CHECK_EQUAL( + mihPacket->src_mihfId().asMACAddress(), MACAddress::from_string("01:02:03:04:05:06")); - BOOST_CHECK_EQUAL( - mihPacket->dst_mihfId().asMACAddress(), + BOOST_CHECK_EQUAL( + mihPacket->dst_mihfId().asMACAddress(), MACAddress::from_string("07:08:09:0a:0b:0c")); } @@ -111,8 +117,8 @@ BOOST_AUTO_UNIT_TEST(MIHPacket_create_inet4) mihPacket->src_mihfId().setINet4Address( INet4Address::from_string("128.129.130.131")); mihPacket->dst_mihfId().setINet4Address( INet4Address::from_string("132.133.134.135")); mihPacket.finalizeThis(); - - unsigned char data[] = { + + unsigned char data[] = { // MIH header 0x10, 0x54, 0x00, 0x00, 0x00, 0x15, 0x00, 0x14, // source MIHF_ID TLV: @@ -123,11 +129,11 @@ BOOST_AUTO_UNIT_TEST(MIHPacket_create_inet4) 0x5c, 0x84, 0x5c, 0x85, 0x5c, 0x86, 0x5c, 0x87 // value (nai-encoded) }; BOOST_CHECK(equal( mihPacket.data().begin(), mihPacket.data().end(), data )); - BOOST_CHECK_EQUAL( - mihPacket->src_mihfId().asINet4Address(), + BOOST_CHECK_EQUAL( + mihPacket->src_mihfId().asINet4Address(), INet4Address::from_string("128.129.130.131")); - BOOST_CHECK_EQUAL( - mihPacket->dst_mihfId().asINet4Address(), + BOOST_CHECK_EQUAL( + mihPacket->dst_mihfId().asINet4Address(), INet4Address::from_string("132.133.134.135")); } @@ -141,8 +147,8 @@ BOOST_AUTO_UNIT_TEST(MIHPacket_create_inet6) mihPacket->src_mihfId().setINet6Address( INet6Address::from_string("::ffff:1.2.3.4")); mihPacket->dst_mihfId().setINet6Address( INet6Address::from_string("::ffff:5.6.7.8")); mihPacket.finalizeThis(); - - unsigned char data[] = { + + unsigned char data[] = { // MIH header 0x10, 0x54, 0x00, 0x00, 0x00, 0x15, 0x00, 0x44, // source MIHF_ID TLV: @@ -161,25 +167,25 @@ BOOST_AUTO_UNIT_TEST(MIHPacket_create_inet6) 0x5c, 0x05, 0x5c, 0x06, 0x5c, 0x07, 0x5c, 0x08 }; BOOST_CHECK(equal( mihPacket.data().begin(), mihPacket.data().end(), data )); - BOOST_CHECK_EQUAL( - mihPacket->src_mihfId().asINet6Address(), + BOOST_CHECK_EQUAL( + mihPacket->src_mihfId().asINet6Address(), INet6Address::from_string("::ffff:1.2.3.4")); - BOOST_CHECK_EQUAL( - mihPacket->dst_mihfId().asINet6Address(), + BOOST_CHECK_EQUAL( + mihPacket->dst_mihfId().asINet6Address(), INet6Address::from_string("::ffff:5.6.7.8") ); } BOOST_AUTO_UNIT_TEST(MIHPayload_parse) { - unsigned char data[] = { + unsigned char data[] = { // MIH header - 0x10, 0x54, 0x00, 0x00, 0x00, 0x15, + 0x10, 0x54, 0x00, 0x00, 0x00, 0x15, // variable payload length: 0x00, 0x2a, // source MIHF_ID TLV: 0x01, 0x0f, // type, length - 0x73, 0x65, 0x6e, 0x66, 0x40, 0x62, 0x65, 0x72, 0x6c, + 0x73, 0x65, 0x6e, 0x66, 0x40, 0x62, 0x65, 0x72, 0x6c, 0x69, 0x6f, 0x73, 0x2e, 0x64, 0x65, // value ("senf@berlios.de") // destination MIHF_ID TLV: 0x02, 0x04, 0x74, 0x65, 0x73, 0x74, // type, length, value ("test") @@ -193,25 +199,25 @@ BOOST_AUTO_UNIT_TEST(MIHPayload_parse) 0x05, // first bit not set, length=5 0x1a, 0x2b, 0x3c, 0x4d, 0x5e // value }; - + MIHPacket mihPacket (MIHPacket::create(data)); BOOST_CHECK_EQUAL( mihPacket->payloadLength(), 42u); - + BOOST_REQUIRE( mihPacket.next().is() ); MIHPayloadPacket mihPayload (mihPacket.next().as()); BOOST_CHECK_EQUAL( mihPayload->tlv_list().size(), 2u); MIHPayloadPacketParser::tlv_list_t::container tlv_list_container (mihPayload->tlv_list()); - + GenericTLVPacket::Parser tlv1 = *tlv_list_container.begin(); BOOST_CHECK_EQUAL( tlv1.type(), 0x42); BOOST_CHECK_EQUAL( tlv1.length(), 0x0au); BOOST_CHECK_EQUAL( tlv1.value().size(), 0x0a); - + GenericTLVPacket::Parser tlv2 = *boost::next(tlv_list_container.begin()); BOOST_CHECK_EQUAL( tlv2.type(), 0x43); BOOST_CHECK_EQUAL( tlv2.length(), 0x05u); - BOOST_CHECK_EQUAL( tlv2.value().size(), 0x05); + BOOST_CHECK_EQUAL( tlv2.value().size(), 0x05); } @@ -222,35 +228,35 @@ BOOST_AUTO_UNIT_TEST(MIHPayload_create) mihPacket->transactionId() = 21; mihPacket->src_mihfId().setString( "senf@berlios.de"); mihPacket->dst_mihfId().setString( "test"); - + MIHPayloadPacket mihPayload (MIHPayloadPacket::createAfter(mihPacket)); - - unsigned char tlv1_value[] = { + + unsigned char tlv1_value[] = { 0x1a, 0x2b, 0x3c, 0x4d, 0x5e }; GenericTLVPacket tlv2 = (GenericTLVPacket::create()); tlv2->type() = 0x43; tlv2->value( tlv1_value); - tlv2.finalizeThis(); + tlv2.finalizeThis(); mihPayload->tlv_list().push_front( tlv2.parser()); - unsigned char tlv2_value[] = { + unsigned char tlv2_value[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 }; GenericTLVPacket tlv1 (GenericTLVPacket::create()); tlv1->type() = 0x42; tlv1->value( tlv2_value); tlv1.finalizeThis(); mihPayload->tlv_list().push_front( tlv1.parser()); - + mihPacket.finalizeAll(); - - unsigned char data[] = { + + unsigned char data[] = { // MIH header - 0x10, 0x54, 0x00, 0x00, 0x00, 0x15, + 0x10, 0x54, 0x00, 0x00, 0x00, 0x15, // variable payload length: 0x00, 0x2a, // source MIHF_ID TLV: 0x01, 0x0f, // type, length - 0x73, 0x65, 0x6e, 0x66, 0x40, 0x62, 0x65, 0x72, 0x6c, + 0x73, 0x65, 0x6e, 0x66, 0x40, 0x62, 0x65, 0x72, 0x6c, 0x69, 0x6f, 0x73, 0x2e, 0x64, 0x65, // value ("senf@berlios.de") // destination MIHF_ID TLV: 0x02, 0x04, 0x74, 0x65, 0x73, 0x74, // type, length, value ("test") @@ -264,7 +270,7 @@ BOOST_AUTO_UNIT_TEST(MIHPayload_create) 0x05, // first bit not set, length=5 0x1a, 0x2b, 0x3c, 0x4d, 0x5e // value }; - + BOOST_CHECK(equal( mihPacket.data().begin(), mihPacket.data().end(), data )); } @@ -272,7 +278,7 @@ BOOST_AUTO_UNIT_TEST(MIHPayload_create) ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_ - + // Local Variables: // mode: c++ // fill-column: 100