X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80211Bundle%2FWLANBeaconPacket.test.cc;h=a298f661f5fe05b6fec38ad06617a992e837004b;hb=57daeae6f2e924ce3f16f9677c3474f531cba9e5;hp=41eb81d64ba7922b4eec19aa79d83a14c3662a10;hpb=2571369f6d1701b241a56a78c6a3d6d7569799c7;p=senf.git diff --git a/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc b/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc index 41eb81d..a298f66 100644 --- a/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc +++ b/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc @@ -30,9 +30,9 @@ #include #include -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -BOOST_AUTO_UNIT_TEST(WLANBeaconPacket_parse) +SENF_AUTO_UNIT_TEST(WLANBeaconPacket_parse) { unsigned char data[] = { 0x3a, 0x30, 0xaa, 0x4c, 0x9c, 0x00, 0x00, 0x00, //timestamp @@ -46,7 +46,7 @@ BOOST_AUTO_UNIT_TEST(WLANBeaconPacket_parse) 0x2c, 0x01, 0x11, 0x30, 0x01, 0x11, 0x34, 0x01, 0x17, 0x38, 0x01, 0x17, 0x3c, 0x01, 0x17, 0x40, 0x01, 0x17, 0x95, 0x01, 0x1e, 0x99, 0x01, 0x1e, 0x9d, 0x01, 0x1e, 0xa1, 0x01, 0x1e, 0xa5, 0x01, 0x1e, //Country information - 0x20, 0x01, 0x00, //power constraint + 0x20, 0x01, 0x42, //power constraint 0xdd, 0x18, 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x88, 0x00, 0x02, 0xa3, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00, 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00, //vendor specific @@ -58,28 +58,68 @@ BOOST_AUTO_UNIT_TEST(WLANBeaconPacket_parse) BOOST_CHECK_EQUAL( p->ssidIE().length(), 5); BOOST_CHECK_EQUAL( p->ssidIE().value().value(), "boxC1"); BOOST_CHECK_EQUAL( p->ssid().value(), "boxC1"); + + typedef senf::WLANBeaconPacket::Parser::ieList_t::container ieListContainer_t; + ieListContainer_t ieListContainer (p->ieList()); + BOOST_CHECK_EQUAL( ieListContainer.size(), 5); + + ieListContainer_t::iterator i ( ieListContainer.begin()); + BOOST_CHECK_EQUAL( i->type(), 0x03); //DS parameter set + ++i; + BOOST_CHECK_EQUAL( i->type(), 0x05); //TIM + ++i; + BOOST_CHECK_EQUAL( i->type(), 0x07); //Country information + ++i; + //power constraint + BOOST_CHECK_EQUAL( i->type(), senf::WLANPowerConstraintInfoElementParser::typeId+0); + BOOST_CHECK( i->is()); + senf::WLANPowerConstraintInfoElementParser ie ( i->as()); + BOOST_CHECK_EQUAL( ie.value(), 0x42); + ++i; + BOOST_CHECK_EQUAL( i->type(), 0xdd); //vendor specific + BOOST_CHECK_EQUAL( i->length(), 0x18); + BOOST_CHECK_EQUAL( boost::size(i->value()), 0x18); + + unsigned char value[] = { + 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x88, 0x00, + 0x02, 0xa3, 0x00, 0x00, 0x27, 0xa4, 0x00, 0x00, + 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00 + }; + SENF_CHECK_EQUAL_COLLECTIONS( value, value+sizeof(value), + boost::begin(i->value()), boost::end(i->value()) ); + + std::ostringstream oss (std::ostringstream::out); + SENF_CHECK_NO_THROW( p.dump( oss )); } -BOOST_AUTO_UNIT_TEST(WLANBeaconPacket_create) +SENF_AUTO_UNIT_TEST(WLANBeaconPacket_create) { senf::WLANBeaconPacket p (senf::WLANBeaconPacket::create()); p->timestamp() << 0x0000009C4CAA303AuLL; p->beaconInterval() << 100u; p->ssidIE().value() << "boxC1"; + + typedef senf::WLANBeaconPacket::Parser::ieList_t::container ieListContainer_t; + ieListContainer_t ieListContainer (p->ieList()); + senf::WLANPowerConstraintInfoElementParser ie ( + ieListContainer.push_back_space().init() ); + ie.value() << 0x42; + p.finalizeThis(); - + unsigned char data[] = { 0x3a, 0x30, 0xaa, 0x4c, 0x9c, 0x00, 0x00, 0x00, //timestamp 0x64, 0x00, //beacon interval 0x00, 0x00, //capability information - 0x00, 0x05, 0x62, 0x6f, 0x78, 0x43, 0x31 //SSID + 0x00, 0x05, 0x62, 0x6f, 0x78, 0x43, 0x31, //SSID + 0x01, 0x00, //supported rates + 0x20, 0x01, 0x42, //power constraint }; SENF_CHECK_EQUAL_COLLECTIONS( p.data().begin(), p.data().end(), data, data+sizeof(data) ); } -///////////////////////////////cc.e//////////////////////////////////////// -#undef prefix_ +//-///////////////////////////////////////////////////////////////////////////////////////////////// // Local Variables: