1.1 --- a/src/common/packet.cc Thu Oct 01 13:39:14 2009 +0400
1.2 +++ b/src/common/packet.cc Thu Oct 01 13:59:26 2009 +0400
1.3 @@ -20,6 +20,9 @@
1.4 #include "packet.h"
1.5 #include "ns3/assert.h"
1.6 #include "ns3/log.h"
1.7 +#include "ns3/test.h"
1.8 +#include <string>
1.9 +#include <stdarg.h>
1.10
1.11 NS_LOG_COMPONENT_DEFINE ("Packet");
1.12
1.13 @@ -704,17 +707,9 @@
1.14 return os;
1.15 }
1.16
1.17 -
1.18 -} // namespace ns3
1.19 -
1.20 -#ifdef RUN_SELF_TESTS
1.21 -
1.22 -#include "ns3/test.h"
1.23 -#include <string>
1.24 -#include <stdarg.h>
1.25 -
1.26 -using namespace ns3;
1.27 -
1.28 +//-----------------------------------------------------------------------------
1.29 +// Unit tests
1.30 +//-----------------------------------------------------------------------------
1.31 namespace {
1.32
1.33 class ATestTagBase : public Tag
1.34 @@ -888,28 +883,24 @@
1.35 #define E(a,b,c) a,b,c
1.36
1.37 #define CHECK(p, n, ...) \
1.38 - NS_TEST_ASSERT (DoCheck (p, __FILE__, __LINE__, n, __VA_ARGS__))
1.39 + DoCheck (p, __FILE__, __LINE__, n, __VA_ARGS__)
1.40
1.41 -namespace ns3 {
1.42 -
1.43 -
1.44 -static class PacketTest: public Test
1.45 +class PacketTest: public TestCase
1.46 {
1.47 public:
1.48 PacketTest ();
1.49 - virtual bool RunTests (void);
1.50 + virtual bool DoRun (void);
1.51 private:
1.52 - bool DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...);
1.53 -} g_packetTest;
1.54 + void DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...);
1.55 +};
1.56
1.57
1.58 PacketTest::PacketTest ()
1.59 - : Test ("Packet") {}
1.60 + : TestCase ("Packet") {}
1.61
1.62 -bool
1.63 +void
1.64 PacketTest::DoCheck (Ptr<const Packet> p, const char *file, int line, uint32_t n, ...)
1.65 {
1.66 - bool result = true;
1.67 std::vector<struct Expected> expected;
1.68 va_list ap;
1.69 va_start (ap, n);
1.70 @@ -930,37 +921,34 @@
1.71 struct Expected e = expected[j];
1.72 std::ostringstream oss;
1.73 oss << "anon::ATestTag<" << e.n << ">";
1.74 - NS_TEST_ASSERT_EQUAL_FILELINE (item.GetTypeId ().GetName (), oss.str (), file, line);
1.75 - NS_TEST_ASSERT_EQUAL_FILELINE (item.GetStart (), e.start, file, line);
1.76 - NS_TEST_ASSERT_EQUAL_FILELINE (item.GetEnd (), e.end, file, line);
1.77 + NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetTypeId ().GetName (), oss.str (), "trivial", file, line);
1.78 + NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetStart (), e.start, "trivial", file, line);
1.79 + NS_TEST_EXPECT_MSG_EQ_INTERNAL (item.GetEnd (), e.end, "trivial", file, line);
1.80 ATestTagBase *tag = dynamic_cast<ATestTagBase *> (item.GetTypeId ().GetConstructor () ());
1.81 - NS_TEST_ASSERT (tag != 0);
1.82 + NS_TEST_EXPECT_MSG_NE (tag, 0, "trivial");
1.83 item.GetTag (*tag);
1.84 - NS_TEST_ASSERT (!tag->m_error);
1.85 + NS_TEST_EXPECT_MSG_EQ (tag->m_error, false, "trivial");
1.86 delete tag;
1.87 j++;
1.88 }
1.89 - NS_TEST_ASSERT (!i.HasNext ());
1.90 - NS_TEST_ASSERT_EQUAL (j, expected.size ());
1.91 - return result;
1.92 + NS_TEST_EXPECT_MSG_EQ (i.HasNext (), false, "Nothing left");
1.93 + NS_TEST_EXPECT_MSG_EQ (j, expected.size (), "Size match");
1.94 }
1.95
1.96 bool
1.97 -PacketTest::RunTests (void)
1.98 +PacketTest::DoRun (void)
1.99 {
1.100 - bool result = true;
1.101 -
1.102 Ptr<Packet> pkt1 = Create<Packet> (reinterpret_cast<const uint8_t*> ("hello"), 5);
1.103 Ptr<Packet> pkt2 = Create<Packet> (reinterpret_cast<const uint8_t*> (" world"), 6);
1.104 Ptr<Packet> packet = Create<Packet> ();
1.105 packet->AddAtEnd (pkt1);
1.106 packet->AddAtEnd (pkt2);
1.107
1.108 - NS_TEST_ASSERT_EQUAL (packet->GetSize (), 11);
1.109 + NS_TEST_EXPECT_MSG_EQ (packet->GetSize (), 11, "trivial");
1.110
1.111 std::string msg = std::string (reinterpret_cast<const char *>(packet->PeekData ()),
1.112 packet->GetSize ());
1.113 - NS_TEST_ASSERT_EQUAL (msg, "hello world");
1.114 + NS_TEST_EXPECT_MSG_EQ (msg, "hello world", "trivial");
1.115
1.116
1.117 Ptr<const Packet> p = Create<Packet> (1000);
1.118 @@ -1082,31 +1070,31 @@
1.119 Packet p;
1.120 ATestTag<10> a;
1.121 p.AddPacketTag (a);
1.122 - NS_TEST_ASSERT (p.PeekPacketTag (a));
1.123 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), true, "trivial");
1.124 ATestTag<11> b;
1.125 p.AddPacketTag (b);
1.126 - NS_TEST_ASSERT (p.PeekPacketTag (b));
1.127 - NS_TEST_ASSERT (p.PeekPacketTag (a));
1.128 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), true, "trivial");
1.129 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), true, "trivial");
1.130 Packet copy = p;
1.131 - NS_TEST_ASSERT (copy.PeekPacketTag (b));
1.132 - NS_TEST_ASSERT (copy.PeekPacketTag (a));
1.133 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), true, "trivial");
1.134 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
1.135 ATestTag<12> c;
1.136 - NS_TEST_ASSERT (!copy.PeekPacketTag (c));
1.137 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), false, "trivial");
1.138 copy.AddPacketTag (c);
1.139 - NS_TEST_ASSERT (copy.PeekPacketTag (c));
1.140 - NS_TEST_ASSERT (copy.PeekPacketTag (b));
1.141 - NS_TEST_ASSERT (copy.PeekPacketTag (a));
1.142 - NS_TEST_ASSERT (!p.PeekPacketTag (c));
1.143 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), true, "trivial");
1.144 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), true, "trivial");
1.145 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
1.146 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (c), false, "trivial");
1.147 copy.RemovePacketTag (b);
1.148 - NS_TEST_ASSERT (!copy.PeekPacketTag (b));
1.149 - NS_TEST_ASSERT (p.PeekPacketTag (b));
1.150 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (b), false, "trivial");
1.151 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), true, "trivial");
1.152 p.RemovePacketTag (a);
1.153 - NS_TEST_ASSERT (!p.PeekPacketTag (a));
1.154 - NS_TEST_ASSERT (copy.PeekPacketTag (a));
1.155 - NS_TEST_ASSERT (!p.PeekPacketTag (c));
1.156 - NS_TEST_ASSERT (copy.PeekPacketTag (c));
1.157 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (a), false, "trivial");
1.158 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (a), true, "trivial");
1.159 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (c), false, "trivial");
1.160 + NS_TEST_EXPECT_MSG_EQ (copy.PeekPacketTag (c), true, "trivial");
1.161 p.RemoveAllPacketTags ();
1.162 - NS_TEST_ASSERT (!p.PeekPacketTag (b));
1.163 + NS_TEST_EXPECT_MSG_EQ (p.PeekPacketTag (b), false, "trivial");
1.164 }
1.165
1.166 {
1.167 @@ -1122,9 +1110,22 @@
1.168 CHECK (tmp, 1, E (20, 1, 1001));
1.169 }
1.170
1.171 - return result;
1.172 + return GetErrorStatus ();
1.173 +}
1.174 +//-----------------------------------------------------------------------------
1.175 +class PacketTestSuite : public TestSuite
1.176 +{
1.177 +public:
1.178 + PacketTestSuite ();
1.179 +};
1.180 +
1.181 +PacketTestSuite::PacketTestSuite ()
1.182 + : TestSuite ("packet", UNIT)
1.183 +{
1.184 + AddTestCase (new PacketTest);
1.185 }
1.186
1.187 +PacketTestSuite g_packetTestSuite;
1.188 +
1.189 +
1.190 } // namespace ns3
1.191 -
1.192 -#endif /* RUN_SELF_TESTS */