summaryrefslogtreecommitdiffstats
path: root/src/layers.cpp
diff options
context:
space:
mode:
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-07-28 09:57:24 +0200
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-08-08 17:24:00 +0200
commitf1dcabc5b8e2d9b31cbb031ce2f8d8054e41a48a (patch)
tree076e36046a57b3063c36336da8e4cd774cc962dc /src/layers.cpp
parent397ad714d8a0ddc3f0b9d5cbcbd68aec9cbe55d0 (diff)
app/layers: move embedded test run to layers
Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
Diffstat (limited to 'src/layers.cpp')
-rw-r--r--src/layers.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/layers.cpp b/src/layers.cpp
index d3ec7cf..f475556 100644
--- a/src/layers.cpp
+++ b/src/layers.cpp
@@ -10,6 +10,8 @@
namespace wm {
+using json = nlohmann::json;
+
surface_id_to_layer::surface_id_to_layer(nlohmann::json const &j) {
// DB(j);
if (j["type"] == "range") {
@@ -27,8 +29,9 @@ struct result<struct surface_id_to_layer_map> to_surface_id_to_layer_map(
DB(j);
try {
surface_id_to_layer_map stl{};
+ auto m = j["mappings"];
std::transform(
- std::cbegin(j), std::cend(j),
+ std::cbegin(m), std::cend(m),
std::inserter(stl.mapping, stl.mapping.end()),
[](nlohmann::json const &j) { return surface_id_to_layer(j); });
for (auto i : stl.mapping) {
@@ -41,6 +44,31 @@ struct result<struct surface_id_to_layer_map> to_surface_id_to_layer_map(
"Found invalid/unset IDs in mapping");
}
}
+
+ // Check lookup
+ auto jtests = j.value("tests", json());
+
+ if (! jtests.empty()) {
+ DB("Embedded tests...");
+ std::vector<std::pair<int, int>> tests;
+ tests.reserve(jtests.size());
+ std::transform(std::cbegin(jtests), std::cend(jtests),
+ std::back_inserter(tests), [](json const &j) {
+ return std::make_pair(get<int>(j["surface_id"]),
+ get<int>(j["expect_layer_id"]));
+ });
+
+ for (auto sid : tests) {
+ int lid = stl.get_layer_for_surface(sid.first).value_or(-1);
+ DB("this=" << sid.first << ", that=" << lid
+ << ", expect=" << sid.second);
+ if (lid != sid.second) {
+ return Err<surface_id_to_layer_map>(
+ "ID Map embedded test failed!");
+ }
+ }
+ }
+
return Ok(stl);
} catch (std::exception &e) {
return Err<struct surface_id_to_layer_map>(e.what());