1.1 --- a/src/common/packet-metadata-test.cc Thu Oct 01 12:05:20 2009 +0200
1.2 +++ b/src/common/packet-metadata-test.cc Thu Oct 01 12:06:03 2009 +0200
1.3 @@ -17,8 +17,6 @@
1.4 *
1.5 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
1.6 */
1.7 -#ifdef RUN_SELF_TESTS
1.8 -
1.9 #include <stdarg.h>
1.10 #include <iostream>
1.11 #include <sstream>
1.12 @@ -250,20 +248,18 @@
1.13
1.14 namespace ns3 {
1.15
1.16 -
1.17 -
1.18 -class PacketMetadataTest : public Test {
1.19 +class PacketMetadataTest : public TestCase {
1.20 public:
1.21 PacketMetadataTest ();
1.22 virtual ~PacketMetadataTest ();
1.23 bool CheckHistory (Ptr<Packet> p, const char *file, int line, uint32_t n, ...);
1.24 - virtual bool RunTests (void);
1.25 + virtual bool DoRun (void);
1.26 private:
1.27 Ptr<Packet> DoAddHeader (Ptr<Packet> p);
1.28 };
1.29
1.30 PacketMetadataTest::PacketMetadataTest ()
1.31 - : Test ("PacketMetadata")
1.32 + : TestCase ("Packet metadata")
1.33 {}
1.34
1.35 PacketMetadataTest::~PacketMetadataTest ()
1.36 @@ -339,20 +335,21 @@
1.37 }
1.38 return true;
1.39 error:
1.40 - Failure () << "PacketMetadata error. file="<< file
1.41 - << ", line=" << line << ", got:\"";
1.42 + std::ostringstream failure;
1.43 + failure << "PacketMetadata error. Got:\"";
1.44 for (std::list<int>::iterator i = got.begin ();
1.45 i != got.end (); i++)
1.46 {
1.47 - Failure () << *i << ", ";
1.48 + failure << *i << ", ";
1.49 }
1.50 - Failure () << "\", expected: \"";
1.51 + failure << "\", expected: \"";
1.52 for (std::list<int>::iterator j = expected.begin ();
1.53 j != expected.end (); j++)
1.54 {
1.55 - Failure () << *j << ", ";
1.56 + failure << *j << ", ";
1.57 }
1.58 - Failure () << "\"" << std::endl;
1.59 + failure << "\"" << std::endl;
1.60 + ReportTestFailure ("", "", "", failure.str(), file, line);
1.61 return false;
1.62 }
1.63
1.64 @@ -403,7 +400,7 @@
1.65 }
1.66
1.67 bool
1.68 -PacketMetadataTest::RunTests (void)
1.69 +PacketMetadataTest::DoRun (void)
1.70 {
1.71 bool result = true;
1.72
1.73 @@ -722,7 +719,7 @@
1.74 ADD_HEADER (p1, 20);
1.75 REM_HEADER (p1, 20);
1.76 REM_TRAILER (p1, 5);
1.77 - NS_TEST_ASSERT_EQUAL (p->GetSize (), 1015);
1.78 + NS_TEST_EXPECT_MSG_EQ (p->GetSize (), 1015, "Correct size");
1.79
1.80
1.81 p = Create<Packet> (1510);
1.82 @@ -733,7 +730,7 @@
1.83 p1 = p->CreateFragment (0, 1500);
1.84 p2 = p1->Copy ();
1.85 ADD_HEADER (p2, 24);
1.86 - NS_TEST_ASSERT_EQUAL (p->GetSize (), 1519);
1.87 + NS_TEST_EXPECT_MSG_EQ (p->GetSize (), 1519, "Correct size");
1.88
1.89 p = Create<Packet> (1000);
1.90 ADD_HEADER (p, 2);
1.91 @@ -776,12 +773,20 @@
1.92 p->RemoveAtStart (10);
1.93 CHECK_HISTORY (p, 1, 490);
1.94
1.95 + return !result;
1.96 +}
1.97 +//-----------------------------------------------------------------------------
1.98 +class PacketMetadataTestSuite : public TestSuite
1.99 +{
1.100 +public:
1.101 + PacketMetadataTestSuite ();
1.102 +};
1.103
1.104 - return result;
1.105 +PacketMetadataTestSuite::PacketMetadataTestSuite ()
1.106 + : TestSuite ("packet-metadata", UNIT)
1.107 +{
1.108 + AddTestCase (new PacketMetadataTest);
1.109 }
1.110
1.111 -static PacketMetadataTest g_packetHistoryTest;
1.112 -
1.113 +PacketMetadataTestSuite g_packetMetadataTest;
1.114 }//namespace ns3
1.115 -
1.116 -#endif /* RUN_SELF_TESTS */
2.1 --- a/src/common/packet.cc Thu Oct 01 12:05:20 2009 +0200
2.2 +++ b/src/common/packet.cc Thu Oct 01 12:06:03 2009 +0200
2.3 @@ -20,6 +20,9 @@
2.4 #include "packet.h"
2.5 #include "ns3/assert.h"
2.6 #include "ns3/log.h"
2.7 +#include "ns3/test.h"
2.8 +#include <string>
2.9 +#include <stdarg.h>
2.10
2.11 NS_LOG_COMPONENT_DEFINE ("Packet");
2.12
2.13 @@ -704,17 +707,9 @@
2.14 return os;
2.15 }
2.16
2.17 -
2.18 -} // namespace ns3
2.19 -
2.20 -#ifdef RUN_SELF_TESTS
2.21 -
2.22 -#include "ns3/test.h"
2.23 -#include <string>
2.24 -#include <stdarg.h>
2.25 -
2.26 -using namespace ns3;
2.27 -
2.28 +//-----------------------------------------------------------------------------
2.29 +// Unit tests
2.30 +//-----------------------------------------------------------------------------
2.31 namespace {
2.32
2.33 class ATestTagBase : public Tag
2.34 @@ -888,28 +883,24 @@
2.35 #define E(a,b,c) a,b,c
2.36
2.37 #define CHECK(p, n, ...) \
2.38 - NS_TEST_ASSERT (DoCheck (p, __FILE__, __LINE__, n, __VA_ARGS__))
2.39 + DoCheck (p, __FILE__, __LINE__, n, __VA_ARGS__)
2.40
2.41 -namespace ns3 {
2.42 -
2.43 -
2.44 -static class PacketTest: public Test
2.45 +class PacketTest: public TestCase
2.46 {
2.47 public:
2.48 PacketTest ();
2.49 - virtual bool RunTests (void);
2.50 + virtual bool DoRun (void);
2.51 private:
2.52 - bool DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...);
2.53 -} g_packetTest;
2.54 + void DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...);
2.55 +};
2.56
2.57
2.58 PacketTest::PacketTest ()
2.59 - : Test ("Packet") {}
2.60 + : TestCase ("Packet") {}
2.61
2.62 -bool
2.63 +void
2.64 PacketTest::DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...)
2.65 {
2.66 - bool result = true;
2.67 std::vector<struct Expected> expected;
2.68 va_list ap;
2.69 va_start (ap, n);
2.70 @@ -930,37 +921,34 @@
2.71 struct Expected e = expected[j];
2.72 std::ostringstream oss;
2.73 oss << "anon::ATestTag<" << e.n << ">";
2.74 - NS_TEST_ASSERT_EQUAL_FILELINE (item.GetTypeId ().GetName (), oss.str (), file, line);
2.75 - NS_TEST_ASSERT_EQUAL_FILELINE (item.GetStart (), e.start, file, line);
2.76 - NS_TEST_ASSERT_EQUAL_FILELINE (item.GetEnd (), e.end, file, line);
2.77 + NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetTypeId ().GetName (), oss.str (), "trivial", file, line);
2.78 + NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetStart (), e.start, "trivial", file, line);
2.79 + NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetEnd (), e.end, "trivial", file, line);
2.80 ATestTagBase *tag = dynamic_cast<ATestTagBase *> (item.GetTypeId ().GetConstructor () ());
2.81 - NS_TEST_ASSERT (tag != 0);
2.82 + NS_TEST_EXPECT_MSG_NE (tag, 0, "trivial");
2.83 item.GetTag (*tag);
2.84 - NS_TEST_ASSERT (!tag->m_error);
2.85 + NS_TEST_EXPECT_MSG_EQ (tag->m_error, false, "trivial");
2.86 delete tag;
2.87 j++;
2.88 }
2.89 - NS_TEST_ASSERT (!i.HasNext ());
2.90 - NS_TEST_ASSERT_EQUAL (j, expected.size ());
2.91 - return result;
2.92 + NS_TEST_EXPECT_MSG_EQ (i.HasNext (), false, "Nothing left");
2.93 + NS_TEST_EXPECT_MSG_EQ (j, expected.size (), "Size match");
2.94 }
2.95
2.96 bool
2.97 -PacketTest::RunTests (void)
2.98 +PacketTest::DoRun (void)
2.99 {
2.100 - bool result = true;
2.101 -
2.102 Ptr<Packet> pkt1 = Create<Packet> (reinterpret_cast<const uint8_t*> ("hello"), 5);
2.103 Ptr<Packet> pkt2 = Create<Packet> (reinterpret_cast<const uint8_t*> (" world"), 6);
2.104 Ptr<Packet> packet = Create<Packet> ();
2.105 packet->AddAtEnd (pkt1);
2.106 packet->AddAtEnd (pkt2);
2.107
2.108 - NS_TEST_ASSERT_EQUAL (packet->GetSize (), 11);
2.109 + NS_TEST_EXPECT_MSG_EQ (packet->GetSize (), 11, "trivial");
2.110
2.111 std::string msg = std::string (reinterpret_cast<const char *>(packet->PeekData ()),
2.112 packet->GetSize ());
2.113 - NS_TEST_ASSERT_EQUAL (msg, "hello world");
2.114 + NS_TEST_EXPECT_MSG_EQ (msg, "hello world", "trivial");
2.115
2.116
2.117 Ptr<const Packet> p = Create<Packet> (1000);
2.118 @@ -1082,31 +1070,31 @@
2.119 Packet p;
2.120 ATestTag<10> a;
2.121 p.AddPacketTag (a);
2.122 - NS_TEST_ASSERT (p.PeekPacketTag (a));
2.123 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), true, "trivial");
2.124 ATestTag<11> b;
2.125 p.AddPacketTag (b);
2.126 - NS_TEST_ASSERT (p.PeekPacketTag (b));
2.127 - NS_TEST_ASSERT (p.PeekPacketTag (a));
2.128 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), true, "trivial");
2.129 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), true, "trivial");
2.130 Packet copy = p;
2.131 - NS_TEST_ASSERT (copy.PeekPacketTag (b));
2.132 - NS_TEST_ASSERT (copy.PeekPacketTag (a));
2.133 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), true, "trivial");
2.134 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
2.135 ATestTag<12> c;
2.136 - NS_TEST_ASSERT (!copy.PeekPacketTag (c));
2.137 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), false, "trivial");
2.138 copy.AddPacketTag (c);
2.139 - NS_TEST_ASSERT (copy.PeekPacketTag (c));
2.140 - NS_TEST_ASSERT (copy.PeekPacketTag (b));
2.141 - NS_TEST_ASSERT (copy.PeekPacketTag (a));
2.142 - NS_TEST_ASSERT (!p.PeekPacketTag (c));
2.143 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), true, "trivial");
2.144 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), true, "trivial");
2.145 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
2.146 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (c), false, "trivial");
2.147 copy.RemovePacketTag (b);
2.148 - NS_TEST_ASSERT (!copy.PeekPacketTag (b));
2.149 - NS_TEST_ASSERT (p.PeekPacketTag (b));
2.150 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), false, "trivial");
2.151 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), true, "trivial");
2.152 p.RemovePacketTag (a);
2.153 - NS_TEST_ASSERT (!p.PeekPacketTag (a));
2.154 - NS_TEST_ASSERT (copy.PeekPacketTag (a));
2.155 - NS_TEST_ASSERT (!p.PeekPacketTag (c));
2.156 - NS_TEST_ASSERT (copy.PeekPacketTag (c));
2.157 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), false, "trivial");
2.158 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
2.159 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (c), false, "trivial");
2.160 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), true, "trivial");
2.161 p.RemoveAllPacketTags ();
2.162 - NS_TEST_ASSERT (!p.PeekPacketTag (b));
2.163 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), false, "trivial");
2.164 }
2.165
2.166 {
2.167 @@ -1122,9 +1110,22 @@
2.168 CHECK (tmp, 1, E (20, 1, 1001));
2.169 }
2.170
2.171 - return result;
2.172 + return GetErrorStatus ();
2.173 +}
2.174 +//-----------------------------------------------------------------------------
2.175 +class PacketTestSuite : public TestSuite
2.176 +{
2.177 +public:
2.178 + PacketTestSuite ();
2.179 +};
2.180 +
2.181 +PacketTestSuite::PacketTestSuite ()
2.182 + : TestSuite ("packet", UNIT)
2.183 +{
2.184 + AddTestCase (new PacketTest);
2.185 }
2.186
2.187 +PacketTestSuite g_packetTestSuite;
2.188 +
2.189 +
2.190 } // namespace ns3
2.191 -
2.192 -#endif /* RUN_SELF_TESTS */