///////////////////////////////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
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->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>());
+ 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::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
+ 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: