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

Side by Side Diff: ui/gfx/geometry/safe_integer_conversions_unittest.cc

Issue 2499783002: Move SaturatedArithmetic from Blink to base (Closed)
Patch Set: Revert flag addition Created 4 years, 1 month 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
« no previous file with comments | « ui/gfx/geometry/safe_integer_conversions.h ('k') | ui/gfx/geometry/size.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gfx/geometry/safe_integer_conversions.h" 5 #include "ui/gfx/geometry/safe_integer_conversions.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 EXPECT_EQ(0, ToRoundedInt(0.f)); 70 EXPECT_EQ(0, ToRoundedInt(0.f));
71 EXPECT_EQ(100, ToRoundedInt(100.1f)); 71 EXPECT_EQ(100, ToRoundedInt(100.1f));
72 EXPECT_EQ(101, ToRoundedInt(100.5f)); 72 EXPECT_EQ(101, ToRoundedInt(100.5f));
73 EXPECT_EQ(101, ToRoundedInt(100.9f)); 73 EXPECT_EQ(101, ToRoundedInt(100.9f));
74 74
75 EXPECT_EQ(int_min, ToRoundedInt(-infinity)); 75 EXPECT_EQ(int_min, ToRoundedInt(-infinity));
76 EXPECT_EQ(int_min, ToRoundedInt(min)); 76 EXPECT_EQ(int_min, ToRoundedInt(min));
77 EXPECT_EQ(int_min, ToRoundedInt(min - 100)); 77 EXPECT_EQ(int_min, ToRoundedInt(min - 100));
78 } 78 }
79 79
80 TEST(SafeIntegerConversions, IntegerOverflow) {
81 int int_max = std::numeric_limits<int>::max();
82 int int_min = std::numeric_limits<int>::min();
83
84 EXPECT_TRUE(AddWouldOverflow(int_max, 1));
85 EXPECT_TRUE(AddWouldOverflow(int_max, int_max));
86 EXPECT_TRUE(AddWouldOverflow(int_max - 1000, 1001));
87 EXPECT_FALSE(AddWouldOverflow(int_max, 0));
88 EXPECT_FALSE(AddWouldOverflow(1, 2));
89 EXPECT_FALSE(AddWouldOverflow(1, -1));
90 EXPECT_FALSE(AddWouldOverflow(int_min, int_max));
91 EXPECT_FALSE(AddWouldOverflow(int_max - 1000, 1000));
92
93 EXPECT_TRUE(AddWouldUnderflow(int_min, -1));
94 EXPECT_TRUE(AddWouldUnderflow(int_min, int_min));
95 EXPECT_TRUE(AddWouldUnderflow(int_min + 1000, -1001));
96 EXPECT_FALSE(AddWouldUnderflow(int_min, 0));
97 EXPECT_FALSE(AddWouldUnderflow(1, 2));
98 EXPECT_FALSE(AddWouldUnderflow(1, -1));
99 EXPECT_FALSE(AddWouldUnderflow(int_min, int_max));
100 EXPECT_FALSE(AddWouldUnderflow(int_min + 1000, -1000));
101
102 EXPECT_TRUE(SubtractWouldOverflow(int_max, -1));
103 EXPECT_TRUE(SubtractWouldOverflow(int_max, int_min));
104 EXPECT_TRUE(SubtractWouldOverflow(int_max - 1000, -1001));
105 EXPECT_TRUE(SubtractWouldOverflow(0, int_min));
106 EXPECT_FALSE(SubtractWouldOverflow(int_max, 0));
107 EXPECT_FALSE(SubtractWouldOverflow(1, 2));
108 EXPECT_FALSE(SubtractWouldOverflow(-1, 1));
109 EXPECT_FALSE(SubtractWouldOverflow(int_min, int_min));
110 EXPECT_FALSE(SubtractWouldOverflow(int_max - 1000, -1000));
111 EXPECT_FALSE(SubtractWouldOverflow(-1, int_min));
112
113 EXPECT_TRUE(SubtractWouldUnderflow(int_min, 1));
114 EXPECT_TRUE(SubtractWouldUnderflow(int_min, int_max));
115 EXPECT_TRUE(SubtractWouldUnderflow(int_min + 1000, 1001));
116 EXPECT_FALSE(SubtractWouldUnderflow(int_min, 0));
117 EXPECT_FALSE(SubtractWouldUnderflow(1, 2));
118 EXPECT_FALSE(SubtractWouldUnderflow(-1, -1));
119 EXPECT_FALSE(SubtractWouldUnderflow(int_max, int_max));
120 EXPECT_FALSE(SubtractWouldUnderflow(int_min + 1000, -1000));
121
122 EXPECT_EQ(SafeAdd(0, 0), 0);
123 EXPECT_EQ(SafeAdd(1, 2), 3);
124 EXPECT_EQ(SafeAdd(int_max, 0), int_max);
125 EXPECT_EQ(SafeAdd(int_max, 1), int_max);
126 EXPECT_EQ(SafeAdd(int_max, int_max), int_max);
127 EXPECT_EQ(SafeAdd(int_max, int_min), -1);
128 EXPECT_EQ(SafeAdd(int_min, 1), int_min + 1);
129 EXPECT_EQ(SafeAdd(int_min, -1), int_min);
130 EXPECT_EQ(SafeAdd(int_min, 0), int_min);
131 EXPECT_EQ(SafeAdd(int_min, int_min), int_min);
132
133 EXPECT_EQ(SafeSubtract(0, 0), 0);
134 EXPECT_EQ(SafeSubtract(3, 2), 1);
135 EXPECT_EQ(SafeSubtract(int_max, 0), int_max);
136 EXPECT_EQ(SafeSubtract(int_max, 1), int_max - 1);
137 EXPECT_EQ(SafeSubtract(int_max, -1), int_max);
138 EXPECT_EQ(SafeSubtract(int_max, int_min), int_max);
139 EXPECT_EQ(SafeSubtract(int_min, 0), int_min);
140 EXPECT_EQ(SafeSubtract(int_min, -1), int_min + 1);
141 EXPECT_EQ(SafeSubtract(int_min, 1), int_min);
142 EXPECT_EQ(SafeSubtract(int_min, int_min), 0);
143 EXPECT_EQ(SafeSubtract(int_max, int_max), 0);
144 EXPECT_EQ(SafeSubtract(0, int_min), int_max);
145 EXPECT_EQ(SafeSubtract(-1, int_min), int_max);
146 }
147
148 } // namespace gfx 80 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/geometry/safe_integer_conversions.h ('k') | ui/gfx/geometry/size.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698