X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2F80211Bundle%2FWLANBeaconPacket.test.cc;h=a12b938a7ce7c7dbda176242596d354ae188c715;hb=8a6697d11e9a6557d9a5c42b4052666fce32bc10;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..a12b938 100644 --- a/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc +++ b/senf/Packets/80211Bundle/WLANBeaconPacket.test.cc @@ -2,24 +2,29 @@ // // 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 -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Thorsten Horstmann +// Christian Niephaus /** \file \brief 802.11 WLAN Beacon Packet unit tests */ @@ -30,9 +35,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 +51,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 +63,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: