~aacid/unity8/makeSureMenuPositionOnScreen

« back to all changes in this revision

Viewing changes to tests/qmltests/Stage/tst_DesktopStage.qml

  • Committer: Albert Astals Cid
  • Date: 2017-01-25 09:16:34 UTC
  • Revision ID: albert.astals@canonical.com-20170125091634-622sq2zaqn8p237e
Do not use exact gu values for the compares

Since there's text involved the gu values are not the same depending your px per gu, so do it in a bit of more fuzzy way

Show diffs side-by-side

added added

removed removed

Lines of Context:
836
836
 
837
837
        function test_menuPositioning_data() {
838
838
            return [
839
 
                {tag: "good",            windowPosition: Qt.point(units.gu(10),  units.gu(10)), expectedMenuCoordinates: Qt.point(units.gu(21.5), units.gu(3)) },
840
 
                {tag: "collides right",  windowPosition: Qt.point(units.gu(100), units.gu(10)), expectedMenuCoordinates: Qt.point(units.gu(12),   units.gu(3)) },
841
 
                {tag: "collides bottom", windowPosition: Qt.point(units.gu(10),  units.gu(80)), expectedMenuCoordinates: Qt.point(units.gu(21.5), units.gu(-5.25)) },
 
839
                {tag: "good",
 
840
                    windowPosition: Qt.point(units.gu(10),  units.gu(10))
 
841
                },
 
842
                {tag: "collides right",
 
843
                    windowPosition: Qt.point(units.gu(100), units.gu(10)),
 
844
                    minimumXDifference: units.gu(8)
 
845
                },
 
846
                {tag: "collides bottom",
 
847
                    windowPosition: Qt.point(units.gu(10),  units.gu(80)),
 
848
                    minimumYDifference: units.gu(7)
 
849
                },
842
850
            ]
843
851
        }
844
852
 
851
859
            menuItem.show();
852
860
 
853
861
            var menu = findChild(appDelegate, "menuBar-item3-menu");
854
 
 
855
 
            tryCompare(menu, "x", data.expectedMenuCoordinates.x);
856
 
            tryCompare(menu, "y", data.expectedMenuCoordinates.y);
 
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
            }
 
875
 
 
876
            if (data.minimumYDifference) {
 
877
                verify(menu.y < normalPositioningY - data.minimumYDifference);
 
878
            } else {
 
879
                compare(menu.y, normalPositioningY);
 
880
            }
857
881
        }
858
882
 
859
883
        function test_submenuPositioning_data() {
860
884
            return [
861
 
                {tag: "good",            windowPosition: Qt.point(units.gu(10),  units.gu(10)), expectedMenuCoordinates: Qt.point(units.gu(20),  units.gu(10.25)) },
862
 
                {tag: "collides right",  windowPosition: Qt.point(units.gu(100), units.gu(10)), expectedMenuCoordinates: Qt.point(units.gu(-20), units.gu(10.25)) },
863
 
                {tag: "collides bottom", windowPosition: Qt.point(units.gu(10),  units.gu(80)), expectedMenuCoordinates: Qt.point(units.gu(20),  units.gu(0)) },
 
885
                {tag: "good",
 
886
                    windowPosition: Qt.point(units.gu(10),  units.gu(10))
 
887
                },
 
888
                {tag: "collides right",
 
889
                    windowPosition: Qt.point(units.gu(100), units.gu(10)),
 
890
                    minimumXDifference: units.gu(35)
 
891
                },
 
892
                {tag: "collides bottom",
 
893
                    windowPosition: Qt.point(units.gu(10),  units.gu(80)),
 
894
                    minimumYDifference: units.gu(8)
 
895
                },
864
896
            ]
865
897
        }
866
898
 
880
912
 
881
913
            menu = findChild(appDelegate, "menuBar-item3-menu-item3-menu");
882
914
 
883
 
            console.log(menu, menu.x);
884
 
            tryCompare(menu, "x", data.expectedMenuCoordinates.x);
885
 
            tryCompare(menu, "y", data.expectedMenuCoordinates.y);
 
915
            var normalPositioningX = menuItem.width;
 
916
            var normalPositioningY = menuItem.parent.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
}