X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FPacketRegistry.test.cc;h=70618f28ef508a1d3deb38d1d6af786a779de730;hb=fa2d5a5f2fcd2bf6d20bdbb3f86135e8c2da87cb;hp=4d235c70550a4bca88e2fe976d98661a30e88d13;hpb=c52cd7d87dbb525c1267aad27391b8b7365dbb57;p=senf.git diff --git a/Packets/PacketRegistry.test.cc b/Packets/PacketRegistry.test.cc index 4d235c7..70618f2 100644 --- a/Packets/PacketRegistry.test.cc +++ b/Packets/PacketRegistry.test.cc @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // Stefan Bund @@ -28,7 +28,7 @@ // Custom includes #include #include "PacketRegistry.hh" -#include "DataPacket.hh" +#include "PacketType.hh" #include "ParseInt.hh" #include @@ -39,7 +39,7 @@ namespace { - using namespace satcom::pkf; + using namespace senf; struct BaseTag { typedef unsigned key_t; @@ -49,115 +49,30 @@ namespace { typedef std::string key_t; }; - class BasePacket - : public Packet, public PacketRegistryMixin - { - using PacketRegistryMixin::registerInterpreter; - public: - typedef ptr_t::ptr ptr; - typedef iterator byte_iterator; - - typedef Parse_UInt16 Parse_Type; - - Parse_Type type() const { return Parse_Type(begin()); } - static bool check(iterator b, iterator e) { return true; } - - private: - template - BasePacket(Arg const & arg) : Packet(arg) {} - - virtual void v_nextInterpreter() const - { registerInterpreter(type(), begin()+2, end()); } - virtual void v_finalize() {} - virtual void v_dump(std::ostream & os) const {} - - friend class Packet; - }; - - class FooPacket : public Packet - { - public: - typedef ptr_t::ptr ptr; - typedef iterator byte_iterator; - - static bool check(iterator b, iterator e) { return true; } - - private: - template - FooPacket(Arg const & arg) : Packet(arg) {} - - virtual void v_nextInterpreter() const {} - virtual void v_finalize() {} - virtual void v_dump(std::ostream & os) const {} - - friend class Packet; - }; - - class BarPacket : public Packet - { - public: - typedef ptr_t::ptr ptr; - typedef iterator byte_iterator; - - static bool check(iterator b, iterator e) { return true; } - - private: - template - BarPacket(Arg const & arg) : Packet(arg) {} - - virtual void v_nextInterpreter() const {} - virtual void v_finalize() {} - virtual void v_dump(std::ostream & os) const {} - - friend class Packet; - }; + struct FooPacketType : public PacketTypeBase {}; + struct BarPacketType : public PacketTypeBase {}; + struct OtherPacketType : public PacketTypeBase {}; namespace reg { - PacketRegistry::RegistrationProxy registerFoo ("foo"); - PacketRegistry::RegistrationProxy registerBar ("bar"); + PacketRegistry::RegistrationProxy registerFoo ("foo"); + PacketRegistry::RegistrationProxy registerBar ("bar"); } - + } BOOST_AUTO_UNIT_TEST(packetRegistry_test) { - unsigned char data[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; - - { - BasePacket::ptr p (Packet::create(data, data+sizeof(data))); - BOOST_CHECK( p->next()->is() ); - } - - PacketRegistry::registerPacket(1u); - PacketRegistry::registerPacket(2u); - - BOOST_CHECK_EQUAL( PacketRegistry::key(), 1u ); - BOOST_CHECK_EQUAL( PacketRegistry::key(), 2u ); - BOOST_CHECK_THROW( PacketRegistry::key(), PacketTypeNotRegistered ); - - { - BasePacket::ptr p (Packet::create(data, data+sizeof(data))); - BOOST_CHECK( p->next()->is() ); - } - - data[1] = 0x02; + PacketRegistry::registerPacket(1u); + PacketRegistry::registerPacket(2u); - { - BasePacket::ptr p (Packet::create(data, data+sizeof(data))); - BOOST_CHECK( p->next()->is() ); - } - - data[0] = 0x01; - - { - BasePacket::ptr p (Packet::create(data, data+sizeof(data))); - BOOST_CHECK( p->next()->is() ); - } + 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( PacketRegistry::create("foo",data,data+sizeof(data)) - ->is() ); + BOOST_CHECK_EQUAL( PacketRegistry::key(), "foo" ); + BOOST_CHECK( ! PacketRegistry::lookup("blub", senf::nothrow) ); + BOOST_CHECK( PacketRegistry::lookup(1u, senf::nothrow) ); } @@ -167,5 +82,10 @@ BOOST_AUTO_UNIT_TEST(packetRegistry_test) // Local Variables: // mode: c++ -// c-file-style: "satcom" +// fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 // End: