From 5c3c48e378aea0c127cc76995c1aa9bade64cbe4 Mon Sep 17 00:00:00 2001 From: Brandon DeRosier Date: Wed, 26 Oct 2022 03:19:50 -0700 Subject: [PATCH] Add missing stream ops --- impeller/geometry/geometry_unittests.cc | 90 +++++++++++++++++++++---- impeller/geometry/vector.h | 14 ++++ 2 files changed, 90 insertions(+), 14 deletions(-) diff --git a/impeller/geometry/geometry_unittests.cc b/impeller/geometry/geometry_unittests.cc index f88df791d6bff..42da1d65b324c 100644 --- a/impeller/geometry/geometry_unittests.cc +++ b/impeller/geometry/geometry_unittests.cc @@ -1616,32 +1616,94 @@ TEST(GeometryTest, VerticesConstructorAndGetters) { } TEST(GeometryTest, MatrixPrinting) { - std::stringstream stream; - - Matrix m; - - stream << m; - - ASSERT_EQ(stream.str(), R"(( + { + std::stringstream stream; + Matrix m; + stream << m; + ASSERT_EQ(stream.str(), R"(( 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, ))"); + } - stream.str(""); - stream.clear(); - - m = Matrix::MakeTranslation(Vector3(10, 20, 30)); - - stream << m; + { + std::stringstream stream; + Matrix m = Matrix::MakeTranslation(Vector3(10, 20, 30)); + stream << m; - ASSERT_EQ(stream.str(), R"(( + ASSERT_EQ(stream.str(), R"(( 1.000000, 0.000000, 0.000000, 10.000000, 0.000000, 1.000000, 0.000000, 20.000000, 0.000000, 0.000000, 1.000000, 30.000000, 0.000000, 0.000000, 0.000000, 1.000000, ))"); + } +} + +TEST(GeometryTest, PointPrinting) { + { + std::stringstream stream; + Point m; + stream << m; + ASSERT_EQ(stream.str(), "(0, 0)"); + } + + { + std::stringstream stream; + Point m(13, 37); + stream << m; + ASSERT_EQ(stream.str(), "(13, 37)"); + } +} + +TEST(GeometryTest, Vector3Printing) { + { + std::stringstream stream; + Vector3 m; + stream << m; + ASSERT_EQ(stream.str(), "(0, 0, 0)"); + } + + { + std::stringstream stream; + Vector3 m(1, 2, 3); + stream << m; + ASSERT_EQ(stream.str(), "(1, 2, 3)"); + } +} + +TEST(GeometryTest, Vector4Printing) { + { + std::stringstream stream; + Vector4 m; + stream << m; + ASSERT_EQ(stream.str(), "(0, 0, 0, 1)"); + } + + { + std::stringstream stream; + Vector4 m(1, 2, 3, 4); + stream << m; + ASSERT_EQ(stream.str(), "(1, 2, 3, 4)"); + } +} + +TEST(GeometryTest, ColorPrinting) { + { + std::stringstream stream; + Color m; + stream << m; + ASSERT_EQ(stream.str(), "(0, 0, 0, 0)"); + } + + { + std::stringstream stream; + Color m(1, 2, 3, 4); + stream << m; + ASSERT_EQ(stream.str(), "(1, 2, 3, 4)"); + } } TEST(GeometryTest, Gradient) { diff --git a/impeller/geometry/vector.h b/impeller/geometry/vector.h index 96821e3f1984c..e87c22f61e4a9 100644 --- a/impeller/geometry/vector.h +++ b/impeller/geometry/vector.h @@ -247,3 +247,17 @@ static_assert(sizeof(Vector3) == 3 * sizeof(Scalar)); static_assert(sizeof(Vector4) == 4 * sizeof(Scalar)); } // namespace impeller + +namespace std { + +inline std::ostream& operator<<(std::ostream& out, const impeller::Vector3& p) { + out << "(" << p.x << ", " << p.y << ", " << p.z << ")"; + return out; +} + +inline std::ostream& operator<<(std::ostream& out, const impeller::Vector4& p) { + out << "(" << p.x << ", " << p.y << ", " << p.z << ", " << p.w << ")"; + return out; +} + +} // namespace std