X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80211Bundle%2FWLANBeaconPacket.test.cc;h=d38d2ad7c21247b12c2ce438d8601ddb0f158f64;hb=f723d7852a8195072eee387ea9ca77156b58438b;hp=a05ed9b9a7f99887fc938d58ebecc356c8681bcb;hpb=a3f9296f648c4991a1576d4200abfdc72788bc16;p=senf.git diff --git a/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc b/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc index a05ed9b..d38d2ad 100644 --- a/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc +++ b/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc @@ -32,7 +32,7 @@ ///////////////////////////////cc.p//////////////////////////////////////// -BOOST_AUTO_UNIT_TEST(WLANBeaconPacket_packet) +BOOST_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_packet) 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 @@ -55,11 +55,67 @@ BOOST_AUTO_UNIT_TEST(WLANBeaconPacket_packet) BOOST_CHECK_EQUAL( p->timestamp(), 0x0000009C4CAA303AuLL); BOOST_CHECK_EQUAL( p->beaconInterval(), 100u); + 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()) ); +} +BOOST_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 + 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: