From 3fc0737dda213a7dc1e769523434d06902483426 Mon Sep 17 00:00:00 2001 From: Marcus Fritzsch Date: Thu, 27 Jul 2017 15:52:10 +0200 Subject: [PATCH] app: try to parse ids.json, run embedded tests (debug output only) Signed-off-by: Marcus Fritzsch --- src/app.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/src/app.cpp b/src/app.cpp index 9bd12ed..8a3abec 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -30,10 +30,8 @@ struct wm::area area_from_json(json const &j) { return wm::area{ j["name"].get(), { - get(j["width"]), - get(j["height"]), - get(j["x"]), - get(j["y"]), + get(j["width"]), get(j["height"]), + get(j["x"]), get(j["y"]), }, get(j["zorder"]), }; @@ -72,22 +70,58 @@ struct result load_layout(char const *filename) { return Ok(layouts); } +struct result + load_layer_ids(char const *filename) { + DB("loading IDs from " << filename); + + json jids; + std::ifstream i(filename); + i >> jids; + + auto m = to_surface_id_to_layer_map(jids["mappings"]); + + if (m.is_ok()) { + auto i = m.unwrap(); + + auto jtests = jids.value("tests", json()); + + std::vector> tests; + std::transform(std::cbegin(jtests), std::cend(jtests), + std::back_inserter(tests), [](json const &j) { + return std::make_pair(get(j["surface_id"]), + get(j["expect_layer_id"])); + }); + + for (auto sid : tests) { + DB("layer id for surface " + << sid.first << " is " + << i.get_layer_for_surface(sid.first).value_or(-1) << " expected " + << sid.second); + } + } + + return m; +} + } // namespace App::App(wl::display *d) - : api{this}, - display{d}, - controller{}, - outputs(), - layouts() { - // layouts(load_layout("../layout.json").unwrap()) { + : api{this}, display{d}, controller{}, outputs(), layouts() { + // layouts(load_layout("../layout.json").unwrap()) { assert(g_app == nullptr); g_app = this; - auto l = load_layout("../layout.json"); - if (l.is_err()) { - DB("Could not load layout: " << l.unwrap_err()); - } + auto a = load_layout("../layout.json"); + auto b = a.map_err([](char const *e) -> char const * { + DB("Could not load layout: " << e); + return e; + }); + + auto c = load_layer_ids("../ids.json"); + auto e = c.map_err([](char const *e) -> char const * { + DB("Could not load ids: " << e); + return e; + }); } App::~App() { g_app = nullptr; } -- 2.16.6