From 837aa81fc5cd34ff96fb8e87fe090721e52b4fda Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sun, 7 Jan 2018 03:17:15 +0100 Subject: [PATCH] Navigator: cook up some interesting test cases for anchor mutation ...and yes, even writing seemingly superfluous test cases will uncover yet another bug --- tests/gui/interact/ui-coord-resolver-test.cpp | 88 ++++++++++++++----- wiki/thinkPad.ichthyo.mm | 32 +++++-- 2 files changed, 92 insertions(+), 28 deletions(-) diff --git a/tests/gui/interact/ui-coord-resolver-test.cpp b/tests/gui/interact/ui-coord-resolver-test.cpp index 740120d6f..a2fb925d9 100644 --- a/tests/gui/interact/ui-coord-resolver-test.cpp +++ b/tests/gui/interact/ui-coord-resolver-test.cpp @@ -510,45 +510,93 @@ namespace test { .set("firstView", MakeRec()) .set("secondView", MakeRec()) ) - .set("panelZ" - , MakeRec() - .set("thirdView" - , MakeRec() - .set("#1", MakeRec()) - .set("#2", MakeRec()) - .set("tab", MakeRec()) - ) - ) ) .set("window-2" , MakeRec() .type("persp-B") - .set("panelY", MakeRec()) + .set("panelY" + , MakeRec()) + .set("thirdView" + , MakeRec() + .set("#1", MakeRec()) + .set("#2", MakeRec()) + ) ) .set("window-3" , MakeRec() .type("persp-C") .set("panelZ" , MakeRec() - .set("thirdView" - , MakeRec() - .set("tab" - , MakeRec() - .set("sub", MakeRec()) - ) - .set("#1", MakeRec()) - ) + .set("thirdView", MakeRec()) ) - .set("panelZZ", MakeRec()) ) }; /* === explicitly given window spec remains unchanged === */ + UICoordResolver r1 {UICoord{"window-2","persp-B","panelY"}, tree}; + CHECK (3 == r1.coverDepth()); + r1.anchor(); + CHECK ("UI:window-2[persp-B]-panelY" == string(r1)); + /* === `firstWindow` meta spec is resolved === */ + UICoordResolver r2 {UICoord::firstWindow().view("blah"), tree}; + CHECK (0 == r2.coverDepth()); + CHECK (r2.isAnchored()); + CHECK (not r2.canCover()); + CHECK ("UI:firstWindow[*]-*.blah" == string(r2)); + r2.anchor(); + CHECK ("UI:window-1[*]-*.blah" == string(r2)); + CHECK (0 == r2.coverDepth()); + CHECK (not r2.canCover()); + /* === `currentWindow` meta spec is resolved === */ - /* === already calculated coverage solution is used === */ + UICoordResolver r3 {UICoord::currentWindow().view("thirdView"), tree}; + CHECK (0 == r3.coverDepth()); + CHECK (r3.isAnchored()); + CHECK (not r3.isCovered()); + CHECK (r3.canCover()); + r3.anchor(); + CHECK (not r3.isCovered()); + CHECK (r3.isCoveredPartially()); + CHECK (1 == r3.coverDepth()); + CHECK ("UI:window-3[*]-*.thirdView" == string(r3)); + /* === coverage solution is calculated on demand === */ + UICoordResolver r4 {UICoord().view("thirdView").append("#2/sub"), tree}; + CHECK (not r4.isAnchored()); + CHECK (0 == r4.coverDepth()); + r4.anchor(); + CHECK (1 == r4.coverDepth()); + CHECK (r4.isCoveredPartially()); + cout << r4 < - - + + - - + + + + + + + + + + - - + + + + + + + + + + + + - -