//////////////////////////////////////////////////////////////////////////////////// /// /// \brief Tests large data set creation and merging. /// //////////////////////////////////////////////////////////////////////////////////// void TestLargeDataSets() { Packet payload; // Large data set payload. Header header; // Message header data. UShort messageCode = 50; // Random message type. Packet::List stream; // Multi-packet stream sequence. Header::List streamHeaders; // Mutli-packet stream sequence headers. unsigned int payloadSize = 60000; // Payload data size to create. header.mSourceID(50, 1, 1); header.mDestinationID(51, 1, 1); for(unsigned int i = 0; i < payloadSize/UINT_SIZE; i++) { payload.Write(i); } LargeDataSet::CreateLargeDataSet(header, messageCode, payload, stream, streamHeaders, NULL, 1437, 30); payload.Destroy(); messageCode = 0; header = Header(); LargeDataSet::MergeLargeDataSet(header, messageCode, payload, stream, NULL); unsigned int data; for(unsigned int i = 0; i < payloadSize/UINT_SIZE; i++) { payload.Read(data); if(data != i) { std::cout << "Large Data Sets Error: Data Does Not Match!\n"; return; } } std::random_shuffle(stream.begin(), stream.end()); LargeDataSet dataSet; for(unsigned int i = 0; i < (unsigned int)stream.size(); i++) { Header header; UShort messageCode; stream[i].SetReadPos(0); header.Read(stream[i]); stream[i].Read(messageCode); if(dataSet.AddPacket(header, messageCode, stream[i]) == false) { std::cout << "Large Data Sets Error: Could Not Collect Stream.\n"; } } // Now merge the data. LargeDataSet::MergeLargeDataSet(header, messageCode, payload, dataSet.mStream, NULL); for(unsigned int i = 0; i < payloadSize/UINT_SIZE; i++) { payload.Read(data); if(data != i) { std::cout << "Large Data Sets Error: Data Does Not Match!\n"; return; } } }