X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FPacket.test.cc;h=aeca47db3b076fb4d5e377069f8f60f9ce6bf609;hb=a0b6f53e5c464c6b84fed30a67fcce32da81012d;hp=4dbe32925f11dee96155ecf917dbca2f01c81b16;hpb=35e271d6c345505475a8cd2654950edd9060e712;p=senf.git diff --git a/senf/Packets/Packet.test.cc b/senf/Packets/Packet.test.cc index 4dbe329..aeca47d 100644 --- a/senf/Packets/Packet.test.cc +++ b/senf/Packets/Packet.test.cc @@ -43,7 +43,7 @@ namespace { typedef unsigned key_t; }; - struct FooPacketType + struct FooPacketType : public senf::PacketTypeBase, public senf::PacketTypeMixin { @@ -57,7 +57,7 @@ namespace { // mode. Otherwise, mixin::nextPacketRange() would query the parser for it's size to find // the header size. Since the parser is VoidPacketParser, the header size would therefore be // 0 - static size_type initHeadSize() + static size_type initHeadSize() { return initSize(); } }; typedef senf::ConcretePacket FooPacket; @@ -65,7 +65,7 @@ namespace { struct BarPacketParser : public senf::PacketParserBase { # include SENF_FIXED_PARSER() - + SENF_PARSER_FIELD( type, senf::UInt16Parser ); SENF_PARSER_FIELD( length, senf::Int32Parser ); SENF_PARSER_FIELD( reserved, senf::UInt16Parser ); @@ -77,7 +77,7 @@ namespace { SENF_PARSER_FINALIZE(BarPacketParser); }; - struct BarPacketType + struct BarPacketType : public senf::PacketTypeBase, public senf::PacketTypeMixin { @@ -116,7 +116,7 @@ namespace { std::ostream & operator<<(std::ostream & os, IntAnnotation const & v) { os << v.value; return os; } - + struct LargeAnnotation { char value[32]; }; @@ -150,17 +150,19 @@ namespace { } -BOOST_AUTO_UNIT_TEST(packet) +SENF_AUTO_UNIT_TEST(packet) { - senf::Packet packet (FooPacket::create()); + BOOST_CHECK(! senf::Packet().is() ); + senf::Packet packet (FooPacket::create()); BarPacket::createAfter(packet); BOOST_REQUIRE( packet ); BOOST_CHECK( packet.next() ); BOOST_CHECK( ! packet.next().next(senf::nothrow) ); + BOOST_CHECK( ! packet.next().next(senf::nothrow).is() ); BOOST_CHECK( ! packet.prev(senf::nothrow) ); BOOST_CHECK( packet.next().prev() == packet ); - BOOST_CHECK( packet.next() != packet ); + SENF_CHECK_NOT_EQUAL( packet.next(), packet ); BOOST_CHECK_EQUAL( std::distance(packet.data().begin(), packet.next().data().begin()), 4 ); BOOST_CHECK_EQUAL( std::distance(packet.data().begin(), packet.data().end()), 12 ); BOOST_CHECK_EQUAL( std::distance(packet.next().data().begin(), packet.next().data().end()), 8 ); @@ -171,7 +173,7 @@ BOOST_AUTO_UNIT_TEST(packet) BOOST_CHECK( packet.next().is() ); BOOST_CHECK( packet.first() == packet ); BOOST_CHECK( packet.last() == packet.next() ); - + senf::Packet p2 (packet.next()); BOOST_CHECK( p2 ); packet.parseNextAs(); @@ -180,7 +182,7 @@ BOOST_AUTO_UNIT_TEST(packet) BOOST_CHECK( packet.next().is() ); BOOST_CHECK( ! p2 ); BOOST_CHECK( packet.next().as() ); - + p2 = packet.next().clone(); BOOST_REQUIRE( p2 ); packet.next().append( p2 ); @@ -193,19 +195,19 @@ BOOST_AUTO_UNIT_TEST(packet) BOOST_CHECK_EQUAL( senf::PacketRegistry::key(packet), 1u ); packet.next().parseNextAs( senf::PacketRegistry::lookup(2u).factory() ); BOOST_CHECK( packet.next().next().is() ); - + std::stringstream s; packet.dump(s); - BOOST_CHECK_EQUAL( s.str(), + BOOST_CHECK_EQUAL( s.str(), "Annotations:\n" " (anonymous namespace)::ComplexAnnotation: no value\n" " (anonymous namespace)::IntAnnotation: 0\n" "BarPacket:\n" " type: 0\n" " length: 0\n" ); - + packet.finalizeAll(); - BOOST_CHECK_EQUAL( packet.last().as()->type(), + BOOST_CHECK_EQUAL( packet.last().as()->type(), BarPacket::Parser::type_t::value_type(-1) ); packet.last().append(FooPacket::create()); packet.finalizeThis(); @@ -236,7 +238,7 @@ BOOST_AUTO_UNIT_TEST(packet) BOOST_CHECK( packet.last().rfind() == packet.last() ); BOOST_CHECK( packet.next() == packet.next() ); BOOST_CHECK( packet.last().prev().prev() == packet ); - + senf::DataPacket::createAfter(packet); BOOST_CHECK_THROW( packet.next().next().next().parseNextAs(), senf::InvalidPacketChainException ); @@ -244,7 +246,7 @@ BOOST_AUTO_UNIT_TEST(packet) SENF_CHECK_NO_THROW( BarPacket::create(senf::noinit).dump(s)); } -BOOST_AUTO_UNIT_TEST(concretePacket) +SENF_AUTO_UNIT_TEST(concretePacket) { senf::PacketData::byte data[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; @@ -268,35 +270,50 @@ BOOST_AUTO_UNIT_TEST(concretePacket) // No 'u' suffix here to check, that the disable_if works ... BOOST_CHECK_EQUAL( FooPacket::createAfter(packet,10).size(), 10u ); BOOST_CHECK_EQUAL( packet.size(), 14u ); - + BOOST_CHECK_EQUAL( FooPacket::createAfter(packet,2u,senf::noinit).size(), 2u ); BOOST_CHECK_EQUAL( packet.size(), 6u ); - + BOOST_CHECK_EQUAL( FooPacket::createAfter(packet,data).size(), 6u ); BOOST_CHECK_EQUAL( packet.size(), 10u ); - + BOOST_CHECK_EQUAL( FooPacket::createBefore(packet).size(), 14u ); BOOST_CHECK_EQUAL( packet.size(), 10u ); BOOST_CHECK_EQUAL( FooPacket::createBefore(packet,senf::noinit).size(), 10u ); BOOST_CHECK_EQUAL( packet.size(), 10u ); - BOOST_CHECK( packet.clone() != packet ); + BOOST_CHECK_EQUAL( FooPacket::createInsertBefore(packet).size(), 14u ); + BOOST_CHECK_EQUAL( packet.size(), 10u ); + BOOST_REQUIRE( packet.prev() ); + BOOST_CHECK_EQUAL( packet.prev().size(), 14u ); + BOOST_REQUIRE( packet.prev().prev() ); + BOOST_CHECK_EQUAL( packet.prev().prev().size(), 14u ); + + BOOST_CHECK_EQUAL( FooPacket::createInsertBefore(packet,senf::noinit).size(), 10u ); + BOOST_CHECK_EQUAL( packet.size(), 10u ); + BOOST_REQUIRE_NO_THROW( packet.prev().prev().prev() ); + BOOST_CHECK_THROW( packet.prev().prev().prev().prev(), senf::InvalidPacketChainException ); + BOOST_CHECK_EQUAL( packet.prev().size(), 10u ); + BOOST_CHECK_EQUAL( packet.prev().prev().size(), 14u ); + BOOST_CHECK_EQUAL( packet.prev().prev().prev().size(), 14u ); + + SENF_CHECK_NOT_EQUAL( packet.clone(), packet ); BOOST_CHECK_EQUAL( BarPacket::create()->reserved(), 0xA0A0u ); } -BOOST_AUTO_UNIT_TEST(packetAssign) +SENF_AUTO_UNIT_TEST(packetAssign) { BarPacket bar1 (BarPacket::create()); BarPacket bar2 (BarPacket::create()); bar2->type() << 0x2A2Bu; bar1.parser() << bar2; - + BOOST_CHECK_EQUAL( bar1->type(), 0x2A2Bu ); } -BOOST_AUTO_UNIT_TEST(packetAnnotation) +SENF_AUTO_UNIT_TEST(packetAnnotation) { senf::Packet packet (FooPacket::create()); BarPacket::createAfter(packet); @@ -326,7 +343,7 @@ COMPILE_FAIL(invalidAnnotation) # ifdef BOOST_HAS_TYPE_TRAITS_INTRINSICS senf::Packet packet (FooPacket::create()); - (void) packet.annotation(); + senf::IGNORE( packet.annotation() ); # else # endif