Add unit tests for Rotation interpolator

This commit is contained in:
Gali Nelle
2020-04-07 15:06:55 +03:00
committed by galinelle
parent 8e581c88ea
commit cd91664935
3 changed files with 27 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
#pragma once
#include <mbgl/math/wrap.hpp>
namespace mbgl {
namespace style {
@@ -9,8 +9,8 @@ namespace style {
class Rotation {
public:
Rotation() = default;
Rotation(double angle_) : angle(angle_) {}
double period() const noexcept { return 360.0; }
Rotation(double angle_) : angle(mbgl::util::wrap<double>(angle_, 0, period())) {}
constexpr double period() const noexcept { return 360.0; }
double getAngle() const noexcept { return angle; }
friend bool operator==(const Rotation& lhs, const Rotation& rhs) { return lhs.angle == rhs.angle; }

View File

@@ -94,6 +94,7 @@ add_library(
${PROJECT_SOURCE_DIR}/test/util/pass.test.cpp
${PROJECT_SOURCE_DIR}/test/util/position.test.cpp
${PROJECT_SOURCE_DIR}/test/util/projection.test.cpp
${PROJECT_SOURCE_DIR}/test/util/rotation.test.cpp
${PROJECT_SOURCE_DIR}/test/util/run_loop.test.cpp
${PROJECT_SOURCE_DIR}/test/util/string.test.cpp
${PROJECT_SOURCE_DIR}/test/util/text_conversions.test.cpp

View File

@@ -0,0 +1,23 @@
#include <mbgl/test/util.hpp>
#include <mbgl/style/rotation.hpp>
#include <mbgl/style/types.hpp>
#include <mbgl/util/constants.hpp>
#include <mbgl/util/interpolate.hpp>
using namespace mbgl;
using namespace style;
Rotation createRotation(double angle) {
return Rotation(angle);
}
TEST(Rotation, Calculations) {
Rotation rot(42);
EXPECT_EQ(rot, Rotation(42 + 360));
Rotation rot2(-42);
EXPECT_EQ(rot2, Rotation(360 - 42));
mbgl::util::Interpolator<mbgl::style::Rotation> i;
EXPECT_NEAR(i(rot, rot2, 0.5).getAngle(), 0.0, 0.00001);
}