Home | History | Annotate | Download | only in test
      1 // Copyright 2014 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 
      5 #include "ui/gfx/test/gfx_util.h"
      6 
      7 #include <iomanip>
      8 #include <sstream>
      9 #include <string>
     10 
     11 namespace gfx {
     12 
     13 namespace {
     14 
     15 std::string ColorAsString(SkColor color) {
     16   std::ostringstream stream;
     17   stream << std::hex << std::uppercase << "#" << std::setfill('0')
     18          << std::setw(2) << SkColorGetA(color)
     19          << std::setw(2) << SkColorGetR(color)
     20          << std::setw(2) << SkColorGetG(color)
     21          << std::setw(2) << SkColorGetB(color);
     22   return stream.str();
     23 }
     24 
     25 bool FloatAlmostEqual(float a, float b) {
     26   // FloatLE is the gtest predicate for less than or almost equal to.
     27   return ::testing::FloatLE("a", "b", a, b) &&
     28          ::testing::FloatLE("b", "a", b, a);
     29 }
     30 
     31 }  // namespace
     32 
     33 ::testing::AssertionResult AssertBoxFloatEqual(const char* lhs_expr,
     34                                                const char* rhs_expr,
     35                                                const BoxF& lhs,
     36                                                const BoxF& rhs) {
     37   if (FloatAlmostEqual(lhs.x(), rhs.x()) &&
     38       FloatAlmostEqual(lhs.y(), rhs.y()) &&
     39       FloatAlmostEqual(lhs.z(), rhs.z()) &&
     40       FloatAlmostEqual(lhs.width(), rhs.width()) &&
     41       FloatAlmostEqual(lhs.height(), rhs.height()) &&
     42       FloatAlmostEqual(lhs.depth(), rhs.depth())) {
     43     return ::testing::AssertionSuccess();
     44   }
     45   return ::testing::AssertionFailure() << "Value of: " << rhs_expr
     46                                        << "\n  Actual: " << rhs.ToString()
     47                                        << "\nExpected: " << lhs_expr
     48                                        << "\nWhich is: " << lhs.ToString();
     49 }
     50 
     51 ::testing::AssertionResult AssertSkColorsEqual(const char* lhs_expr,
     52                                                const char* rhs_expr,
     53                                                SkColor lhs,
     54                                                SkColor rhs) {
     55   if (lhs == rhs) {
     56     return ::testing::AssertionSuccess();
     57   }
     58   return ::testing::AssertionFailure() << "Value of: " << rhs_expr
     59                                        << "\n  Actual: " << ColorAsString(rhs)
     60                                        << "\nExpected: " << lhs_expr
     61                                        << "\nWhich is: " << ColorAsString(lhs);
     62 }
     63 
     64 }  // namespace gfx
     65