X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FPacketRegistry.test.cc;h=a30c8fbc0c36b4e578eb1076cae00e75d7c04657;hb=81f84badf27b66dbadec9890646ca1193e998505;hp=70618f28ef508a1d3deb38d1d6af786a779de730;hpb=47368f306a577d1e46df69a7f729bd3893cbe5e7;p=senf.git diff --git a/Packets/PacketRegistry.test.cc b/Packets/PacketRegistry.test.cc index 70618f2..a30c8fb 100644 --- a/Packets/PacketRegistry.test.cc +++ b/Packets/PacketRegistry.test.cc @@ -1,9 +1,9 @@ // $Id$ // // Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -20,18 +20,18 @@ // 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 "PacketRegistry.hh" -#include "PacketType.hh" -#include "ParseInt.hh" +#include +#include "Packets.hh" -#include +#include "../Utils/auto_unit_test.hh" #include #define prefix_ @@ -50,30 +50,55 @@ namespace { }; struct FooPacketType : public PacketTypeBase {}; + typedef senf::ConcretePacket FooPacket; struct BarPacketType : public PacketTypeBase {}; + typedef senf::ConcretePacket BarPacket; struct OtherPacketType : public PacketTypeBase {}; - - namespace reg { - PacketRegistry::RegistrationProxy registerFoo ("foo"); - PacketRegistry::RegistrationProxy registerBar ("bar"); - } + typedef senf::ConcretePacket OtherPacket; } +SENF_PACKET_REGISTRY_REGISTER(StringTag, "foo", FooPacket); +SENF_PACKET_REGISTRY_REGISTER(StringTag, "bar", BarPacket); + BOOST_AUTO_UNIT_TEST(packetRegistry_test) { - PacketRegistry::registerPacket(1u); - PacketRegistry::registerPacket(2u); + PacketRegistry::registerPacket(1u); + PacketRegistry::registerPacket(2u); - BOOST_CHECK_EQUAL( PacketRegistry::key(), 1u ); - BOOST_CHECK_EQUAL( PacketRegistry::key(), 2u ); - BOOST_CHECK_THROW( PacketRegistry::key(), + BOOST_CHECK_EQUAL( PacketRegistry::key(), 1u ); + BOOST_CHECK_EQUAL( PacketRegistry::key(), 2u ); + BOOST_CHECK_THROW( PacketRegistry::key(), PacketTypeNotRegisteredException ); - BOOST_CHECK_EQUAL( PacketRegistry::key(), "foo" ); + 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////////////////////////////////////////