43 lines
1.6 KiB
C++
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);
|
|
}
|