OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #include <limits> | 11 #include <limits> |
12 | 12 |
13 #include "webrtc/base/safe_compare.h" | 13 #include "webrtc/base/safe_compare.h" |
14 #include "webrtc/test/gtest.h" | 14 #include "webrtc/test/gtest.h" |
15 | 15 |
16 namespace rtc { | 16 namespace rtc { |
17 | 17 |
18 namespace { | 18 namespace { |
19 | 19 |
20 constexpr std::uintmax_t umax = std::numeric_limits<std::uintmax_t>::max(); | 20 constexpr std::uintmax_t umax = std::numeric_limits<std::uintmax_t>::max(); |
21 constexpr std::intmax_t imin = std::numeric_limits<std::intmax_t>::min(); | 21 constexpr std::intmax_t imin = std::numeric_limits<std::intmax_t>::min(); |
22 constexpr std::intmax_t m1 = -1; | 22 constexpr std::intmax_t m1 = -1; |
23 | 23 |
24 // m1 and umax have the same representation because we use 2's complement | 24 // m1 and umax have the same representation because we use 2's complement |
25 // arithmetic, so naive casting will confuse them. | 25 // arithmetic, so naive casting will confuse them. |
26 static_assert(static_cast<std::uintmax_t>(m1) == umax, ""); | 26 static_assert(static_cast<std::uintmax_t>(m1) == umax, ""); |
27 static_assert(m1 == static_cast<std::intmax_t>(umax), ""); | 27 static_assert(m1 == static_cast<std::intmax_t>(umax), ""); |
28 | 28 |
29 std::pair<int, int> p1(1, 1); | 29 static const std::pair<int, int> p1(1, 1); |
30 std::pair<int, int> p2(1, 2); | 30 static const std::pair<int, int> p2(1, 2); |
31 | 31 |
32 } // namespace | 32 } // namespace |
33 | 33 |
34 // clang-format off | 34 // clang-format off |
35 | 35 |
36 // These functions aren't used in the tests, but it's useful to look at the | 36 // These functions aren't used in the tests, but it's useful to look at the |
37 // compiler output for them, and verify that (1) the same-signedness *Safe | 37 // compiler output for them, and verify that (1) the same-signedness *Safe |
38 // functions result in exactly the same code as their *Ref counterparts, and | 38 // functions result in exactly the same code as their *Ref counterparts, and |
39 // that (2) the mixed-signedness *Safe functions have just a few extra | 39 // that (2) the mixed-signedness *Safe functions have just a few extra |
40 // arithmetic and logic instructions (but no extra control flow instructions). | 40 // arithmetic and logic instructions (but no extra control flow instructions). |
(...skipping 29 matching lines...) Expand all Loading... |
70 bool TestLessThanConst1() { return safe_cmp::Lt( -1, 1); } | 70 bool TestLessThanConst1() { return safe_cmp::Lt( -1, 1); } |
71 bool TestLessThanConst2() { return safe_cmp::Lt( m1, umax); } | 71 bool TestLessThanConst2() { return safe_cmp::Lt( m1, umax); } |
72 bool TestLessThanConst3() { return safe_cmp::Lt(umax, imin); } | 72 bool TestLessThanConst3() { return safe_cmp::Lt(umax, imin); } |
73 bool TestLessThanConst4(unsigned a) { return safe_cmp::Lt( a, -1); } | 73 bool TestLessThanConst4(unsigned a) { return safe_cmp::Lt( a, -1); } |
74 bool TestLessThanConst5(unsigned a) { return safe_cmp::Lt(-1, a); } | 74 bool TestLessThanConst5(unsigned a) { return safe_cmp::Lt(-1, a); } |
75 bool TestLessThanConst6(unsigned a) { return safe_cmp::Lt( a, a); } | 75 bool TestLessThanConst6(unsigned a) { return safe_cmp::Lt( a, a); } |
76 | 76 |
77 // clang-format on | 77 // clang-format on |
78 | 78 |
79 TEST(SafeCmpTest, Eq) { | 79 TEST(SafeCmpTest, Eq) { |
80 EXPECT_FALSE(safe_cmp::Eq(-1, 2)); | 80 static_assert(!safe_cmp::Eq(-1, 2), ""); |
81 EXPECT_FALSE(safe_cmp::Eq(-1, 2u)); | 81 static_assert(!safe_cmp::Eq(-1, 2u), ""); |
82 EXPECT_FALSE(safe_cmp::Eq(2, -1)); | 82 static_assert(!safe_cmp::Eq(2, -1), ""); |
83 EXPECT_FALSE(safe_cmp::Eq(2u, -1)); | 83 static_assert(!safe_cmp::Eq(2u, -1), ""); |
84 | 84 |
85 EXPECT_FALSE(safe_cmp::Eq(1, 2)); | 85 static_assert(!safe_cmp::Eq(1, 2), ""); |
86 EXPECT_FALSE(safe_cmp::Eq(1, 2u)); | 86 static_assert(!safe_cmp::Eq(1, 2u), ""); |
87 EXPECT_FALSE(safe_cmp::Eq(1u, 2)); | 87 static_assert(!safe_cmp::Eq(1u, 2), ""); |
88 EXPECT_FALSE(safe_cmp::Eq(1u, 2u)); | 88 static_assert(!safe_cmp::Eq(1u, 2u), ""); |
89 EXPECT_FALSE(safe_cmp::Eq(2, 1)); | 89 static_assert(!safe_cmp::Eq(2, 1), ""); |
90 EXPECT_FALSE(safe_cmp::Eq(2, 1u)); | 90 static_assert(!safe_cmp::Eq(2, 1u), ""); |
91 EXPECT_FALSE(safe_cmp::Eq(2u, 1)); | 91 static_assert(!safe_cmp::Eq(2u, 1), ""); |
92 EXPECT_FALSE(safe_cmp::Eq(2u, 1u)); | 92 static_assert(!safe_cmp::Eq(2u, 1u), ""); |
93 | 93 |
94 EXPECT_TRUE(safe_cmp::Eq(2, 2)); | 94 static_assert(safe_cmp::Eq(2, 2), ""); |
95 EXPECT_TRUE(safe_cmp::Eq(2, 2u)); | 95 static_assert(safe_cmp::Eq(2, 2u), ""); |
96 EXPECT_TRUE(safe_cmp::Eq(2u, 2)); | 96 static_assert(safe_cmp::Eq(2u, 2), ""); |
97 EXPECT_TRUE(safe_cmp::Eq(2u, 2u)); | 97 static_assert(safe_cmp::Eq(2u, 2u), ""); |
98 | 98 |
99 EXPECT_TRUE(safe_cmp::Eq(imin, imin)); | 99 static_assert(safe_cmp::Eq(imin, imin), ""); |
100 EXPECT_FALSE(safe_cmp::Eq(imin, umax)); | 100 static_assert(!safe_cmp::Eq(imin, umax), ""); |
101 EXPECT_FALSE(safe_cmp::Eq(umax, imin)); | 101 static_assert(!safe_cmp::Eq(umax, imin), ""); |
102 EXPECT_TRUE(safe_cmp::Eq(umax, umax)); | 102 static_assert(safe_cmp::Eq(umax, umax), ""); |
103 | 103 |
104 EXPECT_TRUE(safe_cmp::Eq(m1, m1)); | 104 static_assert(safe_cmp::Eq(m1, m1), ""); |
105 EXPECT_FALSE(safe_cmp::Eq(m1, umax)); | 105 static_assert(!safe_cmp::Eq(m1, umax), ""); |
106 EXPECT_FALSE(safe_cmp::Eq(umax, m1)); | 106 static_assert(!safe_cmp::Eq(umax, m1), ""); |
107 EXPECT_TRUE(safe_cmp::Eq(umax, umax)); | 107 static_assert(safe_cmp::Eq(umax, umax), ""); |
108 | 108 |
109 EXPECT_FALSE(safe_cmp::Eq(1, 2)); | 109 static_assert(!safe_cmp::Eq(1, 2), ""); |
110 EXPECT_FALSE(safe_cmp::Eq(1, 2.0)); | 110 static_assert(!safe_cmp::Eq(1, 2.0), ""); |
111 EXPECT_FALSE(safe_cmp::Eq(1.0, 2)); | 111 static_assert(!safe_cmp::Eq(1.0, 2), ""); |
112 EXPECT_FALSE(safe_cmp::Eq(1.0, 2.0)); | 112 static_assert(!safe_cmp::Eq(1.0, 2.0), ""); |
113 EXPECT_FALSE(safe_cmp::Eq(2, 1)); | 113 static_assert(!safe_cmp::Eq(2, 1), ""); |
114 EXPECT_FALSE(safe_cmp::Eq(2, 1.0)); | 114 static_assert(!safe_cmp::Eq(2, 1.0), ""); |
115 EXPECT_FALSE(safe_cmp::Eq(2.0, 1)); | 115 static_assert(!safe_cmp::Eq(2.0, 1), ""); |
116 EXPECT_FALSE(safe_cmp::Eq(2.0, 1.0)); | 116 static_assert(!safe_cmp::Eq(2.0, 1.0), ""); |
117 | 117 |
118 EXPECT_TRUE(safe_cmp::Eq(2, 2)); | 118 static_assert(safe_cmp::Eq(2, 2), ""); |
119 EXPECT_TRUE(safe_cmp::Eq(2, 2.0)); | 119 static_assert(safe_cmp::Eq(2, 2.0), ""); |
120 EXPECT_TRUE(safe_cmp::Eq(2.0, 2)); | 120 static_assert(safe_cmp::Eq(2.0, 2), ""); |
121 EXPECT_TRUE(safe_cmp::Eq(2.0, 2.0)); | 121 static_assert(safe_cmp::Eq(2.0, 2.0), ""); |
122 | 122 |
123 EXPECT_TRUE(safe_cmp::Eq(p1, p1)); | 123 EXPECT_TRUE(safe_cmp::Eq(p1, p1)); |
124 EXPECT_FALSE(safe_cmp::Eq(p1, p2)); | 124 EXPECT_FALSE(safe_cmp::Eq(p1, p2)); |
125 EXPECT_FALSE(safe_cmp::Eq(p2, p1)); | 125 EXPECT_FALSE(safe_cmp::Eq(p2, p1)); |
126 EXPECT_TRUE(safe_cmp::Eq(p2, p2)); | 126 EXPECT_TRUE(safe_cmp::Eq(p2, p2)); |
127 } | 127 } |
128 | 128 |
129 TEST(SafeCmpTest, Ne) { | 129 TEST(SafeCmpTest, Ne) { |
130 EXPECT_TRUE(safe_cmp::Ne(-1, 2)); | 130 static_assert(safe_cmp::Ne(-1, 2), ""); |
131 EXPECT_TRUE(safe_cmp::Ne(-1, 2u)); | 131 static_assert(safe_cmp::Ne(-1, 2u), ""); |
132 EXPECT_TRUE(safe_cmp::Ne(2, -1)); | 132 static_assert(safe_cmp::Ne(2, -1), ""); |
133 EXPECT_TRUE(safe_cmp::Ne(2u, -1)); | 133 static_assert(safe_cmp::Ne(2u, -1), ""); |
134 | 134 |
135 EXPECT_TRUE(safe_cmp::Ne(1, 2)); | 135 static_assert(safe_cmp::Ne(1, 2), ""); |
136 EXPECT_TRUE(safe_cmp::Ne(1, 2u)); | 136 static_assert(safe_cmp::Ne(1, 2u), ""); |
137 EXPECT_TRUE(safe_cmp::Ne(1u, 2)); | 137 static_assert(safe_cmp::Ne(1u, 2), ""); |
138 EXPECT_TRUE(safe_cmp::Ne(1u, 2u)); | 138 static_assert(safe_cmp::Ne(1u, 2u), ""); |
139 EXPECT_TRUE(safe_cmp::Ne(2, 1)); | 139 static_assert(safe_cmp::Ne(2, 1), ""); |
140 EXPECT_TRUE(safe_cmp::Ne(2, 1u)); | 140 static_assert(safe_cmp::Ne(2, 1u), ""); |
141 EXPECT_TRUE(safe_cmp::Ne(2u, 1)); | 141 static_assert(safe_cmp::Ne(2u, 1), ""); |
142 EXPECT_TRUE(safe_cmp::Ne(2u, 1u)); | 142 static_assert(safe_cmp::Ne(2u, 1u), ""); |
143 | 143 |
144 EXPECT_FALSE(safe_cmp::Ne(2, 2)); | 144 static_assert(!safe_cmp::Ne(2, 2), ""); |
145 EXPECT_FALSE(safe_cmp::Ne(2, 2u)); | 145 static_assert(!safe_cmp::Ne(2, 2u), ""); |
146 EXPECT_FALSE(safe_cmp::Ne(2u, 2)); | 146 static_assert(!safe_cmp::Ne(2u, 2), ""); |
147 EXPECT_FALSE(safe_cmp::Ne(2u, 2u)); | 147 static_assert(!safe_cmp::Ne(2u, 2u), ""); |
148 | 148 |
149 EXPECT_FALSE(safe_cmp::Ne(imin, imin)); | 149 static_assert(!safe_cmp::Ne(imin, imin), ""); |
150 EXPECT_TRUE(safe_cmp::Ne(imin, umax)); | 150 static_assert(safe_cmp::Ne(imin, umax), ""); |
151 EXPECT_TRUE(safe_cmp::Ne(umax, imin)); | 151 static_assert(safe_cmp::Ne(umax, imin), ""); |
152 EXPECT_FALSE(safe_cmp::Ne(umax, umax)); | 152 static_assert(!safe_cmp::Ne(umax, umax), ""); |
153 | 153 |
154 EXPECT_FALSE(safe_cmp::Ne(m1, m1)); | 154 static_assert(!safe_cmp::Ne(m1, m1), ""); |
155 EXPECT_TRUE(safe_cmp::Ne(m1, umax)); | 155 static_assert(safe_cmp::Ne(m1, umax), ""); |
156 EXPECT_TRUE(safe_cmp::Ne(umax, m1)); | 156 static_assert(safe_cmp::Ne(umax, m1), ""); |
157 EXPECT_FALSE(safe_cmp::Ne(umax, umax)); | 157 static_assert(!safe_cmp::Ne(umax, umax), ""); |
158 | 158 |
159 EXPECT_TRUE(safe_cmp::Ne(1, 2)); | 159 static_assert(safe_cmp::Ne(1, 2), ""); |
160 EXPECT_TRUE(safe_cmp::Ne(1, 2.0)); | 160 static_assert(safe_cmp::Ne(1, 2.0), ""); |
161 EXPECT_TRUE(safe_cmp::Ne(1.0, 2)); | 161 static_assert(safe_cmp::Ne(1.0, 2), ""); |
162 EXPECT_TRUE(safe_cmp::Ne(1.0, 2.0)); | 162 static_assert(safe_cmp::Ne(1.0, 2.0), ""); |
163 EXPECT_TRUE(safe_cmp::Ne(2, 1)); | 163 static_assert(safe_cmp::Ne(2, 1), ""); |
164 EXPECT_TRUE(safe_cmp::Ne(2, 1.0)); | 164 static_assert(safe_cmp::Ne(2, 1.0), ""); |
165 EXPECT_TRUE(safe_cmp::Ne(2.0, 1)); | 165 static_assert(safe_cmp::Ne(2.0, 1), ""); |
166 EXPECT_TRUE(safe_cmp::Ne(2.0, 1.0)); | 166 static_assert(safe_cmp::Ne(2.0, 1.0), ""); |
167 | 167 |
168 EXPECT_FALSE(safe_cmp::Ne(2, 2)); | 168 static_assert(!safe_cmp::Ne(2, 2), ""); |
169 EXPECT_FALSE(safe_cmp::Ne(2, 2.0)); | 169 static_assert(!safe_cmp::Ne(2, 2.0), ""); |
170 EXPECT_FALSE(safe_cmp::Ne(2.0, 2)); | 170 static_assert(!safe_cmp::Ne(2.0, 2), ""); |
171 EXPECT_FALSE(safe_cmp::Ne(2.0, 2.0)); | 171 static_assert(!safe_cmp::Ne(2.0, 2.0), ""); |
172 | 172 |
173 EXPECT_FALSE(safe_cmp::Ne(p1, p1)); | 173 EXPECT_FALSE(safe_cmp::Ne(p1, p1)); |
174 EXPECT_TRUE(safe_cmp::Ne(p1, p2)); | 174 EXPECT_TRUE(safe_cmp::Ne(p1, p2)); |
175 EXPECT_TRUE(safe_cmp::Ne(p2, p1)); | 175 EXPECT_TRUE(safe_cmp::Ne(p2, p1)); |
176 EXPECT_FALSE(safe_cmp::Ne(p2, p2)); | 176 EXPECT_FALSE(safe_cmp::Ne(p2, p2)); |
177 } | 177 } |
178 | 178 |
179 TEST(SafeCmpTest, Lt) { | 179 TEST(SafeCmpTest, Lt) { |
180 EXPECT_TRUE(safe_cmp::Lt(-1, 2)); | 180 static_assert(safe_cmp::Lt(-1, 2), ""); |
181 EXPECT_TRUE(safe_cmp::Lt(-1, 2u)); | 181 static_assert(safe_cmp::Lt(-1, 2u), ""); |
182 EXPECT_FALSE(safe_cmp::Lt(2, -1)); | 182 static_assert(!safe_cmp::Lt(2, -1), ""); |
183 EXPECT_FALSE(safe_cmp::Lt(2u, -1)); | 183 static_assert(!safe_cmp::Lt(2u, -1), ""); |
184 | 184 |
185 EXPECT_TRUE(safe_cmp::Lt(1, 2)); | 185 static_assert(safe_cmp::Lt(1, 2), ""); |
186 EXPECT_TRUE(safe_cmp::Lt(1, 2u)); | 186 static_assert(safe_cmp::Lt(1, 2u), ""); |
187 EXPECT_TRUE(safe_cmp::Lt(1u, 2)); | 187 static_assert(safe_cmp::Lt(1u, 2), ""); |
188 EXPECT_TRUE(safe_cmp::Lt(1u, 2u)); | 188 static_assert(safe_cmp::Lt(1u, 2u), ""); |
189 EXPECT_FALSE(safe_cmp::Lt(2, 1)); | 189 static_assert(!safe_cmp::Lt(2, 1), ""); |
190 EXPECT_FALSE(safe_cmp::Lt(2, 1u)); | 190 static_assert(!safe_cmp::Lt(2, 1u), ""); |
191 EXPECT_FALSE(safe_cmp::Lt(2u, 1)); | 191 static_assert(!safe_cmp::Lt(2u, 1), ""); |
192 EXPECT_FALSE(safe_cmp::Lt(2u, 1u)); | 192 static_assert(!safe_cmp::Lt(2u, 1u), ""); |
193 | 193 |
194 EXPECT_FALSE(safe_cmp::Lt(2, 2)); | 194 static_assert(!safe_cmp::Lt(2, 2), ""); |
195 EXPECT_FALSE(safe_cmp::Lt(2, 2u)); | 195 static_assert(!safe_cmp::Lt(2, 2u), ""); |
196 EXPECT_FALSE(safe_cmp::Lt(2u, 2)); | 196 static_assert(!safe_cmp::Lt(2u, 2), ""); |
197 EXPECT_FALSE(safe_cmp::Lt(2u, 2u)); | 197 static_assert(!safe_cmp::Lt(2u, 2u), ""); |
198 | 198 |
199 EXPECT_FALSE(safe_cmp::Lt(imin, imin)); | 199 static_assert(!safe_cmp::Lt(imin, imin), ""); |
200 EXPECT_TRUE(safe_cmp::Lt(imin, umax)); | 200 static_assert(safe_cmp::Lt(imin, umax), ""); |
201 EXPECT_FALSE(safe_cmp::Lt(umax, imin)); | 201 static_assert(!safe_cmp::Lt(umax, imin), ""); |
202 EXPECT_FALSE(safe_cmp::Lt(umax, umax)); | 202 static_assert(!safe_cmp::Lt(umax, umax), ""); |
203 | 203 |
204 EXPECT_FALSE(safe_cmp::Lt(m1, m1)); | 204 static_assert(!safe_cmp::Lt(m1, m1), ""); |
205 EXPECT_TRUE(safe_cmp::Lt(m1, umax)); | 205 static_assert(safe_cmp::Lt(m1, umax), ""); |
206 EXPECT_FALSE(safe_cmp::Lt(umax, m1)); | 206 static_assert(!safe_cmp::Lt(umax, m1), ""); |
207 EXPECT_FALSE(safe_cmp::Lt(umax, umax)); | 207 static_assert(!safe_cmp::Lt(umax, umax), ""); |
208 | 208 |
209 EXPECT_TRUE(safe_cmp::Lt(1, 2)); | 209 static_assert(safe_cmp::Lt(1, 2), ""); |
210 EXPECT_TRUE(safe_cmp::Lt(1, 2.0)); | 210 static_assert(safe_cmp::Lt(1, 2.0), ""); |
211 EXPECT_TRUE(safe_cmp::Lt(1.0, 2)); | 211 static_assert(safe_cmp::Lt(1.0, 2), ""); |
212 EXPECT_TRUE(safe_cmp::Lt(1.0, 2.0)); | 212 static_assert(safe_cmp::Lt(1.0, 2.0), ""); |
213 EXPECT_FALSE(safe_cmp::Lt(2, 1)); | 213 static_assert(!safe_cmp::Lt(2, 1), ""); |
214 EXPECT_FALSE(safe_cmp::Lt(2, 1.0)); | 214 static_assert(!safe_cmp::Lt(2, 1.0), ""); |
215 EXPECT_FALSE(safe_cmp::Lt(2.0, 1)); | 215 static_assert(!safe_cmp::Lt(2.0, 1), ""); |
216 EXPECT_FALSE(safe_cmp::Lt(2.0, 1.0)); | 216 static_assert(!safe_cmp::Lt(2.0, 1.0), ""); |
217 | 217 |
218 EXPECT_FALSE(safe_cmp::Lt(2, 2)); | 218 static_assert(!safe_cmp::Lt(2, 2), ""); |
219 EXPECT_FALSE(safe_cmp::Lt(2, 2.0)); | 219 static_assert(!safe_cmp::Lt(2, 2.0), ""); |
220 EXPECT_FALSE(safe_cmp::Lt(2.0, 2)); | 220 static_assert(!safe_cmp::Lt(2.0, 2), ""); |
221 EXPECT_FALSE(safe_cmp::Lt(2.0, 2.0)); | 221 static_assert(!safe_cmp::Lt(2.0, 2.0), ""); |
222 | 222 |
223 EXPECT_FALSE(safe_cmp::Lt(p1, p1)); | 223 EXPECT_FALSE(safe_cmp::Lt(p1, p1)); |
224 EXPECT_TRUE(safe_cmp::Lt(p1, p2)); | 224 EXPECT_TRUE(safe_cmp::Lt(p1, p2)); |
225 EXPECT_FALSE(safe_cmp::Lt(p2, p1)); | 225 EXPECT_FALSE(safe_cmp::Lt(p2, p1)); |
226 EXPECT_FALSE(safe_cmp::Lt(p2, p2)); | 226 EXPECT_FALSE(safe_cmp::Lt(p2, p2)); |
227 } | 227 } |
228 | 228 |
229 TEST(SafeCmpTest, Le) { | 229 TEST(SafeCmpTest, Le) { |
230 EXPECT_TRUE(safe_cmp::Le(-1, 2)); | 230 static_assert(safe_cmp::Le(-1, 2), ""); |
231 EXPECT_TRUE(safe_cmp::Le(-1, 2u)); | 231 static_assert(safe_cmp::Le(-1, 2u), ""); |
232 EXPECT_FALSE(safe_cmp::Le(2, -1)); | 232 static_assert(!safe_cmp::Le(2, -1), ""); |
233 EXPECT_FALSE(safe_cmp::Le(2u, -1)); | 233 static_assert(!safe_cmp::Le(2u, -1), ""); |
234 | 234 |
235 EXPECT_TRUE(safe_cmp::Le(1, 2)); | 235 static_assert(safe_cmp::Le(1, 2), ""); |
236 EXPECT_TRUE(safe_cmp::Le(1, 2u)); | 236 static_assert(safe_cmp::Le(1, 2u), ""); |
237 EXPECT_TRUE(safe_cmp::Le(1u, 2)); | 237 static_assert(safe_cmp::Le(1u, 2), ""); |
238 EXPECT_TRUE(safe_cmp::Le(1u, 2u)); | 238 static_assert(safe_cmp::Le(1u, 2u), ""); |
239 EXPECT_FALSE(safe_cmp::Le(2, 1)); | 239 static_assert(!safe_cmp::Le(2, 1), ""); |
240 EXPECT_FALSE(safe_cmp::Le(2, 1u)); | 240 static_assert(!safe_cmp::Le(2, 1u), ""); |
241 EXPECT_FALSE(safe_cmp::Le(2u, 1)); | 241 static_assert(!safe_cmp::Le(2u, 1), ""); |
242 EXPECT_FALSE(safe_cmp::Le(2u, 1u)); | 242 static_assert(!safe_cmp::Le(2u, 1u), ""); |
243 | 243 |
244 EXPECT_TRUE(safe_cmp::Le(2, 2)); | 244 static_assert(safe_cmp::Le(2, 2), ""); |
245 EXPECT_TRUE(safe_cmp::Le(2, 2u)); | 245 static_assert(safe_cmp::Le(2, 2u), ""); |
246 EXPECT_TRUE(safe_cmp::Le(2u, 2)); | 246 static_assert(safe_cmp::Le(2u, 2), ""); |
247 EXPECT_TRUE(safe_cmp::Le(2u, 2u)); | 247 static_assert(safe_cmp::Le(2u, 2u), ""); |
248 | 248 |
249 EXPECT_TRUE(safe_cmp::Le(imin, imin)); | 249 static_assert(safe_cmp::Le(imin, imin), ""); |
250 EXPECT_TRUE(safe_cmp::Le(imin, umax)); | 250 static_assert(safe_cmp::Le(imin, umax), ""); |
251 EXPECT_FALSE(safe_cmp::Le(umax, imin)); | 251 static_assert(!safe_cmp::Le(umax, imin), ""); |
252 EXPECT_TRUE(safe_cmp::Le(umax, umax)); | 252 static_assert(safe_cmp::Le(umax, umax), ""); |
253 | 253 |
254 EXPECT_TRUE(safe_cmp::Le(m1, m1)); | 254 static_assert(safe_cmp::Le(m1, m1), ""); |
255 EXPECT_TRUE(safe_cmp::Le(m1, umax)); | 255 static_assert(safe_cmp::Le(m1, umax), ""); |
256 EXPECT_FALSE(safe_cmp::Le(umax, m1)); | 256 static_assert(!safe_cmp::Le(umax, m1), ""); |
257 EXPECT_TRUE(safe_cmp::Le(umax, umax)); | 257 static_assert(safe_cmp::Le(umax, umax), ""); |
258 | 258 |
259 EXPECT_TRUE(safe_cmp::Le(1, 2)); | 259 static_assert(safe_cmp::Le(1, 2), ""); |
260 EXPECT_TRUE(safe_cmp::Le(1, 2.0)); | 260 static_assert(safe_cmp::Le(1, 2.0), ""); |
261 EXPECT_TRUE(safe_cmp::Le(1.0, 2)); | 261 static_assert(safe_cmp::Le(1.0, 2), ""); |
262 EXPECT_TRUE(safe_cmp::Le(1.0, 2.0)); | 262 static_assert(safe_cmp::Le(1.0, 2.0), ""); |
263 EXPECT_FALSE(safe_cmp::Le(2, 1)); | 263 static_assert(!safe_cmp::Le(2, 1), ""); |
264 EXPECT_FALSE(safe_cmp::Le(2, 1.0)); | 264 static_assert(!safe_cmp::Le(2, 1.0), ""); |
265 EXPECT_FALSE(safe_cmp::Le(2.0, 1)); | 265 static_assert(!safe_cmp::Le(2.0, 1), ""); |
266 EXPECT_FALSE(safe_cmp::Le(2.0, 1.0)); | 266 static_assert(!safe_cmp::Le(2.0, 1.0), ""); |
267 | 267 |
268 EXPECT_TRUE(safe_cmp::Le(2, 2)); | 268 static_assert(safe_cmp::Le(2, 2), ""); |
269 EXPECT_TRUE(safe_cmp::Le(2, 2.0)); | 269 static_assert(safe_cmp::Le(2, 2.0), ""); |
270 EXPECT_TRUE(safe_cmp::Le(2.0, 2)); | 270 static_assert(safe_cmp::Le(2.0, 2), ""); |
271 EXPECT_TRUE(safe_cmp::Le(2.0, 2.0)); | 271 static_assert(safe_cmp::Le(2.0, 2.0), ""); |
272 | 272 |
273 EXPECT_TRUE(safe_cmp::Le(p1, p1)); | 273 EXPECT_TRUE(safe_cmp::Le(p1, p1)); |
274 EXPECT_TRUE(safe_cmp::Le(p1, p2)); | 274 EXPECT_TRUE(safe_cmp::Le(p1, p2)); |
275 EXPECT_FALSE(safe_cmp::Le(p2, p1)); | 275 EXPECT_FALSE(safe_cmp::Le(p2, p1)); |
276 EXPECT_TRUE(safe_cmp::Le(p2, p2)); | 276 EXPECT_TRUE(safe_cmp::Le(p2, p2)); |
277 } | 277 } |
278 | 278 |
279 TEST(SafeCmpTest, Gt) { | 279 TEST(SafeCmpTest, Gt) { |
280 EXPECT_FALSE(safe_cmp::Gt(-1, 2)); | 280 static_assert(!safe_cmp::Gt(-1, 2), ""); |
281 EXPECT_FALSE(safe_cmp::Gt(-1, 2u)); | 281 static_assert(!safe_cmp::Gt(-1, 2u), ""); |
282 EXPECT_TRUE(safe_cmp::Gt(2, -1)); | 282 static_assert(safe_cmp::Gt(2, -1), ""); |
283 EXPECT_TRUE(safe_cmp::Gt(2u, -1)); | 283 static_assert(safe_cmp::Gt(2u, -1), ""); |
284 | 284 |
285 EXPECT_FALSE(safe_cmp::Gt(1, 2)); | 285 static_assert(!safe_cmp::Gt(1, 2), ""); |
286 EXPECT_FALSE(safe_cmp::Gt(1, 2u)); | 286 static_assert(!safe_cmp::Gt(1, 2u), ""); |
287 EXPECT_FALSE(safe_cmp::Gt(1u, 2)); | 287 static_assert(!safe_cmp::Gt(1u, 2), ""); |
288 EXPECT_FALSE(safe_cmp::Gt(1u, 2u)); | 288 static_assert(!safe_cmp::Gt(1u, 2u), ""); |
289 EXPECT_TRUE(safe_cmp::Gt(2, 1)); | 289 static_assert(safe_cmp::Gt(2, 1), ""); |
290 EXPECT_TRUE(safe_cmp::Gt(2, 1u)); | 290 static_assert(safe_cmp::Gt(2, 1u), ""); |
291 EXPECT_TRUE(safe_cmp::Gt(2u, 1)); | 291 static_assert(safe_cmp::Gt(2u, 1), ""); |
292 EXPECT_TRUE(safe_cmp::Gt(2u, 1u)); | 292 static_assert(safe_cmp::Gt(2u, 1u), ""); |
293 | 293 |
294 EXPECT_FALSE(safe_cmp::Gt(2, 2)); | 294 static_assert(!safe_cmp::Gt(2, 2), ""); |
295 EXPECT_FALSE(safe_cmp::Gt(2, 2u)); | 295 static_assert(!safe_cmp::Gt(2, 2u), ""); |
296 EXPECT_FALSE(safe_cmp::Gt(2u, 2)); | 296 static_assert(!safe_cmp::Gt(2u, 2), ""); |
297 EXPECT_FALSE(safe_cmp::Gt(2u, 2u)); | 297 static_assert(!safe_cmp::Gt(2u, 2u), ""); |
298 | 298 |
299 EXPECT_FALSE(safe_cmp::Gt(imin, imin)); | 299 static_assert(!safe_cmp::Gt(imin, imin), ""); |
300 EXPECT_FALSE(safe_cmp::Gt(imin, umax)); | 300 static_assert(!safe_cmp::Gt(imin, umax), ""); |
301 EXPECT_TRUE(safe_cmp::Gt(umax, imin)); | 301 static_assert(safe_cmp::Gt(umax, imin), ""); |
302 EXPECT_FALSE(safe_cmp::Gt(umax, umax)); | 302 static_assert(!safe_cmp::Gt(umax, umax), ""); |
303 | 303 |
304 EXPECT_FALSE(safe_cmp::Gt(m1, m1)); | 304 static_assert(!safe_cmp::Gt(m1, m1), ""); |
305 EXPECT_FALSE(safe_cmp::Gt(m1, umax)); | 305 static_assert(!safe_cmp::Gt(m1, umax), ""); |
306 EXPECT_TRUE(safe_cmp::Gt(umax, m1)); | 306 static_assert(safe_cmp::Gt(umax, m1), ""); |
307 EXPECT_FALSE(safe_cmp::Gt(umax, umax)); | 307 static_assert(!safe_cmp::Gt(umax, umax), ""); |
308 | 308 |
309 EXPECT_FALSE(safe_cmp::Gt(1, 2)); | 309 static_assert(!safe_cmp::Gt(1, 2), ""); |
310 EXPECT_FALSE(safe_cmp::Gt(1, 2.0)); | 310 static_assert(!safe_cmp::Gt(1, 2.0), ""); |
311 EXPECT_FALSE(safe_cmp::Gt(1.0, 2)); | 311 static_assert(!safe_cmp::Gt(1.0, 2), ""); |
312 EXPECT_FALSE(safe_cmp::Gt(1.0, 2.0)); | 312 static_assert(!safe_cmp::Gt(1.0, 2.0), ""); |
313 EXPECT_TRUE(safe_cmp::Gt(2, 1)); | 313 static_assert(safe_cmp::Gt(2, 1), ""); |
314 EXPECT_TRUE(safe_cmp::Gt(2, 1.0)); | 314 static_assert(safe_cmp::Gt(2, 1.0), ""); |
315 EXPECT_TRUE(safe_cmp::Gt(2.0, 1)); | 315 static_assert(safe_cmp::Gt(2.0, 1), ""); |
316 EXPECT_TRUE(safe_cmp::Gt(2.0, 1.0)); | 316 static_assert(safe_cmp::Gt(2.0, 1.0), ""); |
317 | 317 |
318 EXPECT_FALSE(safe_cmp::Gt(2, 2)); | 318 static_assert(!safe_cmp::Gt(2, 2), ""); |
319 EXPECT_FALSE(safe_cmp::Gt(2, 2.0)); | 319 static_assert(!safe_cmp::Gt(2, 2.0), ""); |
320 EXPECT_FALSE(safe_cmp::Gt(2.0, 2)); | 320 static_assert(!safe_cmp::Gt(2.0, 2), ""); |
321 EXPECT_FALSE(safe_cmp::Gt(2.0, 2.0)); | 321 static_assert(!safe_cmp::Gt(2.0, 2.0), ""); |
322 | 322 |
323 EXPECT_FALSE(safe_cmp::Gt(p1, p1)); | 323 EXPECT_FALSE(safe_cmp::Gt(p1, p1)); |
324 EXPECT_FALSE(safe_cmp::Gt(p1, p2)); | 324 EXPECT_FALSE(safe_cmp::Gt(p1, p2)); |
325 EXPECT_TRUE(safe_cmp::Gt(p2, p1)); | 325 EXPECT_TRUE(safe_cmp::Gt(p2, p1)); |
326 EXPECT_FALSE(safe_cmp::Gt(p2, p2)); | 326 EXPECT_FALSE(safe_cmp::Gt(p2, p2)); |
327 } | 327 } |
328 | 328 |
329 TEST(SafeCmpTest, Ge) { | 329 TEST(SafeCmpTest, Ge) { |
330 EXPECT_FALSE(safe_cmp::Ge(-1, 2)); | 330 static_assert(!safe_cmp::Ge(-1, 2), ""); |
331 EXPECT_FALSE(safe_cmp::Ge(-1, 2u)); | 331 static_assert(!safe_cmp::Ge(-1, 2u), ""); |
332 EXPECT_TRUE(safe_cmp::Ge(2, -1)); | 332 static_assert(safe_cmp::Ge(2, -1), ""); |
333 EXPECT_TRUE(safe_cmp::Ge(2u, -1)); | 333 static_assert(safe_cmp::Ge(2u, -1), ""); |
334 | 334 |
335 EXPECT_FALSE(safe_cmp::Ge(1, 2)); | 335 static_assert(!safe_cmp::Ge(1, 2), ""); |
336 EXPECT_FALSE(safe_cmp::Ge(1, 2u)); | 336 static_assert(!safe_cmp::Ge(1, 2u), ""); |
337 EXPECT_FALSE(safe_cmp::Ge(1u, 2)); | 337 static_assert(!safe_cmp::Ge(1u, 2), ""); |
338 EXPECT_FALSE(safe_cmp::Ge(1u, 2u)); | 338 static_assert(!safe_cmp::Ge(1u, 2u), ""); |
339 EXPECT_TRUE(safe_cmp::Ge(2, 1)); | 339 static_assert(safe_cmp::Ge(2, 1), ""); |
340 EXPECT_TRUE(safe_cmp::Ge(2, 1u)); | 340 static_assert(safe_cmp::Ge(2, 1u), ""); |
341 EXPECT_TRUE(safe_cmp::Ge(2u, 1)); | 341 static_assert(safe_cmp::Ge(2u, 1), ""); |
342 EXPECT_TRUE(safe_cmp::Ge(2u, 1u)); | 342 static_assert(safe_cmp::Ge(2u, 1u), ""); |
343 | 343 |
344 EXPECT_TRUE(safe_cmp::Ge(2, 2)); | 344 static_assert(safe_cmp::Ge(2, 2), ""); |
345 EXPECT_TRUE(safe_cmp::Ge(2, 2u)); | 345 static_assert(safe_cmp::Ge(2, 2u), ""); |
346 EXPECT_TRUE(safe_cmp::Ge(2u, 2)); | 346 static_assert(safe_cmp::Ge(2u, 2), ""); |
347 EXPECT_TRUE(safe_cmp::Ge(2u, 2u)); | 347 static_assert(safe_cmp::Ge(2u, 2u), ""); |
348 | 348 |
349 EXPECT_TRUE(safe_cmp::Ge(imin, imin)); | 349 static_assert(safe_cmp::Ge(imin, imin), ""); |
350 EXPECT_FALSE(safe_cmp::Ge(imin, umax)); | 350 static_assert(!safe_cmp::Ge(imin, umax), ""); |
351 EXPECT_TRUE(safe_cmp::Ge(umax, imin)); | 351 static_assert(safe_cmp::Ge(umax, imin), ""); |
352 EXPECT_TRUE(safe_cmp::Ge(umax, umax)); | 352 static_assert(safe_cmp::Ge(umax, umax), ""); |
353 | 353 |
354 EXPECT_TRUE(safe_cmp::Ge(m1, m1)); | 354 static_assert(safe_cmp::Ge(m1, m1), ""); |
355 EXPECT_FALSE(safe_cmp::Ge(m1, umax)); | 355 static_assert(!safe_cmp::Ge(m1, umax), ""); |
356 EXPECT_TRUE(safe_cmp::Ge(umax, m1)); | 356 static_assert(safe_cmp::Ge(umax, m1), ""); |
357 EXPECT_TRUE(safe_cmp::Ge(umax, umax)); | 357 static_assert(safe_cmp::Ge(umax, umax), ""); |
358 | 358 |
359 EXPECT_FALSE(safe_cmp::Ge(1, 2)); | 359 static_assert(!safe_cmp::Ge(1, 2), ""); |
360 EXPECT_FALSE(safe_cmp::Ge(1, 2.0)); | 360 static_assert(!safe_cmp::Ge(1, 2.0), ""); |
361 EXPECT_FALSE(safe_cmp::Ge(1.0, 2)); | 361 static_assert(!safe_cmp::Ge(1.0, 2), ""); |
362 EXPECT_FALSE(safe_cmp::Ge(1.0, 2.0)); | 362 static_assert(!safe_cmp::Ge(1.0, 2.0), ""); |
363 EXPECT_TRUE(safe_cmp::Ge(2, 1)); | 363 static_assert(safe_cmp::Ge(2, 1), ""); |
364 EXPECT_TRUE(safe_cmp::Ge(2, 1.0)); | 364 static_assert(safe_cmp::Ge(2, 1.0), ""); |
365 EXPECT_TRUE(safe_cmp::Ge(2.0, 1)); | 365 static_assert(safe_cmp::Ge(2.0, 1), ""); |
366 EXPECT_TRUE(safe_cmp::Ge(2.0, 1.0)); | 366 static_assert(safe_cmp::Ge(2.0, 1.0), ""); |
367 | 367 |
368 EXPECT_TRUE(safe_cmp::Ge(2, 2)); | 368 static_assert(safe_cmp::Ge(2, 2), ""); |
369 EXPECT_TRUE(safe_cmp::Ge(2, 2.0)); | 369 static_assert(safe_cmp::Ge(2, 2.0), ""); |
370 EXPECT_TRUE(safe_cmp::Ge(2.0, 2)); | 370 static_assert(safe_cmp::Ge(2.0, 2), ""); |
371 EXPECT_TRUE(safe_cmp::Ge(2.0, 2.0)); | 371 static_assert(safe_cmp::Ge(2.0, 2.0), ""); |
372 | 372 |
373 EXPECT_TRUE(safe_cmp::Ge(p1, p1)); | 373 EXPECT_TRUE(safe_cmp::Ge(p1, p1)); |
374 EXPECT_FALSE(safe_cmp::Ge(p1, p2)); | 374 EXPECT_FALSE(safe_cmp::Ge(p1, p2)); |
375 EXPECT_TRUE(safe_cmp::Ge(p2, p1)); | 375 EXPECT_TRUE(safe_cmp::Ge(p2, p1)); |
376 EXPECT_TRUE(safe_cmp::Ge(p2, p2)); | 376 EXPECT_TRUE(safe_cmp::Ge(p2, p2)); |
377 } | 377 } |
378 | 378 |
379 TEST(SafeCmpTest, Enum) { | 379 TEST(SafeCmpTest, Enum) { |
380 enum E1 { e1 = 13 }; | 380 enum E1 { e1 = 13 }; |
381 enum { e2 = 13 }; | 381 enum { e2 = 13 }; |
382 enum E3 : unsigned { e3 = 13 }; | 382 enum E3 : unsigned { e3 = 13 }; |
383 enum : unsigned { e4 = 13 }; | 383 enum : unsigned { e4 = 13 }; |
384 EXPECT_TRUE(safe_cmp::Eq(13, e1)); | 384 static_assert(safe_cmp::Eq(13, e1), ""); |
385 EXPECT_TRUE(safe_cmp::Eq(13u, e1)); | 385 static_assert(safe_cmp::Eq(13u, e1), ""); |
386 EXPECT_TRUE(safe_cmp::Eq(13, e2)); | 386 static_assert(safe_cmp::Eq(13, e2), ""); |
387 EXPECT_TRUE(safe_cmp::Eq(13u, e2)); | 387 static_assert(safe_cmp::Eq(13u, e2), ""); |
388 EXPECT_TRUE(safe_cmp::Eq(13, e3)); | 388 static_assert(safe_cmp::Eq(13, e3), ""); |
389 EXPECT_TRUE(safe_cmp::Eq(13u, e3)); | 389 static_assert(safe_cmp::Eq(13u, e3), ""); |
390 EXPECT_TRUE(safe_cmp::Eq(13, e4)); | 390 static_assert(safe_cmp::Eq(13, e4), ""); |
391 EXPECT_TRUE(safe_cmp::Eq(13u, e4)); | 391 static_assert(safe_cmp::Eq(13u, e4), ""); |
392 } | 392 } |
393 | 393 |
394 } // namespace rtc | 394 } // namespace rtc |
OLD | NEW |