X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FPacketParser.test.cc;h=66d84f36bb137801f1fd6adc50bf1d94b6e4110d;hb=1a35108f90dd4c1a1ec94cc6e765feea4b616823;hp=9f115cb5b500a15cd0b885c3500bb72c03a0e23e;hpb=47368f306a577d1e46df69a7f729bd3893cbe5e7;p=senf.git diff --git a/Packets/PacketParser.test.cc b/Packets/PacketParser.test.cc index 9f115cb..66d84f3 100644 --- a/Packets/PacketParser.test.cc +++ b/Packets/PacketParser.test.cc @@ -1,6 +1,8 @@ -// Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) +// $Id$ +// +// Copyright (C) 2007 +// 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 @@ -25,12 +27,9 @@ //#include "PacketParser.test.ih" // Custom includes -#include "PacketParser.hh" -#include "PacketInterpreter.hh" -#include "PacketType.hh" -#include "ParseInt.hh" +#include "Packets.hh" -#include +#include "../Utils/auto_unit_test.hh" #include #define prefix_ @@ -41,34 +40,38 @@ namespace { struct SimpleParser : public senf::PacketParserBase { - SENF_PACKET_PARSER_INIT(SimpleParser); - +# include SENF_FIXED_PARSER() + SENF_PARSER_FINALIZE(SimpleParser); + using senf::PacketParserBase::check; using senf::PacketParserBase::validate; }; struct FooParser : public senf::PacketParserBase { - SENF_PACKET_PARSER_INIT(FooParser); +# include SENF_FIXED_PARSER() - SENF_PACKET_PARSER_DEFINE_FIXED_FIELDS( - ((Field)( name, senf::Parse_UInt16 )) - ((Field)( id, senf::Parse_Int32 )) ); + SENF_PARSER_FIELD( name, senf::UInt16Parser ); + SENF_PARSER_FIELD( id, senf::Int32Parser ); + + SENF_PARSER_FINALIZE(FooParser); }; struct BarParser : public senf::PacketParserBase { - SENF_PACKET_PARSER_INIT(BarParser); +# include SENF_PARSER() + + SENF_PARSER_FIELD( name, senf::UInt16Parser ); + SENF_PARSER_FIELD( id, senf::Int32Parser ); - SENF_PACKET_PARSER_DEFINE_FIELDS( - ((Field)( name, senf::Parse_UInt16 )) - ((Field)( id, senf::Parse_Int32 )) ); + SENF_PARSER_FINALIZE(BarParser); }; } BOOST_AUTO_UNIT_TEST(packetParserBase) { - senf::PacketInterpreter::ptr pi (senf::PacketInterpreter::create(6u)); + senf::PacketInterpreter::ptr pi (senf::PacketInterpreter::create( + senf::PacketInterpreterBase::size_type(6u))); SimpleParser p (pi->data().begin(),&pi->data()); BOOST_CHECK( pi->data().begin() == p.i() ); @@ -81,7 +84,7 @@ BOOST_AUTO_UNIT_TEST(packetParserBase) // otherwise ... BOOST_CHECK_EQUAL( FooParser::fixed_bytes+0, 6u ); BOOST_CHECK_EQUAL( BarParser(pi->data().begin(),&pi->data()).bytes(), 6u ); - BOOST_CHECK_EQUAL( senf::bytes(senf::Parse_UInt16(pi->data().begin(),&pi->data())), 2u ); + BOOST_CHECK_EQUAL( senf::bytes(senf::UInt16Parser(pi->data().begin(),&pi->data())), 2u ); BOOST_CHECK_EQUAL( senf::bytes(FooParser(pi->data().begin(),&pi->data())), 6u ); BOOST_CHECK_EQUAL( senf::bytes(BarParser(pi->data().begin(),&pi->data())), 6u ); @@ -89,35 +92,16 @@ BOOST_AUTO_UNIT_TEST(packetParserBase) BOOST_CHECK_EQUAL( senf::init_bytes::value, 6u ); } -BOOST_AUTO_UNIT_TEST(safePacketParser) -{ - senf::PacketInterpreter::ptr pi (senf::PacketInterpreter::create(6u)); - senf::SafePacketParser p; - - BOOST_CHECK( !p ); - - p = senf::Parse_UInt16(pi->data().begin(),&pi->data()); - - BOOST_CHECK( p ); - (*p) = 0x1234u; - - BOOST_CHECK_EQUAL( (*p), 0x1234u ); - BOOST_CHECK_EQUAL( p->data()[0], 0x12u ); - - p->data().resize(1024u); - BOOST_CHECK_EQUAL( (*p), 0x1234u ); - (*p) = 0x2345u; - BOOST_CHECK_EQUAL( p->data()[0], 0x23u ); -} - ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_ - + // Local Variables: // mode: c++ // fill-column: 100 // c-file-style: "senf" // indent-tabs-mode: nil // ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 // End: