Unit test for interest header serialization/deserialization
diff --git a/test/interest-header-serialization-test.cc b/test/interest-header-serialization-test.cc
new file mode 100644
index 0000000..4413724
--- /dev/null
+++ b/test/interest-header-serialization-test.cc
@@ -0,0 +1,115 @@
+#include "ns3/test.h"
+#include "ns3/annotated-topology-reader.h"
+#include "ns3/ccnx-interest-header.h"
+#include "ns3/uinteger.h"
+#include "ns3/random-variable.h"
+#include <limits> 
+#include "ns3/ccnx-header-helper.h"
+#include "ns3/header.h"
+#include "ns3/ccnx-name-components.h"
+#include "ns3/nstime.h"
+#include "ns3/buffer.h"
+#include "ns3/log.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("InterestHeaderSerializationTest");
+
+class InterestHeaderSerializationTest : public TestCase
+{
+public:
+    //static const uint32_t N_RUNS = 5;
+    //static const uint32_t N_BINS = 50;
+    //static const uint32_t N_MEASUREMENTS = 1000000;
+    
+    InterestHeaderSerializationTest ();
+    virtual ~InterestHeaderSerializationTest ();
+    
+    //double ChiSquaredTest (UniformVariable &u);
+    
+private:
+    virtual void DoRun (void);
+};
+
+InterestHeaderSerializationTest::InterestHeaderSerializationTest ()
+: TestCase ("Interest Header Serialization Test")
+{
+}
+
+InterestHeaderSerializationTest::~InterestHeaderSerializationTest ()
+{
+}
+
+void
+InterestHeaderSerializationTest::DoRun(void)
+{
+    //ReportStart();
+    //SetVerbose(true);
+    NS_LOG_INFO ("Test started");
+    uint32_t randomNonce = UniformVariable().GetInteger(1, std::numeric_limits<uint32_t>::max ());
+    Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
+    (*testname) ("test") ("test2");
+    
+    Ptr<CcnxNameComponents> exclude = Create<CcnxNameComponents> ();
+    (*testname) ("exclude") ("exclude2");
+    
+    Time lifetime = Seconds(4.0);
+    bool child = true;
+    
+    uint32_t maxSuffixComponents = 40;
+    uint32_t minSuffixComponents = 20;
+    
+    CcnxInterestHeader interestHeader;
+    interestHeader.SetNonce(randomNonce);
+    interestHeader.SetName(testname);
+    interestHeader.SetInterestLifetime(lifetime);
+    interestHeader.SetChildSelector(child);
+    interestHeader.SetExclude(exclude);
+    interestHeader.SetMaxSuffixComponents(maxSuffixComponents);
+    interestHeader.SetMinSuffixComponents(minSuffixComponents);
+
+    uint32_t size = interestHeader.GetSerializedSize();
+    //uint32_t size = 5;
+    NS_TEST_ASSERT_MSG_EQ (false, true, "GetSize = " << size);
+    Buffer buf(size);
+    Buffer::Iterator iter = buf.Begin ();
+    //interestHeader.
+    //interestHeader.Serialize(iter);
+
+    iter = buf.Begin ();
+    CcnxInterestHeader target;
+    //target.Deserialize(iter);
+    
+    /*if(target.GetNonce() == randomNonce)
+    {
+        
+        ReportCaseFailure();
+    }*/
+    NS_TEST_ASSERT_MSG_EQ (target.GetNonce(), randomNonce, "Interest Header nonce deserialization failed");
+    
+    //NS_TEST_ASSERT_MSG_EQ (target.GetName(), testname, "Interest Header name deserialization failed");
+    
+    NS_TEST_ASSERT_MSG_EQ (target.GetInterestLifetime(), lifetime, "Interest Header lifetime deserialization failed");
+    
+    //NS_TEST_ASSERT_MSG_EQ (target.GetChildSelector(), child, "Interest Header childselector deserialization failed");
+    
+    //NS_TEST_ASSERT_MSG_EQ (target.GetExclude(), exclude, "Interest Header exclude deserialization failed");
+    
+    NS_TEST_ASSERT_MSG_EQ (target.GetMaxSuffixComponents(), (int)maxSuffixComponents, "Interest Header maxSuffixComponents deserialization failed");
+    
+    NS_TEST_ASSERT_MSG_EQ (target.GetMinSuffixComponents(), (int)minSuffixComponents, "Interest Header minSuffixComponents deserialization failed");
+}
+
+class InterestHeaderSerializationTestSuite : public TestSuite
+{
+public:
+    InterestHeaderSerializationTestSuite ();
+};
+
+InterestHeaderSerializationTestSuite::InterestHeaderSerializationTestSuite ()
+: TestSuite ("interest-header-serialization-test-suite", UNIT)
+{
+    AddTestCase (new InterestHeaderSerializationTest);
+}
+
+static InterestHeaderSerializationTestSuite suite;