#ifndef _CATCH_RIVE_TESTING_
#define _CATCH_RIVE_TESTING_

#include <catch.hpp>
#include <sstream>
#include "rive/math/mat2d.hpp"
#include "rive/text/cursor.hpp"

bool aboutEqual(const rive::Mat2D& a, const rive::Mat2D& b);

// StringMaker doesn't work for Vec2D.
#define CHECK_VEC2D(a, b)                                                      \
  CHECK(a.x == b.x);                                                           \
  CHECK(a.y == b.y);

#define CHECK_AABB(a, b)                                                       \
  CHECK_VEC2D(a.min(), b.min());                                               \
  CHECK_VEC2D(a.max(), b.max());

namespace Catch
{
template <> struct StringMaker<rive::Mat2D>
{
  static std::string convert(rive::Mat2D const& value)
  {
    std::ostringstream os;
    os << value[0] << ", " << value[1] << ", " << value[2] << ", " << value[3]
       << ", " << value[4] << ", " << value[5];
    return os.str();
  }
};
template <> struct StringMaker<rive::AABB>
{
  static std::string convert(rive::AABB const& value)
  {
    std::ostringstream os;
    os << "min: " << value.minX << ", " << value.minY << " max: " << value.maxX
       << ", " << value.maxY;
    return os.str();
  }
};
#ifdef WITH_RIVE_TEXT
template <> struct StringMaker<rive::CursorPosition>
{
  static std::string convert(rive::CursorPosition const& value)
  {
    std::ostringstream os;
    os << "Line: " << value.lineIndex()
       << ", CodePointIndex: " << value.codePointIndex();
    return os.str();
  }
};
#endif
} // namespace Catch
#endif