Lines Matching refs:Dst

46   EXPECT_EQ(expected, CheckedNumeric<Dst>(actual).validity())              \
51 EXPECT_EQ(static_cast<Dst>(expected), \
52 CheckedNumeric<Dst>(actual).ValueUnsafe()) \
57 template <typename Dst>
62 numeric_limits<Dst>::is_integer&& numeric_limits<Dst>::is_signed,
64 typedef numeric_limits<Dst> DstLimits;
66 -CheckedNumeric<Dst>(DstLimits::min()));
68 CheckedNumeric<Dst>(DstLimits::min()).Abs());
69 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(-1).Abs());
72 CheckedNumeric<Dst>(DstLimits::max()) + -1);
74 CheckedNumeric<Dst>(DstLimits::min()) + -1);
77 CheckedNumeric<Dst>(-DstLimits::max()) + -DstLimits::max());
80 CheckedNumeric<Dst>(DstLimits::min()) - 1);
82 CheckedNumeric<Dst>(DstLimits::min()) - -1);
85 CheckedNumeric<Dst>(DstLimits::max()) - -DstLimits::max());
88 CheckedNumeric<Dst>(-DstLimits::max()) - DstLimits::max());
91 CheckedNumeric<Dst>(DstLimits::min()) * 2);
94 CheckedNumeric<Dst>(DstLimits::min()) / -1);
95 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(-1) / 2);
98 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>() % 1);
99 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(1) % 1);
100 TEST_EXPECTED_VALUE(-1, CheckedNumeric<Dst>(-1) % 2);
101 TEST_EXPECTED_VALIDITY(RANGE_INVALID, CheckedNumeric<Dst>(-1) % -2);
102 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(DstLimits::min()) % 2);
103 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(DstLimits::max()) % 2);
105 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(1) % CheckedNumeric<Dst>(1));
106 TEST_EXPECTED_VALUE(0, 1 % CheckedNumeric<Dst>(1));
107 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(1) % 1);
108 CheckedNumeric<Dst> checked_dst = 1;
113 template <typename Dst>
118 numeric_limits<Dst>::is_integer && !numeric_limits<Dst>::is_signed,
120 typedef numeric_limits<Dst> DstLimits;
121 TEST_EXPECTED_VALIDITY(RANGE_VALID, -CheckedNumeric<Dst>(DstLimits::min()));
123 CheckedNumeric<Dst>(DstLimits::min()).Abs());
125 CheckedNumeric<Dst>(DstLimits::min()) + -1);
127 CheckedNumeric<Dst>(DstLimits::min()) - 1);
128 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(DstLimits::min()) * 2);
129 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(1) / 2);
132 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>() % 1);
133 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(1) % 1);
134 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(1) % 2);
135 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(DstLimits::min()) % 2);
136 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(DstLimits::max()) % 2);
138 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(1) % CheckedNumeric<Dst>(1));
139 TEST_EXPECTED_VALUE(0, 1 % CheckedNumeric<Dst>(1));
140 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(1) % 1);
141 CheckedNumeric<Dst> checked_dst = 1;
146 template <typename Dst>
150 typename enable_if<numeric_limits<Dst>::is_iec559, int>::type = 0) {
151 typedef numeric_limits<Dst> DstLimits;
152 TEST_EXPECTED_VALIDITY(RANGE_VALID, -CheckedNumeric<Dst>(DstLimits::min()));
155 CheckedNumeric<Dst>(DstLimits::min()).Abs());
156 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(-1).Abs());
159 CheckedNumeric<Dst>(DstLimits::min()) + -1);
161 CheckedNumeric<Dst>(DstLimits::max()) + 1);
164 CheckedNumeric<Dst>(-DstLimits::max()) + -DstLimits::max());
168 CheckedNumeric<Dst>(DstLimits::max()) - -DstLimits::max());
171 CheckedNumeric<Dst>(-DstLimits::max()) - DstLimits::max());
174 CheckedNumeric<Dst>(DstLimits::min()) * 2);
176 TEST_EXPECTED_VALUE(-0.5, CheckedNumeric<Dst>(-1.0) / 2);
177 EXPECT_EQ(static_cast<Dst>(1.0), CheckedNumeric<Dst>(1.0).ValueFloating());
181 template <typename Dst>
183 typedef numeric_limits<Dst> DstLimits;
185 EXPECT_EQ(true, CheckedNumeric<Dst>().IsValid());
187 CheckedNumeric<Dst>(CheckedNumeric<Dst>(DstLimits::max()) *
189 EXPECT_EQ(static_cast<Dst>(0), CheckedNumeric<Dst>().ValueOrDie());
190 EXPECT_EQ(static_cast<Dst>(0), CheckedNumeric<Dst>().ValueOrDefault(1));
191 EXPECT_EQ(static_cast<Dst>(1),
192 CheckedNumeric<Dst>(CheckedNumeric<Dst>(DstLimits::max()) *
196 TEST_EXPECTED_VALUE(2, CheckedNumeric<Dst>(1) + CheckedNumeric<Dst>(1));
197 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(1) - CheckedNumeric<Dst>(1));
198 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(1) * CheckedNumeric<Dst>(1));
199 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(1) / CheckedNumeric<Dst>(1));
200 TEST_EXPECTED_VALUE(2, 1 + CheckedNumeric<Dst>(1));
201 TEST_EXPECTED_VALUE(0, 1 - CheckedNumeric<Dst>(1));
202 TEST_EXPECTED_VALUE(1, 1 * CheckedNumeric<Dst>(1));
203 TEST_EXPECTED_VALUE(1, 1 / CheckedNumeric<Dst>(1));
204 TEST_EXPECTED_VALUE(2, CheckedNumeric<Dst>(1) + 1);
205 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>(1) - 1);
206 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(1) * 1);
207 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(1) / 1);
208 CheckedNumeric<Dst> checked_dst = 1;
218 TEST_EXPECTED_VALUE(0, -CheckedNumeric<Dst>());
219 TEST_EXPECTED_VALUE(-1, -CheckedNumeric<Dst>(1));
220 TEST_EXPECTED_VALUE(1, -CheckedNumeric<Dst>(-1));
221 TEST_EXPECTED_VALUE(static_cast<Dst>(DstLimits::max() * -1),
222 -CheckedNumeric<Dst>(DstLimits::max()));
225 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>().Abs());
226 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(1).Abs());
228 CheckedNumeric<Dst>(DstLimits::max()).Abs());
231 TEST_EXPECTED_VALUE(1, (CheckedNumeric<Dst>() + 1));
232 TEST_EXPECTED_VALUE(2, (CheckedNumeric<Dst>(1) + 1));
233 TEST_EXPECTED_VALUE(0, (CheckedNumeric<Dst>(-1) + 1));
235 CheckedNumeric<Dst>(DstLimits::min()) + 1);
237 RANGE_OVERFLOW, CheckedNumeric<Dst>(DstLimits::max()) + DstLimits::max());
240 TEST_EXPECTED_VALUE(-1, (CheckedNumeric<Dst>() - 1));
241 TEST_EXPECTED_VALUE(0, (CheckedNumeric<Dst>(1) - 1));
242 TEST_EXPECTED_VALUE(-2, (CheckedNumeric<Dst>(-1) - 1));
244 CheckedNumeric<Dst>(DstLimits::max()) - 1);
247 TEST_EXPECTED_VALUE(0, (CheckedNumeric<Dst>() * 1));
248 TEST_EXPECTED_VALUE(1, (CheckedNumeric<Dst>(1) * 1));
249 TEST_EXPECTED_VALUE(-2, (CheckedNumeric<Dst>(-1) * 2));
251 RANGE_OVERFLOW, CheckedNumeric<Dst>(DstLimits::max()) * DstLimits::max());
254 TEST_EXPECTED_VALUE(0, CheckedNumeric<Dst>() / 1);
255 TEST_EXPECTED_VALUE(1, CheckedNumeric<Dst>(1) / 1);
257 CheckedNumeric<Dst>(DstLimits::min()) / 2);
259 CheckedNumeric<Dst>(DstLimits::max()) / 2);
261 TestSpecializedArithmetic<Dst>(dst, line);
265 #define TEST_ARITHMETIC(Dst) TestArithmetic<Dst>(#Dst, __LINE__)
296 template <typename Dst, typename Src, NumericConversionType conversion>
301 EXPECT_EQ(expected, base::internal::DstRangeRelationToSrcRange<Dst>(actual)) \
305 template <typename Dst, typename Src>
306 struct TestNumericConversion<Dst, Src, SIGN_PRESERVING_VALUE_PRESERVING> {
309 typedef numeric_limits<Dst> DstLimits;
316 sizeof(Dst) >= sizeof(Src)) ||
318 (DstLimits::is_signed && sizeof(Dst) > sizeof(Src)))),
321 const CheckedNumeric<Dst> checked_dst = SrcLimits::max();
324 if (MaxExponent<Dst>::value > MaxExponent<Src>::value) {
325 if (MaxExponent<Dst>::value >= MaxExponent<Src>::value * 2 - 1) {
352 template <typename Dst, typename Src>
353 struct TestNumericConversion<Dst, Src, SIGN_PRESERVING_NARROW> {
356 typedef numeric_limits<Dst> DstLimits;
359 COMPILE_ASSERT(sizeof(Dst) < sizeof(Src) ||
363 const CheckedNumeric<Dst> checked_dst;
388 template <typename Dst, typename Src>
389 struct TestNumericConversion<Dst, Src, SIGN_TO_UNSIGN_WIDEN_OR_EQUAL> {
392 typedef numeric_limits<Dst> DstLimits;
393 COMPILE_ASSERT(sizeof(Dst) >= sizeof(Src),
398 const CheckedNumeric<Dst> checked_dst;
410 template <typename Dst, typename Src>
411 struct TestNumericConversion<Dst, Src, SIGN_TO_UNSIGN_NARROW> {
414 typedef numeric_limits<Dst> DstLimits;
416 (sizeof(Dst) < sizeof(Src)),
421 const CheckedNumeric<Dst> checked_dst;
442 template <typename Dst, typename Src>
443 struct TestNumericConversion<Dst, Src, UNSIGN_TO_SIGN_NARROW_OR_EQUAL> {
446 typedef numeric_limits<Dst> DstLimits;
447 COMPILE_ASSERT(sizeof(Dst) <= sizeof(Src),
452 const CheckedNumeric<Dst> checked_dst;