|
24 | 24 | #include "absl/status/status.h" |
25 | 25 | #include "absl/status/statusor.h" |
26 | 26 | #include "absl/types/span.h" |
27 | | -#include "ink/color/color.h" |
28 | | -#include "ink/color/type_matchers.h" |
29 | 27 | #include "ink/geometry/affine_transform.h" |
30 | 28 | #include "ink/geometry/angle.h" |
31 | 29 | #include "ink/geometry/envelope.h" |
@@ -165,183 +163,6 @@ TEST(VectorFromPointToSegmentProjectionTest, |
165 | 163 | Optional(VecNear(segment.Lerp(*segment.Project(point)) - point, 0.0001))); |
166 | 164 | } |
167 | 165 |
|
168 | | -TEST(LerpFloatTest, AmountBetweenZeroAndOne) { |
169 | | - EXPECT_FLOAT_EQ(Lerp(100.0, 200.0, 0.1), 110.0); |
170 | | -} |
171 | | - |
172 | | -TEST(LerpFloatTest, AmountGreaterThanOne) { |
173 | | - EXPECT_FLOAT_EQ(Lerp(100.0, 200.0, 1.1), 210.0); |
174 | | -} |
175 | | - |
176 | | -TEST(LerpFloatTest, AmountLessThanZero) { |
177 | | - EXPECT_FLOAT_EQ(Lerp(100.0, 200.0, -0.1), 90.0); |
178 | | -} |
179 | | - |
180 | | -TEST(InverseLerpFloatTest, InverseLerp) { |
181 | | - EXPECT_FLOAT_EQ(InverseLerp(100.0, 200.0, 140.0), 0.4); |
182 | | -} |
183 | | - |
184 | | -TEST(InverseLerpFloatTest, InverseLerpOnZeroWidthInterval) { |
185 | | - EXPECT_FLOAT_EQ(InverseLerp(100.0, 100.0, 140.0), 0.f); |
186 | | -} |
187 | | - |
188 | | -TEST(InverseLerpFloatTest, InverseLerpIsInverseOfLerp) { |
189 | | - EXPECT_FLOAT_EQ(InverseLerp(100.0, 200, Lerp(100, 200, 0.1)), 0.1); |
190 | | - EXPECT_FLOAT_EQ(InverseLerp(100.0, 200, Lerp(100, 200, 1.1)), 1.1); |
191 | | - EXPECT_FLOAT_EQ(InverseLerp(100.0, 200, Lerp(100, 200, -0.1)), -0.1); |
192 | | - |
193 | | - // For a zero-width interval Lerp cannot be be inversed because the original |
194 | | - // `t` doesn't impact the result of the Lerp function. |
195 | | - EXPECT_FLOAT_EQ(InverseLerp(100.0, 100, Lerp(100, 100, 0.1)), 0.0f); |
196 | | - EXPECT_FLOAT_EQ(InverseLerp(100.0, 100, Lerp(100, 100, 1.1)), 0.0f); |
197 | | - EXPECT_FLOAT_EQ(InverseLerp(100.0, 100, Lerp(100, 100, -0.1)), 0.0f); |
198 | | -} |
199 | | - |
200 | | -TEST(LinearMapTest, LinearMap) { |
201 | | - EXPECT_FLOAT_EQ(LinearMap(10, {0, 100}, {0, 200}), 20); |
202 | | - EXPECT_FLOAT_EQ(LinearMap(10, {0, 100}, {100, 150}), 105); |
203 | | - EXPECT_FLOAT_EQ(LinearMap(10, {0, 100}, {0, -100}), -10); |
204 | | -} |
205 | | - |
206 | | -TEST(LinearMapTest, LinearMapOnZeroWidthInputInterval) { |
207 | | - EXPECT_FLOAT_EQ(LinearMap(0, {0, 0}, {0, 100}), 0); |
208 | | - EXPECT_FLOAT_EQ(LinearMap(150, {150, 150}, {0, 100}), 0); |
209 | | -} |
210 | | - |
211 | | -TEST(LinearMapTest, LinearMapOnZeroWidthTargetInterval) { |
212 | | - EXPECT_FLOAT_EQ(LinearMap(0, {0, 100}, {100, 100}), 100); |
213 | | - EXPECT_FLOAT_EQ(LinearMap(50, {0, 100}, {100, 100}), 100); |
214 | | -} |
215 | | - |
216 | | -TEST(LinearMapTest, LinearMapWithValueOutsideRange) { |
217 | | - EXPECT_FLOAT_EQ(LinearMap(-10, {0, 100}, {0, 200}), -20); |
218 | | -} |
219 | | - |
220 | | -TEST(LinearMapTest, LinearMapLinearMapofLinearMapIsOriginalValue) { |
221 | | - EXPECT_FLOAT_EQ( |
222 | | - LinearMap(LinearMap(10, {0, 100}, {0, 200}), {0, 200}, {0, 100}), 10); |
223 | | -} |
224 | | - |
225 | | -TEST(LerpPointTest, AmountBetweenZeroAndOne) { |
226 | | - EXPECT_THAT(Lerp(Point({100.0, 100.0}), Point({200.0, 200.0}), 0.1), |
227 | | - PointEq(Point({110.0, 110.0}))); |
228 | | -} |
229 | | - |
230 | | -TEST(LerpPointTest, AmountGreaterThanOne) { |
231 | | - EXPECT_THAT(Lerp(Point({100.0, 100.0}), Point({200.0, 200.0}), 1.1), |
232 | | - PointEq(Point({210.0, 210.0}))); |
233 | | -} |
234 | | - |
235 | | -TEST(LerpPointTest, AmountLessThanZero) { |
236 | | - EXPECT_THAT(Lerp(Point({100.0, 100.0}), Point({200.0, 200.0}), -0.1), |
237 | | - PointEq(Point({90.0, 90.0}))); |
238 | | -} |
239 | | - |
240 | | -TEST(LerpColorRgbaFloatTest, AmountBetweenZeroAndOne) { |
241 | | - EXPECT_THAT(Lerp(Color::RgbaFloat({100.0, 100.0, 100.0, 100.0}), |
242 | | - Color::RgbaFloat({200.0, 200.0, 200.0, 200.0}), 0.1), |
243 | | - ChannelStructEqFloats({110.0, 110.0, 110.0, 110.0})); |
244 | | -} |
245 | | - |
246 | | -TEST(LerpColorRgbaFloatTest, AmountGreaterThanOne) { |
247 | | - EXPECT_THAT(Lerp(Color::RgbaFloat({100.0, 100.0, 100.0, 100.0}), |
248 | | - Color::RgbaFloat({200.0, 200.0, 200.0, 200.0}), 1.1), |
249 | | - ChannelStructEqFloats({210.0, 210.0, 210.0, 210.0})); |
250 | | -} |
251 | | - |
252 | | -TEST(LerpColorRgbaFloatTest, AmountLessThanZero) { |
253 | | - EXPECT_THAT(Lerp(Color::RgbaFloat({100.0, 100.0, 100.0, 100.0}), |
254 | | - Color::RgbaFloat({200.0, 200.0, 200.0, 200.0}), -0.1), |
255 | | - ChannelStructEqFloats({90.0, 90.0, 90.0, 90.0})); |
256 | | -} |
257 | | - |
258 | | -TEST(LerpAngleTest, AmountBetweenZeroAndOne) { |
259 | | - EXPECT_THAT(Lerp(Angle::Radians(1), Angle::Radians(2), 0.3), |
260 | | - AngleEq(Angle::Radians(1.3))); |
261 | | -} |
262 | | - |
263 | | -TEST(LerpAngleTest, AmountLessThanZero) { |
264 | | - EXPECT_THAT(Lerp(Angle::Radians(0.5), Angle::Radians(1.5), -2), |
265 | | - AngleEq(Angle::Radians(-1.5))); |
266 | | -} |
267 | | - |
268 | | -TEST(LerpAngleTest, AmountGreaterThanOne) { |
269 | | - EXPECT_THAT(Lerp(Angle::Radians(-0.3), Angle::Radians(0.7), 5), |
270 | | - AngleEq(Angle::Radians(4.7))); |
271 | | -} |
272 | | - |
273 | | -TEST(LerpAngleTest, DifferenceGreaterThanTwoPi) { |
274 | | - EXPECT_THAT(Lerp(Angle::Radians(-6), Angle::Radians(4), 0.7), |
275 | | - AngleEq(Angle::Radians(1))); |
276 | | -} |
277 | | - |
278 | | -TEST(NormalizedAngleLerpTest, DifferenceSmallerThanPiWithBGreaterA) { |
279 | | - EXPECT_THAT(NormalizedAngleLerp(Angle::Radians(1), Angle::Radians(2), 0.3), |
280 | | - AngleEq(Angle::Radians(1.3))); |
281 | | -} |
282 | | - |
283 | | -TEST(NormalizedAngleLerpTest, DifferenceGreaterThanPiWithBGreaterA) { |
284 | | - EXPECT_THAT( |
285 | | - NormalizedAngleLerp(Angle::Radians(0.5), Angle::Radians(5.5), 0.3), |
286 | | - AngleNear(Angle::Radians(0.116), 0.01)); |
287 | | -} |
288 | | - |
289 | | -TEST(NormalizedAngleLerpTest, DifferenceSmallerThanPiWithAGreaterB) { |
290 | | - EXPECT_THAT( |
291 | | - NormalizedAngleLerp(Angle::Radians(5.5), Angle::Radians(0.5), 0.3), |
292 | | - AngleNear(Angle::Radians(5.884), 0.01)); |
293 | | -} |
294 | | - |
295 | | -TEST(NormalizedAngleLerpTest, DifferenceGreaterThanPiWithAGreaterB) { |
296 | | - EXPECT_THAT( |
297 | | - NormalizedAngleLerp(Angle::Radians(5.5), Angle::Radians(4.5), 0.3), |
298 | | - AngleEq(Angle::Radians(5.2))); |
299 | | -} |
300 | | - |
301 | | -TEST(LerpTest, NonZeroInputVectorsWithDifferentDirections) { |
302 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, 5}, -5), VecEq({24, -25})); |
303 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, 5}, -4), VecEq({20, -20})); |
304 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, 5}, -1), VecEq({8, -5})); |
305 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, 5}, 0), VecEq({4, 0})); |
306 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, 5}, 0.5), VecEq({2, 2.5})); |
307 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, 5}, 1), VecEq({0, 5})); |
308 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, 5}, 3), VecEq({-8, 15})); |
309 | | - |
310 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, -3}, -1), VecEq({8, 3})); |
311 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, -3}, 0), VecEq({4, 0})); |
312 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, -3}, 0.5), VecEq({2, -1.5})); |
313 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, -3}, 1), VecEq({0, -3})); |
314 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, -3}, 4), VecEq({-12, -12})); |
315 | | - EXPECT_THAT(Lerp(Vec{4, 0}, Vec{0, -3}, 5), VecEq({-16, -15})); |
316 | | -} |
317 | | - |
318 | | -TEST(LerpTest, NonZeroInputVectorsWithSameDirection) { |
319 | | - EXPECT_THAT(Lerp(Vec{1, 1}, Vec{3, 3}, -1), VecNear({-1, -1}, 0.001)); |
320 | | - EXPECT_THAT(Lerp(Vec{1, 1}, Vec{3, 3}, 0), VecEq({1, 1})); |
321 | | - EXPECT_THAT(Lerp(Vec{1, 1}, Vec{3, 3}, 0.5), VecEq({2, 2})); |
322 | | - EXPECT_THAT(Lerp(Vec{1, 1}, Vec{3, 3}, 1), VecEq({3, 3})); |
323 | | - EXPECT_THAT(Lerp(Vec{1, 1}, Vec{3, 3}, 2), VecEq({5, 5})); |
324 | | -} |
325 | | - |
326 | | -TEST(LerpTest, ZeroInputVectors) { |
327 | | - EXPECT_THAT(Lerp(Vec{0, 0}, Vec{0, 2}, -1), VecEq({0, -2})); |
328 | | - EXPECT_THAT(Lerp(Vec{0, 0}, Vec{0, 2}, 0), VecEq({0, 0})); |
329 | | - EXPECT_THAT(Lerp(Vec{0, 0}, Vec{0, 2}, 0.75), VecEq({0, 1.5})); |
330 | | - EXPECT_THAT(Lerp(Vec{0, 0}, Vec{0, 2}, 1), VecEq({0, 2})); |
331 | | - EXPECT_THAT(Lerp(Vec{0, 0}, Vec{0, 2}, 2), VecEq({0, 4})); |
332 | | - |
333 | | - EXPECT_THAT(Lerp(Vec{-3, 0}, Vec{0, 0}, -1), VecEq({-6, 0})); |
334 | | - EXPECT_THAT(Lerp(Vec{-3, 0}, Vec{0, 0}, 0), VecEq({-3, 0})); |
335 | | - EXPECT_THAT(Lerp(Vec{-3, 0}, Vec{0, 0}, 0.5), VecEq({-1.5, 0})); |
336 | | - EXPECT_THAT(Lerp(Vec{-3, 0}, Vec{0, 0}, 1), VecEq({0, 0})); |
337 | | - EXPECT_THAT(Lerp(Vec{-3, 0}, Vec{0, 0}, 2), VecEq({3, 0})); |
338 | | - EXPECT_THAT(Lerp(Vec{0, 0}, Vec{0, 0}, -1), VecEq({0, 0})); |
339 | | - EXPECT_THAT(Lerp(Vec{0, 0}, Vec{0, 0}, 0), VecEq({0, 0})); |
340 | | - EXPECT_THAT(Lerp(Vec{0, 0}, Vec{0, 0}, 0.2), VecEq({0, 0})); |
341 | | - EXPECT_THAT(Lerp(Vec{0, 0}, Vec{0, 0}, 1), VecEq({0, 0})); |
342 | | - EXPECT_THAT(Lerp(Vec{0, 0}, Vec{0, 0}, 2), VecEq({0, 0})); |
343 | | -} |
344 | | - |
345 | 166 | TEST(SegmentIntersectionRatioTest, NoIntersection) { |
346 | 167 | // These segments cover all three non-intersection cases: skew but not |
347 | 168 | // touching, parallel but offset, and parallel on the same line but |
|
0 commit comments