point3_f_unittest.cc 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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
  3. // found in the LICENSE file.
  4. #include "ui/gfx/geometry/point3_f.h"
  5. #include <stddef.h>
  6. #include "testing/gtest/include/gtest/gtest.h"
  7. namespace gfx {
  8. TEST(Point3FTest, VectorArithmetic) {
  9. gfx::Point3F a(1.6f, 5.1f, 3.2f);
  10. gfx::Vector3dF v1(3.1f, -3.2f, 9.3f);
  11. gfx::Vector3dF v2(-8.1f, 1.2f, 3.3f);
  12. static const struct {
  13. gfx::Point3F expected;
  14. gfx::Point3F actual;
  15. } tests[] = {
  16. { gfx::Point3F(4.7f, 1.9f, 12.5f), a + v1 },
  17. { gfx::Point3F(-1.5f, 8.3f, -6.1f), a - v1 },
  18. { a, a - v1 + v1 },
  19. { a, a + v1 - v1 },
  20. { a, a + gfx::Vector3dF() },
  21. { gfx::Point3F(12.8f, 0.7f, 9.2f), a + v1 - v2 },
  22. { gfx::Point3F(-9.6f, 9.5f, -2.8f), a - v1 + v2 }
  23. };
  24. for (size_t i = 0; i < std::size(tests); ++i)
  25. EXPECT_EQ(tests[i].expected.ToString(),
  26. tests[i].actual.ToString());
  27. a += v1;
  28. EXPECT_EQ(Point3F(4.7f, 1.9f, 12.5f).ToString(), a.ToString());
  29. a -= v2;
  30. EXPECT_EQ(Point3F(12.8f, 0.7f, 9.2f).ToString(), a.ToString());
  31. }
  32. TEST(Point3FTest, VectorFromPoints) {
  33. gfx::Point3F a(1.6f, 5.2f, 3.2f);
  34. gfx::Vector3dF v1(3.1f, -3.2f, 9.3f);
  35. gfx::Point3F b(a + v1);
  36. EXPECT_EQ((b - a).ToString(), v1.ToString());
  37. }
  38. TEST(Point3FTest, Scale) {
  39. EXPECT_EQ(Point3F().ToString(), ScalePoint(Point3F(), 2.f).ToString());
  40. EXPECT_EQ(Point3F().ToString(),
  41. ScalePoint(Point3F(), 2.f, 2.f, 2.f).ToString());
  42. EXPECT_EQ(Point3F(2.f, -2.f, 4.f).ToString(),
  43. ScalePoint(Point3F(1.f, -1.f, 2.f), 2.f).ToString());
  44. EXPECT_EQ(Point3F(2.f, -3.f, 8.f).ToString(),
  45. ScalePoint(Point3F(1.f, -1.f, 2.f), 2.f, 3.f, 4.f).ToString());
  46. Point3F zero;
  47. zero.Scale(2.f);
  48. zero.Scale(6.f, 3.f, 1.5f);
  49. EXPECT_EQ(Point3F().ToString(), zero.ToString());
  50. Point3F point(1.f, -1.f, 2.f);
  51. point.Scale(2.f);
  52. point.Scale(6.f, 3.f, 1.5f);
  53. EXPECT_EQ(Point3F(12.f, -6.f, 6.f).ToString(), point.ToString());
  54. }
  55. TEST(Point3FTest, IsOrigin) {
  56. EXPECT_TRUE(Point3F().IsOrigin());
  57. EXPECT_FALSE(Point3F(0, 0, 0.1f).IsOrigin());
  58. EXPECT_FALSE(Point3F(0, 0.1f, 0).IsOrigin());
  59. EXPECT_FALSE(Point3F(0.1f, 0, 0).IsOrigin());
  60. EXPECT_FALSE(Point3F(0, 0, -0.1f).IsOrigin());
  61. EXPECT_FALSE(Point3F(0, -0.1f, 0).IsOrigin());
  62. EXPECT_FALSE(Point3F(-0.1f, 0, 0).IsOrigin());
  63. }
  64. TEST(Point3FTest, OffsetFromOrigin) {
  65. EXPECT_EQ(Vector3dF(1.25f, 2.5f, -3.75f),
  66. Point3F(1.25f, 2.5f, -3.75f).OffsetFromOrigin());
  67. }
  68. TEST(Point3FTest, ToString) {
  69. EXPECT_EQ("1.03125,2.5,-3", Point3F(1.03125, 2.5, -3).ToString());
  70. }
  71. } // namespace gfx