--- 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