packet test suite ported to new framework
authorPavel Boyko <boyko@iitp.ru>
Thu, 01 Oct 2009 13:59:26 +0400
changeset 5334 92aafeab5e4f
parent 5333 b990c1b9c8e6
child 5335 a2972c6648c7
packet test suite ported to new framework
src/common/packet.cc
--- a/src/common/packet.cc	Thu Oct 01 13:39:14 2009 +0400
+++ b/src/common/packet.cc	Thu Oct 01 13:59:26 2009 +0400
@@ -20,6 +20,9 @@
 #include "packet.h"
 #include "ns3/assert.h"
 #include "ns3/log.h"
+#include "ns3/test.h"
+#include <string>
+#include <stdarg.h>
 
 NS_LOG_COMPONENT_DEFINE ("Packet");
 
@@ -704,17 +707,9 @@
   return os;
 }
 
-
-} // namespace ns3
-
-#ifdef RUN_SELF_TESTS
-
-#include "ns3/test.h"
-#include <string>
-#include <stdarg.h>
-
-using namespace ns3;
-
+//-----------------------------------------------------------------------------
+// Unit tests
+//-----------------------------------------------------------------------------
 namespace {
 
 class ATestTagBase : public Tag
@@ -888,28 +883,24 @@
 #define E(a,b,c) a,b,c
 
 #define CHECK(p, n, ...)                                \
-  NS_TEST_ASSERT (DoCheck (p, __FILE__, __LINE__, n, __VA_ARGS__))
+  DoCheck (p, __FILE__, __LINE__, n, __VA_ARGS__)
 
-namespace ns3 {
-
-
-static class PacketTest: public Test 
+class PacketTest: public TestCase 
 {
 public:
   PacketTest ();
-  virtual bool RunTests (void);
+  virtual bool DoRun (void);
 private:
-  bool DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...);
-} g_packetTest;
+  void DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...);
+};
 
 
 PacketTest::PacketTest ()
-  : Test ("Packet") {}
+  : TestCase ("Packet") {}
 
-bool
+void
 PacketTest::DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...)
 {
-  bool result = true;
   std::vector<struct Expected> expected;
   va_list ap;
   va_start (ap, n);
@@ -930,37 +921,34 @@
       struct Expected e = expected[j];
       std::ostringstream oss;
       oss << "anon::ATestTag<" << e.n << ">";
-      NS_TEST_ASSERT_EQUAL_FILELINE (item.GetTypeId ().GetName (), oss.str (), file, line);
-      NS_TEST_ASSERT_EQUAL_FILELINE (item.GetStart (), e.start, file, line);
-      NS_TEST_ASSERT_EQUAL_FILELINE (item.GetEnd (), e.end, file, line);
+      NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetTypeId ().GetName (), oss.str (), "trivial", file, line);
+      NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetStart (), e.start, "trivial", file, line);
+      NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetEnd (), e.end, "trivial", file, line);
       ATestTagBase *tag = dynamic_cast<ATestTagBase *> (item.GetTypeId ().GetConstructor () ());
-      NS_TEST_ASSERT (tag != 0);
+      NS_TEST_EXPECT_MSG_NE (tag, 0, "trivial");
       item.GetTag (*tag);
-      NS_TEST_ASSERT (!tag->m_error);
+      NS_TEST_EXPECT_MSG_EQ (tag->m_error, false, "trivial");
       delete tag;
       j++;
     }
-  NS_TEST_ASSERT (!i.HasNext ());
-  NS_TEST_ASSERT_EQUAL (j, expected.size ());
-  return result;
+  NS_TEST_EXPECT_MSG_EQ (i.HasNext (), false, "Nothing left");
+  NS_TEST_EXPECT_MSG_EQ (j, expected.size (), "Size match");
 }
 
 bool
-PacketTest::RunTests (void)
+PacketTest::DoRun (void)
 {
-  bool result = true;
-
   Ptr<Packet> pkt1 = Create<Packet> (reinterpret_cast<const uint8_t*> ("hello"), 5);
   Ptr<Packet> pkt2 = Create<Packet> (reinterpret_cast<const uint8_t*> (" world"), 6);
   Ptr<Packet> packet = Create<Packet> ();
   packet->AddAtEnd (pkt1);
   packet->AddAtEnd (pkt2);
   
-  NS_TEST_ASSERT_EQUAL (packet->GetSize (), 11);
+  NS_TEST_EXPECT_MSG_EQ (packet->GetSize (), 11, "trivial");
 
   std::string msg = std::string (reinterpret_cast<const char *>(packet->PeekData ()),
                                  packet->GetSize ());
-  NS_TEST_ASSERT_EQUAL (msg, "hello world");
+  NS_TEST_EXPECT_MSG_EQ (msg, "hello world", "trivial");
 
 
   Ptr<const Packet> p = Create<Packet> (1000);
@@ -1082,31 +1070,31 @@
     Packet p;
     ATestTag<10> a;
     p.AddPacketTag (a);
-    NS_TEST_ASSERT (p.PeekPacketTag (a));
+    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), true, "trivial");
     ATestTag<11> b;
     p.AddPacketTag (b);
-    NS_TEST_ASSERT (p.PeekPacketTag (b));
-    NS_TEST_ASSERT (p.PeekPacketTag (a));
+    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), true, "trivial");
+    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), true, "trivial");
     Packet copy = p;
-    NS_TEST_ASSERT (copy.PeekPacketTag (b));
-    NS_TEST_ASSERT (copy.PeekPacketTag (a));
+    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), true, "trivial");
+    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
     ATestTag<12> c;
-    NS_TEST_ASSERT (!copy.PeekPacketTag (c));
+    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), false, "trivial");
     copy.AddPacketTag (c);
-    NS_TEST_ASSERT (copy.PeekPacketTag (c));
-    NS_TEST_ASSERT (copy.PeekPacketTag (b));
-    NS_TEST_ASSERT (copy.PeekPacketTag (a));
-    NS_TEST_ASSERT (!p.PeekPacketTag (c));
+    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), true, "trivial");
+    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), true, "trivial");
+    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
+    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (c), false, "trivial");
     copy.RemovePacketTag (b);
-    NS_TEST_ASSERT (!copy.PeekPacketTag (b));
-    NS_TEST_ASSERT (p.PeekPacketTag (b));
+    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), false, "trivial");
+    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), true, "trivial");
     p.RemovePacketTag (a);
-    NS_TEST_ASSERT (!p.PeekPacketTag (a));
-    NS_TEST_ASSERT (copy.PeekPacketTag (a));
-    NS_TEST_ASSERT (!p.PeekPacketTag (c));
-    NS_TEST_ASSERT (copy.PeekPacketTag (c));
+    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), false, "trivial");
+    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
+    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (c), false, "trivial");
+    NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), true, "trivial");
     p.RemoveAllPacketTags ();
-    NS_TEST_ASSERT (!p.PeekPacketTag (b));
+    NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), false, "trivial");
   }
 
   {
@@ -1122,9 +1110,22 @@
     CHECK (tmp, 1, E (20, 1, 1001));
   }
 
-  return result;
+  return GetErrorStatus ();
+}
+//-----------------------------------------------------------------------------
+class PacketTestSuite : public TestSuite
+{
+public:
+  PacketTestSuite ();
+};
+
+PacketTestSuite::PacketTestSuite ()
+  : TestSuite ("packet", UNIT)
+{
+  AddTestCase (new PacketTest);
 }
 
-} // namespace ns3
+PacketTestSuite g_packetTestSuite;
 
-#endif /* RUN_SELF_TESTS */
+
+} // namespace ns3