A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
lollipop-counter-test.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2020 Universita' di Firenze, Italy
3
*
4
* SPDX-License-Identifier: GPL-2.0-only
5
*
6
* Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
7
*/
8
9
#include "ns3/lollipop-counter.h"
10
#include "ns3/test.h"
11
12
#include <limits>
13
#include <string>
14
15
using namespace
ns3
;
16
17
/**
18
* @ingroup network-test
19
* @ingroup tests
20
*
21
* @brief Lollipop Counter Test
22
*/
23
class
LollipopCounterTest
:
public
TestCase
24
{
25
public
:
26
void
DoRun
()
override
;
27
LollipopCounterTest
();
28
};
29
30
LollipopCounterTest::LollipopCounterTest
()
31
:
TestCase
(
"Lollipop Counter implementation"
)
32
{
33
}
34
35
void
36
LollipopCounterTest::DoRun
()
37
{
38
LollipopCounter<uint8_t>
counter8a
;
39
LollipopCounter<uint8_t>
counter8b
;
40
41
bool
greater
;
42
bool
lesser
;
43
bool
equal
;
44
bool
isComparable
;
45
46
// tests with uint8_t
47
counter8a
= 240;
48
counter8b
= 5;
49
50
greater
=
counter8a
>
counter8b
;
51
lesser
=
counter8a
<
counter8b
;
52
equal
=
counter8a
==
counter8b
;
53
isComparable
=
counter8a
.
IsComparable
(
counter8b
);
54
55
NS_TEST_EXPECT_MSG_EQ
(
greater
,
true
,
"240 is greater than 5"
);
56
NS_TEST_EXPECT_MSG_EQ
(
lesser
,
false
,
"240 is not lesser than 5"
);
57
NS_TEST_EXPECT_MSG_EQ
(
equal
,
false
,
"240 is not equal to 5"
);
58
NS_TEST_EXPECT_MSG_EQ
(
isComparable
,
true
,
"240 is comparable with 5"
);
59
60
counter8a
= 250;
61
counter8b
= 5;
62
63
greater
=
counter8a
>
counter8b
;
64
lesser
=
counter8a
<
counter8b
;
65
equal
=
counter8a
==
counter8b
;
66
isComparable
=
counter8a
.IsComparable(
counter8b
);
67
68
NS_TEST_EXPECT_MSG_EQ
(
greater
,
false
,
"250 is not greater than 5"
);
69
NS_TEST_EXPECT_MSG_EQ
(
lesser
,
true
,
"250 is lesser than 5"
);
70
NS_TEST_EXPECT_MSG_EQ
(
equal
,
false
,
"250 is not equal to 5"
);
71
NS_TEST_EXPECT_MSG_EQ
(
isComparable
,
true
,
"250 is comparable with 5"
);
72
73
counter8a
= 127;
74
counter8b
= 1;
75
76
greater
=
counter8a
>
counter8b
;
77
lesser
=
counter8a
<
counter8b
;
78
equal
=
counter8a
==
counter8b
;
79
isComparable
=
counter8a
.IsComparable(
counter8b
);
80
81
NS_TEST_EXPECT_MSG_EQ
(
greater
,
false
,
"127 is not greater than 1"
);
82
NS_TEST_EXPECT_MSG_EQ
(
lesser
,
true
,
"127 is lesser than 1"
);
83
NS_TEST_EXPECT_MSG_EQ
(
equal
,
false
,
"127 is not equal to 1"
);
84
NS_TEST_EXPECT_MSG_EQ
(
isComparable
,
true
,
"127 is comparable with 1"
);
85
86
counter8a
= 127;
87
counter8b
= 115;
88
89
greater
=
counter8a
>
counter8b
;
90
lesser
=
counter8a
<
counter8b
;
91
equal
=
counter8a
==
counter8b
;
92
isComparable
=
counter8a
.IsComparable(
counter8b
);
93
94
NS_TEST_EXPECT_MSG_EQ
(
greater
,
true
,
"127 is greater than 115"
);
95
NS_TEST_EXPECT_MSG_EQ
(
lesser
,
false
,
"127 is not lesser than 115"
);
96
NS_TEST_EXPECT_MSG_EQ
(
equal
,
false
,
"127 is not equal to 115"
);
97
NS_TEST_EXPECT_MSG_EQ
(
isComparable
,
true
,
"127 is comparable with 115"
);
98
99
counter8a
= 127;
100
counter8b
= 100;
101
102
greater
=
counter8a
>
counter8b
;
103
lesser
=
counter8a
<
counter8b
;
104
equal
=
counter8a
==
counter8b
;
105
isComparable
=
counter8a
.IsComparable(
counter8b
);
106
107
NS_TEST_EXPECT_MSG_EQ
(
greater
,
false
,
"127 is not greater than 100"
);
108
NS_TEST_EXPECT_MSG_EQ
(
lesser
,
false
,
"127 is not lesser than 100"
);
109
NS_TEST_EXPECT_MSG_EQ
(
equal
,
false
,
"127 is not equal to 100"
);
110
NS_TEST_EXPECT_MSG_EQ
(
isComparable
,
false
,
"127 is not comparable with 100"
);
111
112
counter8a
= 12;
113
counter8b
= 233;
114
115
greater
=
counter8a
>
counter8b
;
116
lesser
=
counter8a
<
counter8b
;
117
equal
=
counter8a
==
counter8b
;
118
isComparable
=
counter8a
.IsComparable(
counter8b
);
119
120
NS_TEST_EXPECT_MSG_EQ
(
greater
,
false
,
"12 is not greater than 233"
);
121
NS_TEST_EXPECT_MSG_EQ
(
lesser
,
true
,
"12 is lesser than 233"
);
122
NS_TEST_EXPECT_MSG_EQ
(
equal
,
false
,
"12 is not equal to 233"
);
123
NS_TEST_EXPECT_MSG_EQ
(
isComparable
,
true
,
"12 is comparable with 233"
);
124
125
counter8a
= 255;
126
counter8b
=
counter8a
++;
127
NS_TEST_EXPECT_MSG_EQ
((255 ==
counter8b
),
true
,
"Correct interpretation of postfix operator"
);
128
NS_TEST_EXPECT_MSG_EQ
((0 ==
counter8a
),
true
,
"Correct interpretation of postfix operator"
);
129
130
counter8a
= 255;
131
counter8b
= ++
counter8a
;
132
NS_TEST_EXPECT_MSG_EQ
((0 ==
counter8b
),
true
,
"Correct interpretation of prefix operator"
);
133
NS_TEST_EXPECT_MSG_EQ
((0 ==
counter8a
),
true
,
"Correct interpretation of prefix operator"
);
134
}
135
136
/**
137
* @ingroup network-test
138
* @ingroup tests
139
*
140
* @brief Lollipop Counter TestSuite
141
*/
142
class
LollipopCounterTestSuite
:
public
TestSuite
143
{
144
public
:
145
LollipopCounterTestSuite
();
146
147
private
:
148
};
149
150
LollipopCounterTestSuite::LollipopCounterTestSuite
()
151
:
TestSuite
(
"lollipop-counter"
,
Type
::UNIT)
152
{
153
AddTestCase
(
new
LollipopCounterTest
(), TestCase::Duration::QUICK);
154
}
155
156
static
LollipopCounterTestSuite
157
g_lollipopCounterTestSuite
;
//!< Static variable for test initialization
LollipopCounterTest
Lollipop Counter Test.
Definition
lollipop-counter-test.cc:24
LollipopCounterTest::DoRun
void DoRun() override
Implementation to actually run this TestCase.
Definition
lollipop-counter-test.cc:36
LollipopCounterTest::LollipopCounterTest
LollipopCounterTest()
Definition
lollipop-counter-test.cc:30
LollipopCounterTestSuite
Lollipop Counter TestSuite.
Definition
lollipop-counter-test.cc:143
LollipopCounterTestSuite::LollipopCounterTestSuite
LollipopCounterTestSuite()
Definition
lollipop-counter-test.cc:150
ns3::LollipopCounter
Template class implementing a Lollipop counter as defined in RFC 8505, RFC 6550, and [Perlman83].
Definition
lollipop-counter.h:57
ns3::LollipopCounter::IsComparable
bool IsComparable(const LollipopCounter &val) const
Checks if the counter is comparable with another counter (i.e., not desynchronized).
Definition
lollipop-counter.h:149
ns3::TestCase
encapsulates test code
Definition
test.h:1050
ns3::TestCase::AddTestCase
void AddTestCase(TestCase *testCase, Duration duration=Duration::QUICK)
Add an individual child TestCase to this test suite.
Definition
test.cc:292
ns3::TestSuite
A suite of tests to run.
Definition
test.h:1267
ns3::TestSuite::Type
Type
Type of test.
Definition
test.h:1274
ns3::Create
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition
ptr.h:436
NS_TEST_EXPECT_MSG_EQ
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
Definition
test.h:241
g_lollipopCounterTestSuite
static LollipopCounterTestSuite g_lollipopCounterTestSuite
Static variable for test initialization.
Definition
lollipop-counter-test.cc:157
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
src
network
test
lollipop-counter-test.cc
Generated on Mon Dec 15 2025 15:22:01 for ns-3 by
1.9.8