on xenial help sign in
remerge
c2386beAlbert Astals Cid
tests/qmltests/Stage/tst_DesktopStage.qml+57−11
@@ -836,9 +836,17 @@ Item {
836
836
837 function test_menuPositioning_data() {
837 function test_menuPositioning_data() {
838 return [
838 return [
839+ {tag: "good",
839− {tag: "good", windowPosition: Qt.point(units.gu(10), units.gu(10)), expectedMenuCoordinates: Qt.point(units.gu(21.5), units.gu(3)) },
840+ windowPosition: Qt.point(units.gu(10), units.gu(10))
841+ },
842+ {tag: "collides right",
840− {tag: "collides right", windowPosition: Qt.point(units.gu(100), units.gu(10)), expectedMenuCoordinates: Qt.point(units.gu(12), units.gu(3)) },
843+ windowPosition: Qt.point(units.gu(100), units.gu(10)),
844+ minimumXDifference: units.gu(8)
845+ },
846+ {tag: "collides bottom",
841− {tag: "collides bottom", windowPosition: Qt.point(units.gu(10), units.gu(80)), expectedMenuCoordinates: Qt.point(units.gu(21.5), units.gu(-5.25)) },
847+ windowPosition: Qt.point(units.gu(10), units.gu(80)),
848+ minimumYDifference: units.gu(7)
849+ },
842 ]
850 ]
843 }
851 }
844
852
@@ -851,16 +859,40 @@ Item {
851 menuItem.show();
859 menuItem.show();
852
860
853 var menu = findChild(appDelegate, "menuBar-item3-menu");
861 var menu = findChild(appDelegate, "menuBar-item3-menu");
862+ tryCompare(menu, "visible", true);
863+
864+ var normalPositioningX = menuItem.x - units.gu(1);
865+ var normalPositioningY = menuItem.height;
866+
867+ // We do this fuzzy checking because otherwise we would be duplicating the code
868+ // that calculates the coordinates and any bug it may have, what we want is really
869+ // to check that on collision with the border the menu is shifted substantially
870+ if (data.minimumXDifference) {
871+ verify(menu.x < normalPositioningX - data.minimumXDifference);
872+ } else {
873+ compare(menu.x, normalPositioningX);
874+ }
854
875
855− tryCompare(menu, "x", data.expectedMenuCoordinates.x);
876+ if (data.minimumYDifference) {
856− tryCompare(menu, "y", data.expectedMenuCoordinates.y);
877+ verify(menu.y < normalPositioningY - data.minimumYDifference);
878+ } else {
879+ compare(menu.y, normalPositioningY);
880+ }
857 }
881 }
858
882
859 function test_submenuPositioning_data() {
883 function test_submenuPositioning_data() {
860 return [
884 return [
885+ {tag: "good",
861− {tag: "good", windowPosition: Qt.point(units.gu(10), units.gu(10)), expectedMenuCoordinates: Qt.point(units.gu(20), units.gu(10.25)) },
886+ windowPosition: Qt.point(units.gu(10), units.gu(10))
887+ },
888+ {tag: "collides right",
862− {tag: "collides right", windowPosition: Qt.point(units.gu(100), units.gu(10)), expectedMenuCoordinates: Qt.point(units.gu(-20), units.gu(10.25)) },
889+ windowPosition: Qt.point(units.gu(100), units.gu(10)),
890+ minimumXDifference: units.gu(35)
891+ },
892+ {tag: "collides bottom",
863− {tag: "collides bottom", windowPosition: Qt.point(units.gu(10), units.gu(80)), expectedMenuCoordinates: Qt.point(units.gu(20), units.gu(0)) },
893+ windowPosition: Qt.point(units.gu(10), units.gu(80)),
894+ minimumYDifference: units.gu(8)
895+ },
864 ]
896 ]
865 }
897 }
866
898
@@ -880,9 +912,23 @@ Item {
880
912
881 menu = findChild(appDelegate, "menuBar-item3-menu-item3-menu");
913 menu = findChild(appDelegate, "menuBar-item3-menu-item3-menu");
882
914
883− console.log(menu, menu.x);
915+ var normalPositioningX = menuItem.width;
884− tryCompare(menu, "x", data.expectedMenuCoordinates.x);
916+ var normalPositioningY = menuItem.parent.y;
885− tryCompare(menu, "y", data.expectedMenuCoordinates.y);
917+
918+ // We do this fuzzy checking because otherwise we would be duplicating the code
919+ // that calculates the coordinates and any bug it may have, what we want is really
920+ // to check that on collision with the border the menu is shifted substantially
921+ if (data.minimumXDifference) {
922+ verify(menu.x < normalPositioningX - data.minimumXDifference);
923+ } else {
924+ compare(menu.x, normalPositioningX);
925+ }
926+
927+ if (data.minimumYDifference) {
928+ verify(menu.y < normalPositioningY - data.minimumYDifference);
929+ } else {
930+ compare(menu.y, normalPositioningY);
931+ }
886 }
932 }
887 }
933 }
888}
934}