1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125 | // Copyright (C) 2012-2024 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include <config.h>
#include <util/triplet.h>
#include <exceptions/exceptions.h>
#include <gtest/gtest.h><--- Include file: not found. Please note: Cppcheck does not need standard library headers to get proper results.
#include <stdint.h><--- Include file: not found. Please note: Cppcheck does not need standard library headers to get proper results.
using namespace isc::util;
using namespace isc;
namespace {
// constructor validation
TEST(TripletTest, constructor) {
const uint32_t min = 10;
const uint32_t value = 20;
const uint32_t max = 30;
Triplet<uint32_t> x(min, value, max);
EXPECT_EQ(min, x.getMin());
EXPECT_EQ(value, x.get());
EXPECT_EQ(max, x.getMax());
EXPECT_FALSE(x.unspecified());
// requested values below min should return allowed min value
EXPECT_EQ(min, x.get(min - 5));
EXPECT_EQ(min, x.get(min));
// requesting a value from within the range (min < x < max) should
// return the requested value
EXPECT_EQ(17, x.get(17));
EXPECT_EQ(max, x.get(max));
EXPECT_EQ(max, x.get(max + 5));
// this will be boring. It is expected to return 42 no matter what
Triplet<uint32_t> y(42);
EXPECT_EQ(42, y.getMin()); // min, default and max are equal to 42
EXPECT_EQ(42, y.get()); // it returns ...
EXPECT_EQ(42, y.getMax()); // the exact value...
EXPECT_FALSE(x.unspecified());
// requested values below or above are ignore
EXPECT_EQ(42, y.get(5)); // all...
EXPECT_EQ(42, y.get(42)); // the...
EXPECT_EQ(42, y.get(80)); // time!
}
TEST(TripletTest, unspecified) {<--- syntax error
Triplet<uint32_t> x;
// When using the constructor without parameters, the triplet
// value is unspecified.
EXPECT_EQ(0, x.getMin());
EXPECT_EQ(0, x.get());
EXPECT_EQ(0, x.getMax());
EXPECT_TRUE(x.unspecified());
// For the triplet which has unspecified value we can call accessors
// without an exception.
uint32_t exp_unspec = 0;
EXPECT_EQ(exp_unspec, x);
x = 72;
// Check if the new value has been assigned.
EXPECT_EQ(72, x.getMin());
EXPECT_EQ(72, x.get());
EXPECT_EQ(72, x.getMax());
// Triplet is now specified.
EXPECT_FALSE(x.unspecified());
}
// Triplets must be easy to use.
// Simple to/from int conversions must be done on the fly.
TEST(TripletTest, operator) {
uint32_t x = 47;
Triplet<uint32_t> foo(1,2,3);
Triplet<uint32_t> bar(4,5,6);
foo = bar;
EXPECT_EQ(4, foo.getMin());
EXPECT_EQ(5, foo.get());
EXPECT_EQ(6, foo.getMax());
EXPECT_FALSE(foo.unspecified());
// assignment operator: uint32_t => triplet
Triplet<uint32_t> y(0);
y = x;
EXPECT_EQ(x, y.get());
// let's try the other way around: triplet => uint32_t
uint32_t z = 0;
z = y;
EXPECT_EQ(x, z);
}
// check if specified values are sane
TEST(TripletTest, sanityCheck) {
// min is larger than default
EXPECT_THROW(Triplet<uint32_t>(6,5,5), BadValue);
// max is smaller than default
EXPECT_THROW(Triplet<uint32_t>(5,5,4), BadValue);
}
} // end of anonymous namespace
|