X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80211Bundle%2FWLANBeaconPacket.test.cc;h=659552a323d090f9a6565c5bd3abb1e34bc2ea79;hb=78a6e233083efa63a9cd0684a92abc64202a9ee7;hp=f5585a6bd1ef75b7fe88ae81de4f41c174eb4178;hpb=d1284f9a03b4e3a8624842ecd39304403f53a960;p=senf.git diff --git a/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc b/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc index f5585a6..659552a 100644 --- a/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc +++ b/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc @@ -1,9 +1,10 @@ -// $Id: WLANPacket.test.cc 1317 2009-08-21 14:07:47Z g0dil $ +// $Id$ // -// Copyright (C) 2008 +// Copyright (C) 2009 // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Christian Niephaus +// Thorsten Horstmann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -21,18 +22,17 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief WLANPacket unit tests */ + \brief 802.11 WLAN Beacon Packet unit tests */ // Custom includes #include "WLANBeaconPacket.hh" -#include #include #include ///////////////////////////////cc.p//////////////////////////////////////// -/* test parser with a data frame */ -BOOST_AUTO_UNIT_TEST(WLANBeaconPacket_packet) + +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_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 contraint + 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,10 +55,72 @@ 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()) ); - + std::ostringstream oss (std::ostringstream::out); + SENF_CHECK_NO_THROW( p.dump( oss )); } +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 + 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//////////////////////////////////////// + // Local Variables: // mode: c++