X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FPacketRegistry.test.cc;h=a30c8fbc0c36b4e578eb1076cae00e75d7c04657;hb=f2f5d59e83863f3b513950173baee1b6da2aee3c;hp=d43afb7bfd12df40ca95166bb01405782f972131;hpb=a1a6c76a214ad1935032826713cabaf9ac57bf07;p=senf.git diff --git a/Packets/PacketRegistry.test.cc b/Packets/PacketRegistry.test.cc index d43afb7..a30c8fb 100644 --- a/Packets/PacketRegistry.test.cc +++ b/Packets/PacketRegistry.test.cc @@ -20,13 +20,15 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// Unit tests +/** \file + \brief PacketRegistry unit tests */ //#include "PacketRegistry.test.hh" //#include "PacketRegistry.test.ih" // Custom includes #include +#include #include "Packets.hh" #include "../Utils/auto_unit_test.hh" @@ -54,13 +56,11 @@ namespace { struct OtherPacketType : public PacketTypeBase {}; typedef senf::ConcretePacket OtherPacket; - namespace reg { - PacketRegistry::RegistrationProxy registerFoo ("foo"); - PacketRegistry::RegistrationProxy registerBar ("bar"); - } - } +SENF_PACKET_REGISTRY_REGISTER(StringTag, "foo", FooPacket); +SENF_PACKET_REGISTRY_REGISTER(StringTag, "bar", BarPacket); + BOOST_AUTO_UNIT_TEST(packetRegistry_test) { PacketRegistry::registerPacket(1u); @@ -74,6 +74,31 @@ BOOST_AUTO_UNIT_TEST(packetRegistry_test) BOOST_CHECK_EQUAL( PacketRegistry::key(), "foo" ); BOOST_CHECK( ! PacketRegistry::lookup("blub", senf::nothrow) ); BOOST_CHECK( PacketRegistry::lookup(1u, senf::nothrow) ); + + unsigned elts1[] = { 1u, 2u }; + BOOST_CHECK_EQUAL_COLLECTIONS( PacketRegistry::begin(), PacketRegistry::end(), + elts1+0, elts1+sizeof(elts1)/sizeof(elts1[0]) ); + + std::string elts2[] = { "bar", "foo" }; + BOOST_CHECK_EQUAL_COLLECTIONS( PacketRegistry::begin(), PacketRegistry::end(), + elts2+0, elts2+sizeof(elts2)/sizeof(elts2[0]) ); + + std::stringstream s; + senf::dumpPacketRegistries(s); + BOOST_CHECK_EQUAL( s.str(), + "(anonymous namespace)::BaseTag:\n" + "1 senf::ConcretePacket<(anonymous namespace)::FooPacketType>\n" + "2 senf::ConcretePacket<(anonymous namespace)::BarPacketType>\n" + "\n" + "(anonymous namespace)::RegTag:\n" + "1 senf::ConcretePacket<(anonymous namespace)::FooPacketType>\n" + "2 senf::ConcretePacket<(anonymous namespace)::BarPacketType>\n" + "\n" + "(anonymous namespace)::StringTag:\n" + "bar senf::ConcretePacket<(anonymous namespace)::BarPacketType>\n" + "foo senf::ConcretePacket<(anonymous namespace)::FooPacketType>\n" + "\n" ); + } ///////////////////////////////cc.e////////////////////////////////////////