///////////////////////////////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
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
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>());
+ senf::WLANPowerConstraintInfoElementParser ie ( i->as<senf::WLANPowerConstraintInfoElementParser>());
+ 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<senf::WLANPowerConstraintInfoElementParser>() );
+ 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_
\f
// Local Variables: