Add unit tests for Rotation interpolator
This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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
|
||||
|
||||
23
test/util/rotation.test.cpp
Normal file
23
test/util/rotation.test.cpp
Normal 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);
|
||||
}
|
||||
Reference in New Issue
Block a user