Packets: Absolutely rudimentary new finalize() API tests
[senf.git] / Packets / MPEGDVBBundle / TransportPacket.test.cc
index 0fee6b2..7879ff0 100644 (file)
 
 #include "../../Utils/auto_unit_test.hh"
 #include <boost/test/test_tools.hpp>
+#include <senf/Utils/hexdump.hh>
 
 #define prefix_
 ///////////////////////////////cc.p////////////////////////////////////////
 
 using namespace senf;
 
-BOOST_AUTO_UNIT_TEST(transportPacket_packet)
+BOOST_AUTO_UNIT_TEST(transportPacket_parse)
 {
     // TransportStream-Packet containing a ULE encoded IPv6 ping packet,
     // captured with dvbsnoop
     unsigned char data[] = { 
-            0x47, 0x41, 0x0f, 0x1e, 0x00, 0x80, 0x4c, 0x86,
-            0xdd, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x11, 
-            0x40, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-            0x00, 0x48, 0x7c, 0x7e, 0xff, 0xfe, 0x23, 0x68,
-            0xaf, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
-            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
-            0x04 ,0x02, 0x8c, 0x02, 0x8c, 0x00, 0x20, 0x58,
-            0xe1, 0x11, 0x05, 0x12, 0x67, 0x06, 0x2f, 0x01,
-            0x00, 0x20, 0x01, 0x06, 0x38, 0x04, 0x09, 0x10,
-            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11,
-            0x00, 0x1d, 0xc4, 0xe8, 0xc1, 0xff, 0xff, 0xff,
+            // Transport Packet Header
+            0x47, 0x41, 0x0f, 0x1e, 
+            // Payload Pointer
+            0x00, 
+            // SNDU Header
+            0x80, 0x4c, 0x86, 0xdd,
+            // IPv6 Packet
+            0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x11, 0x40,
+            0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+            0x48, 0x7c, 0x7e, 0xff, 0xfe, 0x23, 0x68, 0xaf,
+            0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+            0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04,
+            0x02, 0x8c, 0x02, 0x8c, 0x00, 0x20, 0x58, 0xe1,
+            0x11, 0x05, 0x12, 0x67, 0x06, 0x2f, 0x01, 0x00,
+            0x20, 0x01, 0x06, 0x38, 0x04, 0x09, 0x10, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00,
+            // SNDU footer (crc-32)
+            0x1d, 0xc4, 0xe8, 0xc1, 
+            // Transport Packet stuffing
             0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
             0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
             0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
@@ -64,10 +73,10 @@ BOOST_AUTO_UNIT_TEST(transportPacket_packet)
             0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
             0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
             0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-            0xff, 0xff, 0xff, 0xff
+            0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
     };
             
-    senf::TransportPacket p (senf::TransportPacket::create(data));
+    TransportPacket p (TransportPacket::create(data));
 
     BOOST_CHECK_EQUAL(   p->sync_byte(),                TransportPacketType::SYNC_BYTE+0 );
     BOOST_CHECK(       ! p->transport_error_indicator()                                  );
@@ -77,6 +86,38 @@ BOOST_AUTO_UNIT_TEST(transportPacket_packet)
     BOOST_CHECK_EQUAL(   p->transport_scrmbl_ctrl(),    0x0u                             );
     BOOST_CHECK_EQUAL(   p->adaptation_field_ctrl(),    0x1u                             );
     BOOST_CHECK_EQUAL(   p->continuity_counter(),       0x0eu                            );
+    BOOST_CHECK_EQUAL(   p->pointer_field(),          0x0u                             );
+}
+
+
+BOOST_AUTO_UNIT_TEST(transportPacket_create_with_pusi)
+{
+    TransportPacket ts_packet (TransportPacket::create());
+    ts_packet->setPUSI(true);
+    ts_packet->pid() = 0x010fu;
+    ts_packet->continuity_counter() = 0x0eu;
+    
+    unsigned char payload_data[] = {  // see test above 
+            // SNDU Header
+            0x80, 0x4c, 0x86, 0xdd,
+            // IPv6 Packet
+            0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x11, 0x40,
+            0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+            0x48, 0x7c, 0x7e, 0xff, 0xfe, 0x23, 0x68, 0xaf,
+            0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+            0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04,
+            0x02, 0x8c, 0x02, 0x8c, 0x00, 0x20, 0x58, 0xe1,
+            0x11, 0x05, 0x12, 0x67, 0x06, 0x2f, 0x01, 0x00,
+            0x20, 0x01, 0x06, 0x38, 0x04, 0x09, 0x10, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00,
+            // SNDU footer (crc-32)
+            0x1d, 0xc4, 0xe8, 0xc1
+    };
+    senf::DataPacket payload (senf::DataPacket::createAfter( ts_packet, payload_data));
+    
+    //TransportPacketType::addStuffingPacketAfter( ts_packet);
+    
+    //senf::hexdump(ts_packet.data().begin(), ts_packet.data().end(), std::cout);
 }
 
 ///////////////////////////////cc.e////////////////////////////////////////