geopro/tests/data/test_dataset_chart_dto.cpp

43 lines
1.6 KiB
C++

#include <gtest/gtest.h>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include "dto/DatasetChartDto.hpp"
using namespace geopro::data::dto;
static QJsonObject obj(const char* json) {
return QJsonDocument::fromJson(json).object();
}
TEST(DatasetChartDto, ParsesInversionGrid) {
auto d = obj(R"({"x":[0,1],"y":[0,1,2],"v":[[1,2],[3,4],[5,6]],"vmin":1,"vmax":6})");
auto g = parseInversionGrid(d);
EXPECT_EQ(g.nx(), 2); EXPECT_EQ(g.ny(), 3);
EXPECT_DOUBLE_EQ(g.valueAt(1, 2), 6.0);
EXPECT_DOUBLE_EQ(g.vmax, 6.0);
}
TEST(DatasetChartDto, ParsesColorBar) {
// Use "json" delimiter to avoid raw-string termination by ")" inside rgba()
const char* colorBarJson = "{\"properties\":{\"colorBar\":[[\"10\",\"rgba(0,0,255,255)\"],[\"20\",\"rgba(255,0,0,255)\"]]}}";
auto d = obj(colorBarJson);
auto cs = parseColorBar(d);
auto stops = cs.stopValues();
ASSERT_EQ(stops.size(), 2u);
EXPECT_DOUBLE_EQ(stops[0], 10.0);
auto c = cs.colorAt(12.0); // [10,20) -> blue
EXPECT_GT(c.b, c.r);
}
TEST(DatasetChartDto, ParsesAnomalyPolyline) {
auto arr = QJsonDocument::fromJson(
R"([{"exceptionName":"A1","exceptionTypeName":"AnomalyZone","exceptionMarkType":2,
"legend":{"polylineColor":"#0D0101","polylineWidth":4,"polylineShape":"dash"},
"location":{"coordinate":[{"x":1,"y":2},{"x":3,"y":4}]}}])").array();
auto v = parseDatasetAnomalies(arr);
ASSERT_EQ(v.size(), 1u);
EXPECT_EQ(v[0].name, "A1");
EXPECT_EQ(static_cast<int>(v[0].markType), 2);
ASSERT_EQ(v[0].localPts.size(), 2u);
EXPECT_DOUBLE_EQ(v[0].localPts[1].x, 3.0);
EXPECT_TRUE(v[0].dashed);
}