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

Side by Side Diff: cc/math_util_unittest.cc

Issue 11644008: Migrate from MathUtil::inverse() to gfx::Transform::GetInverse() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch for landing Created 7 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « cc/math_util.cc ('k') | cc/occlusion_tracker.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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "cc/math_util.h" 5 #include "cc/math_util.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "cc/test/geometry_test_utils.h" 9 #include "cc/test/geometry_test_utils.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 initializeTestMatrix(&A); 318 initializeTestMatrix(&A);
319 319
320 // Copy constructor should produce exact same elements as matrix A. 320 // Copy constructor should produce exact same elements as matrix A.
321 gfx::Transform B(A); 321 gfx::Transform B(A);
322 EXPECT_ROW1_EQ(10, 14, 18, 22, B); 322 EXPECT_ROW1_EQ(10, 14, 18, 22, B);
323 EXPECT_ROW2_EQ(11, 15, 19, 23, B); 323 EXPECT_ROW2_EQ(11, 15, 19, 23, B);
324 EXPECT_ROW3_EQ(12, 16, 20, 24, B); 324 EXPECT_ROW3_EQ(12, 16, 20, 24, B);
325 EXPECT_ROW4_EQ(13, 17, 21, 25, B); 325 EXPECT_ROW4_EQ(13, 17, 21, 25, B);
326 } 326 }
327 327
328 TEST(MathUtilGfxTransformTest, verifyMatrixInversion)
329 {
330 // Invert a translation
331 gfx::Transform translation;
332 translation.Translate3d(2, 3, 4);
333 EXPECT_TRUE(translation.IsInvertible());
334
335 gfx::Transform inverseTranslation = MathUtil::inverse(translation);
336 EXPECT_ROW1_EQ(1, 0, 0, -2, inverseTranslation);
337 EXPECT_ROW2_EQ(0, 1, 0, -3, inverseTranslation);
338 EXPECT_ROW3_EQ(0, 0, 1, -4, inverseTranslation);
339 EXPECT_ROW4_EQ(0, 0, 0, 1, inverseTranslation);
340
341 // Note that inversion should not have changed the original matrix.
342 EXPECT_ROW1_EQ(1, 0, 0, 2, translation);
343 EXPECT_ROW2_EQ(0, 1, 0, 3, translation);
344 EXPECT_ROW3_EQ(0, 0, 1, 4, translation);
345 EXPECT_ROW4_EQ(0, 0, 0, 1, translation);
346
347 // Invert a non-uniform scale
348 gfx::Transform scale;
349 scale.Scale3d(4, 10, 100);
350 EXPECT_TRUE(scale.IsInvertible());
351
352 gfx::Transform inverseScale = MathUtil::inverse(scale);
353 EXPECT_ROW1_EQ(0.25, 0, 0, 0, inverseScale);
354 EXPECT_ROW2_EQ(0, .1f, 0, 0, inverseScale);
355 EXPECT_ROW3_EQ(0, 0, .01f, 0, inverseScale);
356 EXPECT_ROW4_EQ(0, 0, 0, 1, inverseScale);
357
358 // Try to invert a matrix that is not invertible.
359 // The inverse() function should simply return an identity matrix.
360 gfx::Transform notInvertible;
361 notInvertible.matrix().setDouble(0, 0, 0);
362 notInvertible.matrix().setDouble(1, 1, 0);
363 notInvertible.matrix().setDouble(2, 2, 0);
364 notInvertible.matrix().setDouble(3, 3, 0);
365 EXPECT_FALSE(notInvertible.IsInvertible());
366
367 gfx::Transform inverseOfNotInvertible;
368 initializeTestMatrix(&inverseOfNotInvertible); // initialize this to somethi ng non-identity, to make sure that assignment below actually took place.
369 inverseOfNotInvertible = MathUtil::inverse(notInvertible);
370 EXPECT_TRUE(inverseOfNotInvertible.IsIdentity());
371 }
372
373 TEST(MathUtilGfxTransformTest, verifyTo2DTransform) 328 TEST(MathUtilGfxTransformTest, verifyTo2DTransform)
374 { 329 {
375 gfx::Transform A; 330 gfx::Transform A;
376 initializeTestMatrix(&A); 331 initializeTestMatrix(&A);
377 332
378 gfx::Transform B = MathUtil::to2dTransform(A); 333 gfx::Transform B = MathUtil::to2dTransform(A);
379 334
380 EXPECT_ROW1_EQ(10, 14, 0, 22, B); 335 EXPECT_ROW1_EQ(10, 14, 0, 22, B);
381 EXPECT_ROW2_EQ(11, 15, 0, 23, B); 336 EXPECT_ROW2_EQ(11, 15, 0, 23, B);
382 EXPECT_ROW3_EQ(0, 0, 1, 0, B); 337 EXPECT_ROW3_EQ(0, 0, 1, 0, B);
(...skipping 898 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 A.matrix().setDouble(2, 3, 2); 1236 A.matrix().setDouble(2, 3, 2);
1282 EXPECT_TRUE(A.IsScaleOrTranslation()); 1237 EXPECT_TRUE(A.IsScaleOrTranslation());
1283 1238
1284 A.MakeIdentity(); 1239 A.MakeIdentity();
1285 A.matrix().setDouble(3, 3, 2); 1240 A.matrix().setDouble(3, 3, 2);
1286 EXPECT_FALSE(A.IsScaleOrTranslation()); 1241 EXPECT_FALSE(A.IsScaleOrTranslation());
1287 } 1242 }
1288 1243
1289 } // namespace 1244 } // namespace
1290 } // namespace cc 1245 } // namespace cc
OLDNEW
« no previous file with comments | « cc/math_util.cc ('k') | cc/occlusion_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698