You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
2.7 KiB
111 lines
2.7 KiB
#include <catch2/catch.hpp>
|
|
|
|
#include <io/serialize_json.hpp>
|
|
#include <iostream>
|
|
|
|
//-----------------
|
|
// Tests
|
|
//-----------------
|
|
|
|
TEST_CASE("Serialize to Json", "[io][json]")
|
|
{
|
|
|
|
SECTION("Serialize double vector")
|
|
{
|
|
Eigen::VectorXd vec(3);
|
|
vec << 1.0, 2.0, 3.0;
|
|
auto jvec = ipc::rigid::to_json(vec);
|
|
|
|
CHECK(jvec.dump() == "[1.0,2.0,3.0]");
|
|
}
|
|
|
|
SECTION("Serialize int vector")
|
|
{
|
|
Eigen::VectorXi vec(3);
|
|
vec << 1, 2, 3;
|
|
auto jvec = ipc::rigid::to_json(vec);
|
|
|
|
CHECK(jvec.dump() == "[1,2,3]");
|
|
}
|
|
|
|
SECTION("Serialize double Row Vector")
|
|
{
|
|
Eigen::MatrixXd vec(1, 3);
|
|
vec << 1.0, 2.0, 3.0;
|
|
auto jvec = ipc::rigid::to_json(vec);
|
|
|
|
CHECK(jvec.dump() == "[[1.0,2.0,3.0]]");
|
|
}
|
|
|
|
SECTION("Serialize double matrix")
|
|
{
|
|
Eigen::MatrixXd vec(2, 3);
|
|
vec << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0;
|
|
auto jvec = ipc::rigid::to_json(vec);
|
|
|
|
CHECK(jvec.dump() == "[[1.0,2.0,3.0],[4.0,5.0,6.0]]");
|
|
}
|
|
|
|
SECTION("Serialize int Row Vector")
|
|
{
|
|
Eigen::MatrixXi vec(1, 3);
|
|
vec << 1, 2, 3;
|
|
auto jvec = ipc::rigid::to_json(vec);
|
|
|
|
CHECK(jvec.dump() == "[[1,2,3]]");
|
|
}
|
|
}
|
|
|
|
TEST_CASE("Deserialize from Json", "[io][json]")
|
|
{
|
|
|
|
SECTION("Deserialize double vector")
|
|
{
|
|
Eigen::VectorXd actual(3), expected(3);
|
|
expected << 1.0, 2.0, 3.0;
|
|
nlohmann::json json = "[1.0, 2.0, 3.0]"_json;
|
|
ipc::rigid::from_json<double>(json, actual);
|
|
|
|
CHECK((actual - expected).squaredNorm() == 0.0);
|
|
}
|
|
|
|
SECTION("Deserialize int vector")
|
|
{
|
|
Eigen::VectorXi actual(3), expected(3);
|
|
expected << 1, 2, 3;
|
|
nlohmann::json json = "[1, 2, 3]"_json;
|
|
ipc::rigid::from_json(json, actual);
|
|
|
|
CHECK((actual - expected).squaredNorm() == 0.0);
|
|
}
|
|
|
|
SECTION("Deserialize double Row Vector")
|
|
{
|
|
Eigen::MatrixXd actual(1, 3), expected(1, 3);
|
|
expected << 1.0, 2.0, 3.0;
|
|
nlohmann::json json = "[[1.0,2.0,3.0]]"_json;
|
|
ipc::rigid::from_json(json, actual);
|
|
|
|
CHECK((actual - expected).squaredNorm() == 0.0);
|
|
}
|
|
|
|
SECTION("Deserialize double matrix")
|
|
{
|
|
Eigen::MatrixXd actual(2, 3), expected(2, 3);
|
|
expected << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0;
|
|
nlohmann::json json = "[[1.0,2.0,3.0],[4.0,5.0,6.0]]"_json;
|
|
ipc::rigid::from_json(json, actual);
|
|
|
|
CHECK((actual - expected).squaredNorm() == 0.0);
|
|
}
|
|
|
|
SECTION("Deserialize int Row Vector")
|
|
{
|
|
Eigen::MatrixXi actual(1, 3), expected(1, 3);
|
|
expected << 1, 2, 3;
|
|
nlohmann::json json = "[[1,2,3]]"_json;
|
|
ipc::rigid::from_json(json, actual);
|
|
|
|
CHECK((actual - expected).squaredNorm() == 0.0);
|
|
}
|
|
}
|
|
|