Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(245)

Side by Side Diff: util/numeric/in_range_cast_test.cc

Issue 467103002: Add InRangeCast<> and its test (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Switch from [u]ll constants to correct [U]INT64_C() constants Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 #include "util/numeric/in_range_cast.h"
16
17 #include <stdint.h>
18
19 #include <limits>
20
21 #include "gtest/gtest.h"
22
23 namespace {
24
25 using namespace crashpad;
26
27 const int32_t kInt32Min = std::numeric_limits<int32_t>::min();
28 const int64_t kInt64Min = std::numeric_limits<int64_t>::min();
29
30 TEST(InRangeCast, Uint32) {
31 EXPECT_EQ(0u, InRangeCast<uint32_t>(0, 1));
32 EXPECT_EQ(1u, InRangeCast<uint32_t>(1, 1));
33 EXPECT_EQ(2u, InRangeCast<uint32_t>(2, 1));
34 EXPECT_EQ(0u, InRangeCast<uint32_t>(-1, 0));
35 EXPECT_EQ(1u, InRangeCast<uint32_t>(-1, 1));
36 EXPECT_EQ(2u, InRangeCast<uint32_t>(-1, 2));
37 EXPECT_EQ(0xffffffffu, InRangeCast<uint32_t>(0xffffffffu, 1));
38 EXPECT_EQ(0xffffffffu, InRangeCast<uint32_t>(UINT64_C(0xffffffff), 1));
39 EXPECT_EQ(1u, InRangeCast<uint32_t>(UINT64_C(0x100000000), 1));
40 EXPECT_EQ(1u, InRangeCast<uint32_t>(UINT64_C(0x100000001), 1));
41 EXPECT_EQ(1u, InRangeCast<uint32_t>(kInt32Min, 1));
42 EXPECT_EQ(0xffffffffu, InRangeCast<uint32_t>(-1, 0xffffffffu));
43 }
44
45 TEST(InRangeCast, Int32) {
46 EXPECT_EQ(0, InRangeCast<int32_t>(0, 1));
47 EXPECT_EQ(1, InRangeCast<int32_t>(1, 1));
48 EXPECT_EQ(2, InRangeCast<int32_t>(2, 1));
49 EXPECT_EQ(-1, InRangeCast<int32_t>(-1, 1));
50 EXPECT_EQ(0x7fffffff, InRangeCast<int32_t>(0x7fffffff, 1));
51 EXPECT_EQ(0x7fffffff, InRangeCast<int32_t>(0x7fffffffu, 1));
52 EXPECT_EQ(1, InRangeCast<int32_t>(0x80000000u, 1));
53 EXPECT_EQ(1, InRangeCast<int32_t>(0xffffffffu, 1));
54 EXPECT_EQ(1, InRangeCast<int32_t>(INT64_C(0x80000000), 1));
55 EXPECT_EQ(1, InRangeCast<int32_t>(INT64_C(0xffffffff), 1));
56 EXPECT_EQ(1, InRangeCast<int32_t>(INT64_C(0x100000000), 1));
57 EXPECT_EQ(kInt32Min, InRangeCast<int32_t>(kInt32Min, 1));
58 EXPECT_EQ(kInt32Min,
59 InRangeCast<int32_t>(static_cast<int64_t>(kInt32Min), 1));
60 EXPECT_EQ(1, InRangeCast<int32_t>(static_cast<int64_t>(kInt32Min) - 1, 1));
61 EXPECT_EQ(0, InRangeCast<int32_t>(0xffffffffu, 0));
62 EXPECT_EQ(-1, InRangeCast<int32_t>(0xffffffffu, -1));
63 EXPECT_EQ(kInt32Min, InRangeCast<int32_t>(0xffffffffu, kInt32Min));
64 EXPECT_EQ(0x7fffffff, InRangeCast<int32_t>(0xffffffffu, 0x7fffffff));
65 }
66
67 TEST(InRangeCast, Uint64) {
68 EXPECT_EQ(0u, InRangeCast<uint64_t>(0, 1));
69 EXPECT_EQ(1u, InRangeCast<uint64_t>(1, 1));
70 EXPECT_EQ(2u, InRangeCast<uint64_t>(2, 1));
71 EXPECT_EQ(0u, InRangeCast<uint64_t>(-1, 0));
72 EXPECT_EQ(1u, InRangeCast<uint64_t>(-1, 1));
73 EXPECT_EQ(2u, InRangeCast<uint64_t>(-1, 2));
74 EXPECT_EQ(0xffffffffu, InRangeCast<uint64_t>(0xffffffffu, 1));
75 EXPECT_EQ(0xffffffffu, InRangeCast<uint64_t>(UINT64_C(0xffffffff), 1));
76 EXPECT_EQ(UINT64_C(0x100000000),
77 InRangeCast<uint64_t>(UINT64_C(0x100000000), 1));
78 EXPECT_EQ(UINT64_C(0x100000001),
79 InRangeCast<uint64_t>(UINT64_C(0x100000001), 1));
80 EXPECT_EQ(1u, InRangeCast<uint64_t>(kInt32Min, 1));
81 EXPECT_EQ(1u, InRangeCast<uint64_t>(INT64_C(-1), 1));
82 EXPECT_EQ(1u, InRangeCast<uint64_t>(kInt32Min, 1));
83 EXPECT_EQ(1u, InRangeCast<uint64_t>(kInt64Min, 1));
84 EXPECT_EQ(UINT64_C(0xffffffffffffffff),
85 InRangeCast<uint64_t>(-1, UINT64_C(0xffffffffffffffff)));
86 }
87
88 TEST(InRangeCast, Int64) {
89 EXPECT_EQ(0, InRangeCast<int64_t>(0, 1));
90 EXPECT_EQ(1, InRangeCast<int64_t>(1, 1));
91 EXPECT_EQ(2, InRangeCast<int64_t>(2, 1));
92 EXPECT_EQ(-1, InRangeCast<int64_t>(-1, 1));
93 EXPECT_EQ(0x7fffffff, InRangeCast<int64_t>(0x7fffffff, 1));
94 EXPECT_EQ(0x7fffffff, InRangeCast<int64_t>(0x7fffffffu, 1));
95 EXPECT_EQ(INT64_C(0x80000000), InRangeCast<int64_t>(0x80000000u, 1));
96 EXPECT_EQ(INT64_C(0xffffffff), InRangeCast<int64_t>(0xffffffffu, 1));
97 EXPECT_EQ(INT64_C(0x80000000), InRangeCast<int64_t>(INT64_C(0x80000000), 1));
98 EXPECT_EQ(INT64_C(0xffffffff), InRangeCast<int64_t>(INT64_C(0xffffffff), 1));
99 EXPECT_EQ(INT64_C(0x100000000),
100 InRangeCast<int64_t>(INT64_C(0x100000000), 1));
101 EXPECT_EQ(INT64_C(0x7fffffffffffffff),
102 InRangeCast<int64_t>(INT64_C(0x7fffffffffffffff), 1));
103 EXPECT_EQ(1, InRangeCast<int64_t>(UINT64_C(0x8000000000000000), 1));
104 EXPECT_EQ(1, InRangeCast<int64_t>(UINT64_C(0xffffffffffffffff), 1));
105 EXPECT_EQ(kInt32Min, InRangeCast<int64_t>(kInt32Min, 1));
106 EXPECT_EQ(kInt32Min,
107 InRangeCast<int64_t>(static_cast<int64_t>(kInt32Min), 1));
108 EXPECT_EQ(0, InRangeCast<int64_t>(UINT64_C(0xffffffffffffffff), 0));
109 EXPECT_EQ(-1, InRangeCast<int64_t>(UINT64_C(0xffffffffffffffff), -1));
110 EXPECT_EQ(kInt64Min,
111 InRangeCast<int64_t>(UINT64_C(0xffffffffffffffff), kInt64Min));
112 EXPECT_EQ(INT64_C(0x7fffffffffffffff),
113 InRangeCast<int64_t>(UINT64_C(0xffffffffffffffff),
114 INT64_C(0x7fffffffffffffff)));
115 }
116
117 } // namespace
OLDNEW
« no previous file with comments | « util/numeric/in_range_cast.h ('k') | util/util.gyp » ('j') | util/util.gyp » ('J')

Powered by Google App Engine
This is Rietveld 408576698