src/network/test/sequence-number-test-suite.cc
changeset 7182 5ecfee5d17de
parent 6968 4b68e211540c
child 7256 b04ba6772f8c
equal deleted inserted replaced
7181:7ff8011cf487 7182:5ecfee5d17de
    35 
    35 
    36   SequenceNumberTestObj () 
    36   SequenceNumberTestObj () 
    37   {
    37   {
    38     m_testTracedSequenceNumber = SequenceNumber32 (0);
    38     m_testTracedSequenceNumber = SequenceNumber32 (0);
    39   }
    39   }
    40   
    40 
    41   static TypeId GetTypeId (void)
    41   static TypeId GetTypeId (void)
    42   {
    42   {
    43     static TypeId tid = TypeId("ns3::SequenceNumberTestObj")
    43     static TypeId tid = TypeId("ns3::SequenceNumberTestObj")
    44       .SetParent<Object> ()
    44       .SetParent<Object> ()
    45       .AddTraceSource ("TestTracedSequenceNumber",
    45       .AddTraceSource ("TestTracedSequenceNumber",
    46                        "A traceable sequence number",
    46                        "A traceable sequence number",
    47                        MakeTraceSourceAccessor (&SequenceNumberTestObj::m_testTracedSequenceNumber))
    47                        MakeTraceSourceAccessor (&SequenceNumberTestObj::m_testTracedSequenceNumber))
    48       .AddConstructor<SequenceNumberTestObj> ()
    48       .AddConstructor<SequenceNumberTestObj> ()
    49       ;
    49     ;
    50     return tid;
    50     return tid;
    51   }
    51   }
    52   
    52 
    53   TypeId GetInstanceTypeId (void) const
    53   TypeId GetInstanceTypeId (void) const
    54   {
    54   {
    55     return GetTypeId ();
    55     return GetTypeId ();
    56   }
    56   }
    57 
    57 
    58   void IncSequenceNumber ()
    58   void IncSequenceNumber ()
    59   {
    59   {
    60     m_testTracedSequenceNumber += 1;
    60     m_testTracedSequenceNumber += 1;
    61   }
    61   }
    62   
    62 
    63 
    63 
    64 };
    64 };
    65 
    65 
    66 class SequenceNumberTestCase : public TestCase
    66 class SequenceNumberTestCase : public TestCase
    67 {
    67 {
    83   m_oldval = 0;
    83   m_oldval = 0;
    84   m_newval = 0;
    84   m_newval = 0;
    85 }
    85 }
    86 
    86 
    87 SequenceNumberTestCase::~SequenceNumberTestCase ()
    87 SequenceNumberTestCase::~SequenceNumberTestCase ()
    88 {}
    88 {
       
    89 }
    89 
    90 
    90 void
    91 void
    91 SequenceNumberTestCase::SequenceNumberTracer (SequenceNumber32 oldval, SequenceNumber32 newval) 
    92 SequenceNumberTestCase::SequenceNumberTracer (SequenceNumber32 oldval, SequenceNumber32 newval)
    92 {
    93 {
    93   m_oldval = oldval;
    94   m_oldval = oldval;
    94   m_newval = newval;
    95   m_newval = newval;
    95 }
    96 }
    96 
    97 
    98 {
    99 {
    99 #define NS_TEST_ASSERT_EQUAL(a,b) NS_TEST_ASSERT_MSG_EQ(a,b, "foo")
   100 #define NS_TEST_ASSERT_EQUAL(a,b) NS_TEST_ASSERT_MSG_EQ(a,b, "foo")
   100 #define NS_TEST_ASSERT(a) NS_TEST_ASSERT_MSG_EQ(bool(a), true, "foo")
   101 #define NS_TEST_ASSERT(a) NS_TEST_ASSERT_MSG_EQ(bool(a), true, "foo")
   101 
   102 
   102   {
   103   {
   103       SequenceNumber32 num1 (3), num2 (5);
   104     SequenceNumber32 num1 (3), num2 (5);
   104       uint32_t value;
   105     uint32_t value;
   105 
   106 
   106       value = (num1 + num2).GetValue ();
   107     value = (num1 + num2).GetValue ();
   107       NS_TEST_ASSERT_EQUAL (value, 8);
   108     NS_TEST_ASSERT_EQUAL (value, 8);
   108 
   109 
   109       num1 += num2.GetValue ();
   110     num1 += num2.GetValue ();
   110       NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8));
   111     NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8));
   111       
       
   112       ++num1;
       
   113       NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (9));
       
   114 
   112 
   115       --num1;
   113     ++num1;
   116       NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8));
   114     NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (9));
   117 
   115 
   118       num1++;
   116     --num1;
   119       NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (9));
   117     NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8));
   120 
   118 
   121       num1--;
   119     num1++;
   122       NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8));
   120     NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (9));
   123       
   121 
       
   122     num1--;
       
   123     NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (8));
       
   124 
   124   }
   125   }
   125 
   126 
   126   {
   127   {
   127       SequenceNumber16 num1 (60900), num2 (5), num3 (10000);
   128     SequenceNumber16 num1 (60900), num2 (5), num3 (10000);
   128 
   129 
   129       NS_TEST_ASSERT (num1 == num1);
   130     NS_TEST_ASSERT (num1 == num1);
   130 
   131 
   131       NS_TEST_ASSERT (num2 != num1);
   132     NS_TEST_ASSERT (num2 != num1);
   132 
   133 
   133       NS_TEST_ASSERT (num3 > num2);
   134     NS_TEST_ASSERT (num3 > num2);
   134       NS_TEST_ASSERT (num3 >= num2);
   135     NS_TEST_ASSERT (num3 >= num2);
   135       NS_TEST_ASSERT (num1 < num3);
   136     NS_TEST_ASSERT (num1 < num3);
   136       NS_TEST_ASSERT (num1 <= num3);
   137     NS_TEST_ASSERT (num1 <= num3);
   137 
   138 
   138       NS_TEST_ASSERT (num1 < num2);
   139     NS_TEST_ASSERT (num1 < num2);
   139       NS_TEST_ASSERT (num1 <= num2);
   140     NS_TEST_ASSERT (num1 <= num2);
   140       NS_TEST_ASSERT (num2 > num1);
   141     NS_TEST_ASSERT (num2 > num1);
   141       NS_TEST_ASSERT (num2 >= num1);
   142     NS_TEST_ASSERT (num2 >= num1);
   142 
   143 
   143       NS_TEST_ASSERT (num1+num2 > num1);
   144     NS_TEST_ASSERT (num1+num2 > num1);
   144       NS_TEST_ASSERT (num1+num2 >= num1);
   145     NS_TEST_ASSERT (num1+num2 >= num1);
   145       NS_TEST_ASSERT (num1 < num1+num2);
   146     NS_TEST_ASSERT (num1 < num1+num2);
   146       NS_TEST_ASSERT (num1 <= num1+num2);
   147     NS_TEST_ASSERT (num1 <= num1+num2);
   147 
   148 
   148       NS_TEST_ASSERT (num1 < num1+num3);
   149     NS_TEST_ASSERT (num1 < num1+num3);
   149       NS_TEST_ASSERT (num1 <= num1+num3);
   150     NS_TEST_ASSERT (num1 <= num1+num3);
   150       NS_TEST_ASSERT (num1+num3 > num1);
   151     NS_TEST_ASSERT (num1+num3 > num1);
   151       NS_TEST_ASSERT (num1+num3 >= num1);
   152     NS_TEST_ASSERT (num1+num3 >= num1);
   152   }
   153   }
   153 
   154 
   154   {
   155   {
   155     NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (1000) + SequenceNumber16 (6000)) - SequenceNumber16 (1000), 6000);
   156     NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (1000) + SequenceNumber16 (6000)) - SequenceNumber16 (1000), 6000);
   156     NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (60000) + SequenceNumber16 (6000)) - SequenceNumber16 (60000), 6000);
   157     NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (60000) + SequenceNumber16 (6000)) - SequenceNumber16 (60000), 6000);
   157     NS_TEST_ASSERT_EQUAL (SequenceNumber16 (1000) - SequenceNumber16 (6000), -5000);
   158     NS_TEST_ASSERT_EQUAL (SequenceNumber16 (1000) - SequenceNumber16 (6000), -5000);
   158     NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (60000) + SequenceNumber16 (1000)) - SequenceNumber16 (65000), -4000);
   159     NS_TEST_ASSERT_EQUAL ((SequenceNumber16 (60000) + SequenceNumber16 (1000)) - SequenceNumber16 (65000), -4000);
   159   }
   160   }
   160   
   161 
   161   {
   162   {
   162     SequenceNumber32 num1 (3);
   163     SequenceNumber32 num1 (3);
   163     
   164 
   164     NS_TEST_ASSERT_EQUAL (num1 + 10, SequenceNumber32 (13));
   165     NS_TEST_ASSERT_EQUAL (num1 + 10, SequenceNumber32 (13));
   165     num1 += -1;
   166     num1 += -1;
   166     NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (2));
   167     NS_TEST_ASSERT_EQUAL (num1, SequenceNumber32 (2));
   167     
   168 
   168     NS_TEST_ASSERT_EQUAL (num1 - (num1 - 100), 100);
   169     NS_TEST_ASSERT_EQUAL (num1 - (num1 - 100), 100);
   169   }
   170   }
   170 
   171 
   171   {
   172   {
   172     Ptr<SequenceNumberTestObj> obj = CreateObject<SequenceNumberTestObj> ();
   173     Ptr<SequenceNumberTestObj> obj = CreateObject<SequenceNumberTestObj> ();
   174     obj->IncSequenceNumber ();
   175     obj->IncSequenceNumber ();
   175     NS_TEST_ASSERT_EQUAL (m_oldval, SequenceNumber32 (0));
   176     NS_TEST_ASSERT_EQUAL (m_oldval, SequenceNumber32 (0));
   176     NS_TEST_ASSERT_EQUAL (m_newval, SequenceNumber32 (1));
   177     NS_TEST_ASSERT_EQUAL (m_newval, SequenceNumber32 (1));
   177     obj->Dispose ();
   178     obj->Dispose ();
   178   }
   179   }
   179   
   180 
   180 }
   181 }
   181 
   182 
   182 static class SequenceNumberTestSuite : public TestSuite
   183 static class SequenceNumberTestSuite : public TestSuite
   183 {
   184 {
   184 public:
   185 public: