X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FGenericTLV.test.cc;h=6bdd1c9ec11d667b411917b36524b5ddeff6f472;hb=9cb871b939efe93e35dd96808d25089399acfc46;hp=b403c33456a95d549ec3a3ed2b017a860807771b;hpb=3a43b572a2c0028b353d47e86fa7546633d6e2cf;p=senf.git diff --git a/senf/Packets/GenericTLV.test.cc b/senf/Packets/GenericTLV.test.cc index b403c33..6bdd1c9 100644 --- a/senf/Packets/GenericTLV.test.cc +++ b/senf/Packets/GenericTLV.test.cc @@ -34,24 +34,24 @@ ///////////////////////////////cc.p//////////////////////////////////////// namespace { - struct MyTLVParserBase + struct MyTLVParserBase : public senf::PacketParserBase { # include SENF_PARSER() SENF_PARSER_FIELD ( type, senf::UInt8Parser ); SENF_PARSER_FIELD_RO ( length, senf::UInt8Parser ); SENF_PARSER_FINALIZE ( MyTLVParserBase ); - + typedef senf::GenericTLVParserRegistry Registry; }; - + struct MyGenericTLVParser : public senf::GenericTLVParserBase { typedef senf::GenericTLVParserBase base; MyGenericTLVParser(data_iterator i, state_type s) : base(i,s) {} }; - + struct MyConcreteTLVParser : public MyTLVParserBase { @@ -59,13 +59,13 @@ namespace { SENF_PARSER_INHERIT ( MyTLVParserBase ); SENF_PARSER_FIELD ( myValue, senf::UInt32Parser ); SENF_PARSER_FINALIZE ( MyConcreteTLVParser ); - + SENF_PARSER_INIT() { type() = typeId; length_() = 4; } static type_t::value_type const typeId = 0x42; - + void dump(std::ostream & os) const { boost::io::ios_all_saver ias(os); os << " MyConcreteTLVParser\n" @@ -74,7 +74,7 @@ namespace { << " value: " << senf::format::dumpint(myValue()) << "\n"; } }; - + struct MyConcrete2TLVParser : public MyTLVParserBase { @@ -82,13 +82,13 @@ namespace { SENF_PARSER_INHERIT ( MyTLVParserBase ); SENF_PARSER_FIELD ( myValue, senf::UInt32Parser ); SENF_PARSER_FINALIZE ( MyConcrete2TLVParser ); - + SENF_PARSER_INIT() { type() = typeId; length_() = 4; } static type_t::value_type const typeId = 0x47; - + void dump(std::ostream & os) const { boost::io::ios_all_saver ias(os); os << " MyConcreteTLVParser\n" @@ -97,7 +97,7 @@ namespace { << " value: " << senf::format::dumpint(myValue()) << "\n"; } }; - + class MyTestPacketParser : public senf::PacketParserBase { @@ -106,7 +106,7 @@ namespace { SENF_PARSER_LIST ( tlv_list, list_length, MyGenericTLVParser ); SENF_PARSER_FINALIZE ( MyTestPacketParser ); }; - + struct MyTestPacketType : public senf::PacketTypeBase, public senf::PacketTypeMixin @@ -124,7 +124,7 @@ namespace { SENF_AUTO_UNIT_TEST(GenericTLV_parser) { - BOOST_CHECK_EQUAL( senf::init_bytes::value, + BOOST_CHECK_EQUAL( senf::init_bytes::value, senf::init_bytes::value) ; unsigned char data[] = { @@ -144,9 +144,9 @@ SENF_AUTO_UNIT_TEST(GenericTLV_parser) SENF_CHECK_EQUAL_COLLECTIONS( data, data+sizeof(data), genericTLVParser.value().begin(), genericTLVParser.value().end() ); - std::vector value (4, 0xab); + std::vector value (4, 0xab); genericTLVParser.value( std::make_pair(0x42, value)); - + BOOST_CHECK( genericTLVParser.is()); MyConcreteTLVParser concreteTLVParser ( genericTLVParser.as()); @@ -162,7 +162,7 @@ SENF_AUTO_UNIT_TEST(GenericTLV_packet) MyConcreteTLVParser tlv ( tlvContainer.push_back_space().init()); tlv.myValue() << 0xffff; p.finalizeThis(); - + unsigned char data[] = { 0x01, // tlv list length // first tlv: @@ -179,25 +179,25 @@ SENF_AUTO_UNIT_TEST(GenericTLV_registry) typedef senf::GenericTLVParserRegistry MyTLVParserRegistry; MyTestPacket p ( MyTestPacket::create()); MyTestPacket::Parser::tlv_list_t::container tlvContainer (p->tlv_list() ); - MyConcreteTLVParser conreteTLVParser ( + MyConcreteTLVParser conreteTLVParser ( tlvContainer.push_back_space().init()); conreteTLVParser.myValue() << 0xffff; p.finalizeThis(); - + std::stringstream ss; tlvContainer.begin()->dump( ss); - BOOST_CHECK_EQUAL( ss.str().substr(0,58), + BOOST_CHECK_EQUAL( ss.str().substr(0,58), " GenericTLVParser<(anonymous namespace)::MyTLVParserBase>" ); BOOST_CHECK( ! MyTLVParserRegistry::instance().isRegistered( tlvContainer.begin()->type())); - + MyTLVParserRegistry::instance().registerParser(); BOOST_CHECK( MyTLVParserRegistry::instance().isRegistered( tlvContainer.begin()->type())); - BOOST_CHECK_EQUAL( + BOOST_CHECK_EQUAL( MyTLVParserRegistry::instance().bytes( *tlvContainer.begin()), senf::bytes( *tlvContainer.begin()) ); - + ss.str(""); ss.clear(); - + tlvContainer.begin()->dump( ss); BOOST_CHECK_EQUAL( ss.str().substr(0,21), " MyConcreteTLVParser" ); } @@ -206,20 +206,20 @@ SENF_AUTO_UNIT_TEST(GenericTLV_predicate) { MyTestPacket p ( MyTestPacket::create() ); MyTestPacket::Parser::tlv_list_t::container tlvContainer (p->tlv_list() ); - MyConcreteTLVParser conreteTLVParser ( + MyConcreteTLVParser conreteTLVParser ( tlvContainer.push_back_space().init()); conreteTLVParser.myValue() << 0xffff; - MyConcrete2TLVParser conreteTLVParser2 ( + MyConcrete2TLVParser conreteTLVParser2 ( tlvContainer.push_back_space().init()); conreteTLVParser2.myValue() << 0xdddd; p.finalizeThis(); - -// typedef senf::IPv6HopByHopOptionsPacket::Parser::options_t::container optContainer_t; + +// typedef senf::IPv6HopByHopOptionsPacket::Parser::options_t::container optContainer_t; // optContainer_t optC (p->tlv_list() ); - + MyTestPacket::Parser::tlv_list_t::container testTlvContainer (p->tlv_list() ); MyTestPacket::Parser::tlv_list_t::container::iterator it = std::find_if ( - testTlvContainer.begin(), testTlvContainer.end(), + testTlvContainer.begin(), testTlvContainer.end(), senf::detail::Predicate< senf::GenericTLVParserBase, MyConcreteTLVParser>() ); BOOST_CHECK( it->is()) ; }