| /**************************************************************************** |
| ** |
| ** Copyright (C) 2016 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the test suite of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ |
| ** Commercial License Usage |
| ** Licensees holding valid commercial Qt licenses may use this file in |
| ** accordance with the commercial license agreement provided with the |
| ** Software or, alternatively, in accordance with the terms contained in |
| ** a written agreement between you and The Qt Company. For licensing terms |
| ** and conditions see https://www.qt.io/terms-conditions. For further |
| ** information use the contact form at https://www.qt.io/contact-us. |
| ** |
| ** GNU General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU |
| ** General Public License version 3 as published by the Free Software |
| ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT |
| ** included in the packaging of this file. Please review the following |
| ** information to ensure the GNU General Public License requirements will |
| ** be met: https://www.gnu.org/licenses/gpl-3.0.html. |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| //TESTED_COMPONENT=src/location |
| |
| #include <QtTest/QtTest> |
| #include <QtPositioning/QGeoCoordinate> |
| #include <QtPositioning/QGeoCircle> |
| #include <QtPositioning/QGeoRectangle> |
| |
| QT_USE_NAMESPACE |
| |
| class tst_QGeoRectangle : public QObject |
| { |
| Q_OBJECT |
| |
| private slots: |
| void default_constructor(); |
| void center_constructor(); |
| void corner_constructor(); |
| void list_constructor(); |
| void copy_constructor(); |
| void assignment(); |
| void destructor(); |
| |
| void equality(); |
| void equality_data(); |
| |
| void isValid(); |
| void isValid_data(); |
| |
| void isEmpty(); |
| void isEmpty_data(); |
| |
| void corners(); |
| void corners_data(); |
| |
| void setCorners(); |
| |
| void width(); |
| void width_data(); |
| |
| void height(); |
| void height_data(); |
| |
| void center(); |
| void center_data(); |
| |
| void boundingGeoRectangle(); |
| void boundingGeoRectangle_data(); |
| |
| void containsCoord(); |
| void containsCoord_data(); |
| |
| void containsBoxAndIntersects(); |
| void containsBoxAndIntersects_data(); |
| |
| void translate(); |
| void translate_data(); |
| |
| void unite(); |
| void unite_data(); |
| |
| void extendRectangle(); |
| void extendRectangle_data(); |
| |
| void areaComparison(); |
| void areaComparison_data(); |
| |
| void circleComparison(); |
| void circleComparison_data(); |
| }; |
| |
| void tst_QGeoRectangle::default_constructor() |
| { |
| QGeoRectangle box; |
| QCOMPARE(box.topLeft().isValid(), false); |
| QCOMPARE(box.bottomRight().isValid(), false); |
| } |
| |
| void tst_QGeoRectangle::center_constructor() |
| { |
| QGeoRectangle b1 = QGeoRectangle(QGeoCoordinate(5.0, 5.0), 10.0, 10.0); |
| |
| QCOMPARE(b1.topLeft(), QGeoCoordinate(10.0, 0.0)); |
| QCOMPARE(b1.bottomRight(), QGeoCoordinate(0.0, 10.0)); |
| } |
| |
| void tst_QGeoRectangle::corner_constructor() |
| { |
| QGeoRectangle b1 = QGeoRectangle(QGeoCoordinate(10.0, 0.0), |
| QGeoCoordinate(0.0, 10.0)); |
| |
| QCOMPARE(b1.topLeft(), QGeoCoordinate(10.0, 0.0)); |
| QCOMPARE(b1.bottomRight(), QGeoCoordinate(0.0, 10.0)); |
| } |
| |
| void tst_QGeoRectangle::list_constructor() |
| { |
| QList<QGeoCoordinate> coordinates; |
| QGeoRectangle b1 = QGeoRectangle(coordinates); |
| QCOMPARE(b1.isValid(), false); |
| |
| coordinates << QGeoCoordinate(10.0, 0.0); |
| b1 = QGeoRectangle(coordinates); |
| QCOMPARE(b1.isValid(), true); |
| QCOMPARE(b1.isEmpty(), true); |
| |
| coordinates << QGeoCoordinate(0.0, 10.0) << QGeoCoordinate(0.0, 5.0); |
| b1 = QGeoRectangle(coordinates); |
| QCOMPARE(b1.topLeft(), QGeoCoordinate(10.0,0.0)); |
| QCOMPARE(b1.bottomRight(), QGeoCoordinate(0.0, 10.0)); |
| } |
| |
| void tst_QGeoRectangle::copy_constructor() |
| { |
| QGeoRectangle b1 = QGeoRectangle(QGeoCoordinate(10.0, 0.0), |
| QGeoCoordinate(0.0, 10.0)); |
| QGeoRectangle b2 = QGeoRectangle(b1); |
| |
| QCOMPARE(b2.topLeft(), QGeoCoordinate(10.0, 0.0)); |
| QCOMPARE(b2.bottomRight(), QGeoCoordinate(0.0, 10.0)); |
| |
| b2.setTopLeft(QGeoCoordinate(30.0, 0.0)); |
| b2.setBottomRight(QGeoCoordinate(0.0, 30.0)); |
| QCOMPARE(b1.topLeft(), QGeoCoordinate(10.0, 0.0)); |
| QCOMPARE(b1.bottomRight(), QGeoCoordinate(0.0, 10.0)); |
| |
| QGeoShape area; |
| QGeoRectangle areaBox(area); |
| QVERIFY(!areaBox.isValid()); |
| QVERIFY(areaBox.isEmpty()); |
| |
| QGeoCircle circle; |
| QGeoRectangle circleBox(circle); |
| QVERIFY(!circleBox.isValid()); |
| QVERIFY(circleBox.isEmpty()); |
| } |
| |
| void tst_QGeoRectangle::destructor() |
| { |
| QGeoRectangle *box = new QGeoRectangle(); |
| delete box; |
| // checking for a crash |
| } |
| |
| void tst_QGeoRectangle::assignment() |
| { |
| QGeoRectangle b1 = QGeoRectangle(QGeoCoordinate(10.0, 0.0), |
| QGeoCoordinate(0.0, 10.0)); |
| QGeoRectangle b2 = QGeoRectangle(QGeoCoordinate(20.0, 0.0), |
| QGeoCoordinate(0.0, 20.0)); |
| |
| QVERIFY(b1 != b2); |
| |
| b2 = b1; |
| QCOMPARE(b2.topLeft(), QGeoCoordinate(10.0, 0.0)); |
| QCOMPARE(b2.bottomRight(), QGeoCoordinate(0.0, 10.0)); |
| QCOMPARE(b1, b2); |
| |
| b2.setTopLeft(QGeoCoordinate(30.0, 0.0)); |
| b2.setBottomRight(QGeoCoordinate(0.0, 30.0)); |
| QCOMPARE(b1.topLeft(), QGeoCoordinate(10.0, 0.0)); |
| QCOMPARE(b1.bottomRight(), QGeoCoordinate(0.0, 10.0)); |
| |
| // Assign b1 to an area |
| QGeoShape area = b1; |
| QCOMPARE(area.type(), b1.type()); |
| QVERIFY(area == b1); |
| |
| // Assign the area back to a bounding box |
| QGeoRectangle ba = area; |
| QCOMPARE(ba.topLeft(), b1.topLeft()); |
| QCOMPARE(ba.bottomRight(), b1.bottomRight()); |
| |
| // Check that the copy is not modified when modifying the original. |
| b1.setTopLeft(QGeoCoordinate(80, 30)); |
| QVERIFY(ba.topLeft() != b1.topLeft()); |
| QVERIFY(ba != b1); |
| } |
| |
| void tst_QGeoRectangle::equality() |
| { |
| QFETCH(QGeoRectangle, box1); |
| QFETCH(QGeoRectangle, box2); |
| QFETCH(QGeoShape, area1); |
| QFETCH(QGeoShape, area2); |
| QFETCH(bool, equal); |
| |
| // compare boxes |
| QCOMPARE((box1 == box2), equal); |
| QCOMPARE((box1 != box2), !equal); |
| |
| // compare areas |
| QCOMPARE((area1 == area2), equal); |
| QCOMPARE((area1 != area2), !equal); |
| |
| // compare area to box |
| QCOMPARE((area1 == box2), equal); |
| QCOMPARE((area1 != box2), !equal); |
| |
| // compare box to area |
| QCOMPARE((box1 == area2), equal); |
| QCOMPARE((box1 != area2), !equal); |
| } |
| |
| void tst_QGeoRectangle::equality_data() |
| { |
| QTest::addColumn<QGeoRectangle>("box1"); |
| QTest::addColumn<QGeoRectangle>("box2"); |
| QTest::addColumn<QGeoShape>("area1"); |
| QTest::addColumn<QGeoShape>("area2"); |
| QTest::addColumn<bool>("equal"); |
| |
| QGeoCoordinate c1(10, 5); |
| QGeoCoordinate c2(5, 10); |
| QGeoCoordinate c3(20, 15); |
| QGeoCoordinate c4(15, 20); |
| |
| QGeoRectangle b1(c1, c2); |
| QGeoRectangle b2(c3, c4); |
| QGeoRectangle b3(c3, c2); |
| QGeoRectangle b4(c1, c3); |
| QGeoRectangle b5(c1, c2); |
| |
| QGeoShape a1(b1); |
| QGeoShape a2(b2); |
| QGeoShape a3(b3); |
| QGeoShape a4(b4); |
| QGeoShape a5(b5); |
| |
| QTest::newRow("all unequal") |
| << b1 << b2 << a1 << a2 << false; |
| QTest::newRow("top left unequal") |
| << b1 << b3 << a1 << a3 << false; |
| QTest::newRow("bottom right unequal") |
| << b1 << b4 << a1 << a4 << false; |
| QTest::newRow("equal") |
| << b1 << b5 << a1 << a5 << true; |
| } |
| |
| void tst_QGeoRectangle::isValid() |
| { |
| QFETCH(QGeoRectangle, input); |
| QFETCH(bool, valid); |
| |
| QCOMPARE(input.isValid(), valid); |
| |
| QGeoShape area = input; |
| QCOMPARE(area.isValid(), valid); |
| } |
| |
| void tst_QGeoRectangle::isValid_data() |
| { |
| QTest::addColumn<QGeoRectangle>("input"); |
| QTest::addColumn<bool>("valid"); |
| |
| QGeoCoordinate c0; |
| QGeoCoordinate c1(10, 5); |
| QGeoCoordinate c2(5, 10); |
| |
| QTest::newRow("both corners invalid") |
| << QGeoRectangle(c0, c0) << false; |
| QTest::newRow("top left corner invalid") |
| << QGeoRectangle(c0, c2) << false; |
| QTest::newRow("bottom right corner invalid") |
| << QGeoRectangle(c1, c0) << false; |
| QTest::newRow("height in wrong order") |
| << QGeoRectangle(c2, c1) << false; |
| QTest::newRow("both corners valid") |
| << QGeoRectangle(c1, c2) << true; |
| } |
| |
| void tst_QGeoRectangle::isEmpty() |
| { |
| QFETCH(QGeoRectangle, input); |
| QFETCH(bool, empty); |
| |
| QCOMPARE(input.isEmpty(), empty); |
| |
| QGeoShape area = input; |
| QCOMPARE(area.isEmpty(), empty); |
| } |
| |
| void tst_QGeoRectangle::isEmpty_data() |
| { |
| QTest::addColumn<QGeoRectangle>("input"); |
| QTest::addColumn<bool>("empty"); |
| |
| QGeoCoordinate c0; |
| QGeoCoordinate c1(10, 5); |
| QGeoCoordinate c2(5, 10); |
| QGeoCoordinate c3(10, 10); |
| |
| QTest::newRow("both corners invalid") |
| << QGeoRectangle(c0, c0) << true; |
| QTest::newRow("top left corner invalid") |
| << QGeoRectangle(c0, c2) << true; |
| QTest::newRow("bottom right corner invalid") |
| << QGeoRectangle(c1, c0) << true; |
| QTest::newRow("zero width") |
| << QGeoRectangle(c1, c3) << true; |
| QTest::newRow("zero height") |
| << QGeoRectangle(c3, c2) << true; |
| QTest::newRow("zero width and height") |
| << QGeoRectangle(c1, c1) << true; |
| QTest::newRow("non-zero width and height") |
| << QGeoRectangle(c1, c2) << false; |
| } |
| |
| void tst_QGeoRectangle::corners() |
| { |
| QFETCH(QGeoRectangle, box); |
| QFETCH(QGeoCoordinate, topLeft); |
| QFETCH(QGeoCoordinate, topRight); |
| QFETCH(QGeoCoordinate, bottomLeft); |
| QFETCH(QGeoCoordinate, bottomRight); |
| |
| QCOMPARE(box.topLeft(), topLeft); |
| QCOMPARE(box.topRight(), topRight); |
| QCOMPARE(box.bottomLeft(), bottomLeft); |
| QCOMPARE(box.bottomRight(), bottomRight); |
| } |
| |
| void tst_QGeoRectangle::corners_data() |
| { |
| QTest::addColumn<QGeoRectangle>("box"); |
| QTest::addColumn<QGeoCoordinate>("topLeft"); |
| QTest::addColumn<QGeoCoordinate>("topRight"); |
| QTest::addColumn<QGeoCoordinate>("bottomLeft"); |
| QTest::addColumn<QGeoCoordinate>("bottomRight"); |
| |
| QGeoCoordinate c0; |
| QGeoCoordinate tl(10, 5); |
| QGeoCoordinate br(5, 10); |
| QGeoCoordinate tr(10, 10); |
| QGeoCoordinate bl(5, 5); |
| |
| QTest::newRow("both invalid") |
| << QGeoRectangle(c0, c0) |
| << c0 |
| << c0 |
| << c0 |
| << c0; |
| QTest::newRow("top left invalid") |
| << QGeoRectangle(c0, br) |
| << c0 |
| << c0 |
| << c0 |
| << br; |
| QTest::newRow("bottom right invalid") |
| << QGeoRectangle(tl, c0) |
| << tl |
| << c0 |
| << c0 |
| << c0; |
| QTest::newRow("both valid") |
| << QGeoRectangle(tl, br) |
| << tl |
| << tr |
| << bl |
| << br; |
| } |
| |
| void tst_QGeoRectangle::setCorners() |
| { |
| QGeoRectangle box(QGeoCoordinate(10.0, 0.0), |
| QGeoCoordinate(0.0, 10.0)); |
| |
| box.setTopLeft(QGeoCoordinate(20.0, -10.0)); |
| |
| QCOMPARE(box.topLeft(), QGeoCoordinate(20.0, -10.0)); |
| QCOMPARE(box.topRight(), QGeoCoordinate(20.0, 10.0)); |
| QCOMPARE(box.bottomLeft(), QGeoCoordinate(0.0, -10.0)); |
| QCOMPARE(box.bottomRight(), QGeoCoordinate(0.0, 10.0)); |
| |
| box.setTopRight(QGeoCoordinate(30.0, 20.0)); |
| |
| QCOMPARE(box.topLeft(), QGeoCoordinate(30.0, -10.0)); |
| QCOMPARE(box.topRight(), QGeoCoordinate(30.0, 20.0)); |
| QCOMPARE(box.bottomLeft(), QGeoCoordinate(0.0, -10.0)); |
| QCOMPARE(box.bottomRight(), QGeoCoordinate(0.0, 20.0)); |
| |
| box.setBottomRight(QGeoCoordinate(-10.0, 30.0)); |
| |
| QCOMPARE(box.topLeft(), QGeoCoordinate(30.0, -10.0)); |
| QCOMPARE(box.topRight(), QGeoCoordinate(30.0, 30.0)); |
| QCOMPARE(box.bottomLeft(), QGeoCoordinate(-10.0, -10.0)); |
| QCOMPARE(box.bottomRight(), QGeoCoordinate(-10.0, 30.0)); |
| |
| box.setBottomLeft(QGeoCoordinate(-20.0, -20.0)); |
| |
| QCOMPARE(box.topLeft(), QGeoCoordinate(30.0, -20.0)); |
| QCOMPARE(box.topRight(), QGeoCoordinate(30.0, 30.0)); |
| QCOMPARE(box.bottomLeft(), QGeoCoordinate(-20.0, -20.0)); |
| QCOMPARE(box.bottomRight(), QGeoCoordinate(-20.0, 30.0)); |
| |
| |
| } |
| |
| void tst_QGeoRectangle::width() |
| { |
| QFETCH(QGeoRectangle, box); |
| QFETCH(double, oldWidth); |
| QFETCH(double, newWidth); |
| QFETCH(QGeoRectangle, newBox); |
| |
| if (qIsNaN(oldWidth)) |
| QVERIFY(qIsNaN(box.width())); |
| else |
| QCOMPARE(box.width(), oldWidth); |
| |
| box.setWidth(newWidth); |
| |
| QCOMPARE(box, newBox); |
| } |
| |
| void tst_QGeoRectangle::width_data() |
| { |
| QTest::addColumn<QGeoRectangle>("box"); |
| QTest::addColumn<double>("oldWidth"); |
| QTest::addColumn<double>("newWidth"); |
| QTest::addColumn<QGeoRectangle>("newBox"); |
| |
| QTest::newRow("invalid box") |
| << QGeoRectangle() |
| << qQNaN() |
| << 100.0 |
| << QGeoRectangle(); |
| |
| QTest::newRow("0 width -> negative width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 90.0), |
| QGeoCoordinate(5.0, 90.0)) |
| << 0.0 |
| << -1.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 90.0), |
| QGeoCoordinate(5.0, 90.0)); |
| |
| QTest::newRow("0 width -> 0 width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 90.0), |
| QGeoCoordinate(5.0, 90.0)) |
| << 0.0 |
| << 0.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 90.0), |
| QGeoCoordinate(5.0, 90.0)); |
| |
| QTest::newRow("0 width -> non wrapping width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 90.0), |
| QGeoCoordinate(5.0, 90.0)) |
| << 0.0 |
| << 10.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 85.0), |
| QGeoCoordinate(5.0, 95.0)); |
| |
| QTest::newRow("0 width -> wrapping width positive") |
| << QGeoRectangle(QGeoCoordinate(10.0, 90.0), |
| QGeoCoordinate(5.0, 90.0)) |
| << 0.0 |
| << 190.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, -5.0), |
| QGeoCoordinate(5.0, -175.0)); |
| |
| QTest::newRow("0 width -> wrapping width negative") |
| << QGeoRectangle(QGeoCoordinate(10.0, -90.0), |
| QGeoCoordinate(5.0, -90.0)) |
| << 0.0 |
| << 190.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 175.0), |
| QGeoCoordinate(5.0, 5.0)); |
| |
| QTest::newRow("0 width -> 360 width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 90.0), |
| QGeoCoordinate(5.0, 90.0)) |
| << 0.0 |
| << 360.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, -180.0), |
| QGeoCoordinate(5.0, 180.0)); |
| |
| QTest::newRow("0 width -> 360+ width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 90.0), |
| QGeoCoordinate(5.0, 90.0)) |
| << 0.0 |
| << 370.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, -180.0), |
| QGeoCoordinate(5.0, 180.0)); |
| |
| QTest::newRow("non wrapping width -> negative width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 85.0), |
| QGeoCoordinate(5.0, 95.0)) |
| << 10.0 |
| << -1.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 85.0), |
| QGeoCoordinate(5.0, 95.0)); |
| |
| QTest::newRow("non wrapping width -> 0 width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 85.0), |
| QGeoCoordinate(5.0, 95.0)) |
| << 10.0 |
| << 0.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 90.0), |
| QGeoCoordinate(5.0, 90.0)); |
| |
| QTest::newRow("non wrapping width -> non wrapping width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 85.0), |
| QGeoCoordinate(5.0, 95.0)) |
| << 10.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 80.0), |
| QGeoCoordinate(5.0, 100.0)); |
| |
| QTest::newRow("non wrapping width -> wrapping width positive") |
| << QGeoRectangle(QGeoCoordinate(10.0, 85.0), |
| QGeoCoordinate(5.0, 95.0)) |
| << 10.0 |
| << 190.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, -5.0), |
| QGeoCoordinate(5.0, -175.0)); |
| |
| QTest::newRow("non wrapping width -> wrapping width negative") |
| << QGeoRectangle(QGeoCoordinate(10.0, -95.0), |
| QGeoCoordinate(5.0, -85.0)) |
| << 10.0 |
| << 190.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 175.0), |
| QGeoCoordinate(5.0, 5.0)); |
| |
| QTest::newRow("non wrapping width -> 360 width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 85.0), |
| QGeoCoordinate(5.0, 95.0)) |
| << 10.0 |
| << 360.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, -180.0), |
| QGeoCoordinate(5.0, 180.0)); |
| |
| QTest::newRow("non wrapping width width -> 360+ width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 85.0), |
| QGeoCoordinate(5.0, 95.0)) |
| << 10.0 |
| << 370.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, -180.0), |
| QGeoCoordinate(5.0, 180.0)); |
| |
| QTest::newRow("wrapping width -> negative width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 175.0), |
| QGeoCoordinate(5.0, -85.0)) |
| << 100.0 |
| << -1.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 175.0), |
| QGeoCoordinate(5.0, -85.0)); |
| |
| QTest::newRow("wrapping width -> 0 width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 175.0), |
| QGeoCoordinate(5.0, -85.0)) |
| << 100.0 |
| << 0.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, -135.0), |
| QGeoCoordinate(5.0, -135.0)); |
| |
| QTest::newRow("wrapping width -> non wrapping width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 175.0), |
| QGeoCoordinate(5.0, -85.0)) |
| << 100.0 |
| << 80.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, -175.0), |
| QGeoCoordinate(5.0, -95.0)); |
| |
| QTest::newRow("wrapping width -> wrapping width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 175.0), |
| QGeoCoordinate(5.0, -85.0)) |
| << 100.0 |
| << 120.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 165.0), |
| QGeoCoordinate(5.0, -75.0)); |
| |
| QTest::newRow("wrapping width -> 360 width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 175.0), |
| QGeoCoordinate(5.0, -85.0)) |
| << 100.0 |
| << 360.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, -180.0), |
| QGeoCoordinate(5.0, 180.0)); |
| |
| QTest::newRow("wrapping width width -> 360+ width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 175.0), |
| QGeoCoordinate(5.0, -85.0)) |
| << 100.0 |
| << 370.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, -180.0), |
| QGeoCoordinate(5.0, 180.0)); |
| } |
| |
| void tst_QGeoRectangle::height() |
| { |
| QFETCH(QGeoRectangle, box); |
| QFETCH(double, oldHeight); |
| QFETCH(double, newHeight); |
| QFETCH(QGeoRectangle, newBox); |
| |
| if (qIsNaN(oldHeight)) |
| QVERIFY(qIsNaN(box.height())); |
| else |
| QCOMPARE(box.height(), oldHeight); |
| |
| box.setHeight(newHeight); |
| QCOMPARE(box, newBox); |
| } |
| |
| void tst_QGeoRectangle::height_data() |
| { |
| QTest::addColumn<QGeoRectangle>("box"); |
| QTest::addColumn<double>("oldHeight"); |
| QTest::addColumn<double>("newHeight"); |
| QTest::addColumn<QGeoRectangle>("newBox"); |
| |
| QTest::newRow("invalid box") |
| << QGeoRectangle() |
| << qQNaN() |
| << 100.0 |
| << QGeoRectangle(); |
| |
| QTest::newRow("0 height -> negative height") |
| << QGeoRectangle(QGeoCoordinate(10.0, 5.0), |
| QGeoCoordinate(10.0, 10.0)) |
| << 0.0 |
| << -1.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 5.0), |
| QGeoCoordinate(10.0, 10.0)); |
| |
| QTest::newRow("0 height -> 0 height") |
| << QGeoRectangle(QGeoCoordinate(10.0, 5.0), |
| QGeoCoordinate(10.0, 10.0)) |
| << 0.0 |
| << 0.0 |
| << QGeoRectangle(QGeoCoordinate(10.0, 5.0), |
| QGeoCoordinate(10.0, 10.0)); |
| |
| QTest::newRow("0 height -> non zero height") |
| << QGeoRectangle(QGeoCoordinate(10.0, 5.0), |
| QGeoCoordinate(10.0, 10.0)) |
| << 0.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(20.0, 5.0), |
| QGeoCoordinate(0.0, 10.0)); |
| |
| QTest::newRow("0 height -> squash top") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(70.0, 70.0)) |
| << 0.0 |
| << 60.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 30.0), |
| QGeoCoordinate(50.0, 70.0)); |
| |
| QTest::newRow("0 height -> squash bottom") |
| << QGeoRectangle(QGeoCoordinate(-70.0, 30.0), |
| QGeoCoordinate(-70.0, 70.0)) |
| << 0.0 |
| << 60.0 |
| << QGeoRectangle(QGeoCoordinate(-50.0, 30.0), |
| QGeoCoordinate(-90.0, 70.0)); |
| |
| QTest::newRow("0 height -> 180") |
| << QGeoRectangle(QGeoCoordinate(0.0, 5.0), |
| QGeoCoordinate(0.0, 10.0)) |
| << 0.0 |
| << 180.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 5.0), |
| QGeoCoordinate(-90.0, 10.0)); |
| |
| QTest::newRow("0 height -> 180 squash top") |
| << QGeoRectangle(QGeoCoordinate(20.0, 5.0), |
| QGeoCoordinate(20.0, 10.0)) |
| << 0.0 |
| << 180.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 5.0), |
| QGeoCoordinate(-50.0, 10.0)); |
| |
| QTest::newRow("0 height -> 180 squash bottom") |
| << QGeoRectangle(QGeoCoordinate(-20.0, 5.0), |
| QGeoCoordinate(-20.0, 10.0)) |
| << 0.0 |
| << 180.0 |
| << QGeoRectangle(QGeoCoordinate(50.0, 5.0), |
| QGeoCoordinate(-90.0, 10.0)); |
| |
| QTest::newRow("0 height -> 180+") |
| << QGeoRectangle(QGeoCoordinate(0.0, 5.0), |
| QGeoCoordinate(0.0, 10.0)) |
| << 0.0 |
| << 190.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 5.0), |
| QGeoCoordinate(-90.0, 10.0)); |
| |
| QTest::newRow("0 height -> 180+ squash top") |
| << QGeoRectangle(QGeoCoordinate(20.0, 5.0), |
| QGeoCoordinate(20.0, 10.0)) |
| << 0.0 |
| << 190.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 5.0), |
| QGeoCoordinate(-50.0, 10.0)); |
| |
| QTest::newRow("0 height -> 180+ squash bottom") |
| << QGeoRectangle(QGeoCoordinate(-20.0, 5.0), |
| QGeoCoordinate(-20.0, 10.0)) |
| << 0.0 |
| << 190.0 |
| << QGeoRectangle(QGeoCoordinate(50.0, 5.0), |
| QGeoCoordinate(-90.0, 10.0)); |
| |
| QTest::newRow("non zero height -> negative height") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)) |
| << 40.0 |
| << -1.0 |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)); |
| |
| QTest::newRow("non zero height -> 0 height") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)) |
| << 40.0 |
| << 0.0 |
| << QGeoRectangle(QGeoCoordinate(50.0, 30.0), |
| QGeoCoordinate(50.0, 70.0)); |
| |
| QTest::newRow("non zero height -> non zero height") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)) |
| << 40.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(60.0, 30.0), |
| QGeoCoordinate(40.0, 70.0)); |
| |
| QTest::newRow("non zero height -> squash top") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)) |
| << 40.0 |
| << 100.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 30.0), |
| QGeoCoordinate(10.0, 70.0)); |
| |
| QTest::newRow("non zero height -> squash bottom") |
| << QGeoRectangle(QGeoCoordinate(-30.0, 30.0), |
| QGeoCoordinate(-70.0, 70.0)) |
| << 40.0 |
| << 100.0 |
| << QGeoRectangle(QGeoCoordinate(-10.0, 30.0), |
| QGeoCoordinate(-90.0, 70.0)); |
| |
| QTest::newRow("non zero height -> 180") |
| << QGeoRectangle(QGeoCoordinate(20.0, 30.0), |
| QGeoCoordinate(-20.0, 70.0)) |
| << 40.0 |
| << 180.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 30.0), |
| QGeoCoordinate(-90.0, 70.0)); |
| |
| QTest::newRow("non zero height -> 180 squash top") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)) |
| << 40.0 |
| << 180.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 30.0), |
| QGeoCoordinate(10.0, 70.0)); |
| |
| QTest::newRow("non zero height -> 180 squash bottom") |
| << QGeoRectangle(QGeoCoordinate(-30.0, 30.0), |
| QGeoCoordinate(-70.0, 70.0)) |
| << 40.0 |
| << 180.0 |
| << QGeoRectangle(QGeoCoordinate(-10.0, 30.0), |
| QGeoCoordinate(-90.0, 70.0)); |
| |
| QTest::newRow("non zero height -> 180+") |
| << QGeoRectangle(QGeoCoordinate(20.0, 30.0), |
| QGeoCoordinate(-20.0, 70.0)) |
| << 40.0 |
| << 190.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 30.0), |
| QGeoCoordinate(-90.0, 70.0)); |
| |
| QTest::newRow("non zero height -> 180+ squash top") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)) |
| << 40.0 |
| << 190.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 30.0), |
| QGeoCoordinate(10.0, 70.0)); |
| |
| QTest::newRow("non zero height -> 180+ squash bottom") |
| << QGeoRectangle(QGeoCoordinate(-30.0, 30.0), |
| QGeoCoordinate(-70.0, 70.0)) |
| << 40.0 |
| << 190.0 |
| << QGeoRectangle(QGeoCoordinate(-10.0, 30.0), |
| QGeoCoordinate(-90.0, 70.0)); |
| } |
| |
| void tst_QGeoRectangle::center() |
| { |
| QFETCH(QGeoRectangle, box); |
| QFETCH(QGeoCoordinate, oldCenter); |
| QFETCH(QGeoCoordinate, newCenter); |
| QFETCH(QGeoRectangle, newBox); |
| |
| QGeoShape shape = box; |
| QCOMPARE(box.center(), oldCenter); |
| QCOMPARE(shape.center(), oldCenter); |
| box.setCenter(newCenter); |
| QCOMPARE(box, newBox); |
| } |
| |
| void tst_QGeoRectangle::center_data() |
| { |
| QTest::addColumn<QGeoRectangle>("box"); |
| QTest::addColumn<QGeoCoordinate>("oldCenter"); |
| QTest::addColumn<QGeoCoordinate>("newCenter"); |
| QTest::addColumn<QGeoRectangle>("newBox"); |
| |
| QTest::newRow("invalid") |
| << QGeoRectangle() |
| << QGeoCoordinate() |
| << QGeoCoordinate(0.0, 0.0) |
| << QGeoRectangle(QGeoCoordinate(0.0, 0.0), 0.0, 0.0); |
| |
| QTest::newRow("zero width") |
| << QGeoRectangle(QGeoCoordinate(10.0, 5.0), |
| QGeoCoordinate(5.0, 5.0)) |
| << QGeoCoordinate(7.5, 5.0) |
| << QGeoCoordinate(20.0, 20.0) |
| << QGeoRectangle(QGeoCoordinate(22.5, 20.0), |
| QGeoCoordinate(17.5, 20.0)); |
| |
| QTest::newRow("360 width") |
| << QGeoRectangle(QGeoCoordinate(10.0, -180.0), |
| QGeoCoordinate(5.0, 180.0)) |
| << QGeoCoordinate(7.5, 0.0) |
| << QGeoCoordinate(20.0, 20.0) |
| << QGeoRectangle(QGeoCoordinate(22.5, -180.0), |
| QGeoCoordinate(17.5, 180.0)); |
| |
| QTest::newRow("zero height") |
| << QGeoRectangle(QGeoCoordinate(5.0, 5.0), |
| QGeoCoordinate(5.0, 10.0)) |
| << QGeoCoordinate(5.0, 7.5) |
| << QGeoCoordinate(20.0, 20.0) |
| << QGeoRectangle(QGeoCoordinate(20.0, 17.5), |
| QGeoCoordinate(20.0, 22.5)); |
| |
| QTest::newRow("180 height -> move") |
| << QGeoRectangle(QGeoCoordinate(90.0, 5.0), |
| QGeoCoordinate(-90.0, 10.0)) |
| << QGeoCoordinate(0.0, 7.5) |
| << QGeoCoordinate(0.0, 20.0) |
| << QGeoRectangle(QGeoCoordinate(90.0, 17.5), |
| QGeoCoordinate(-90.0, 22.5)); |
| |
| QTest::newRow("180 height -> squash top") |
| << QGeoRectangle(QGeoCoordinate(90.0, 5.0), |
| QGeoCoordinate(-90.0, 10.0)) |
| << QGeoCoordinate(0.0, 7.5) |
| << QGeoCoordinate(-20.0, 20.0) |
| << QGeoRectangle(QGeoCoordinate(50.0, 17.5), |
| QGeoCoordinate(-90.0, 22.5)); |
| |
| QTest::newRow("180 height -> squash bottom") |
| << QGeoRectangle(QGeoCoordinate(90.0, 5.0), |
| QGeoCoordinate(-90.0, 10.0)) |
| << QGeoCoordinate(0.0, 7.5) |
| << QGeoCoordinate(20.0, 20.0) |
| << QGeoRectangle(QGeoCoordinate(90.0, 17.5), |
| QGeoCoordinate(-50.0, 22.5)); |
| |
| QTest::newRow("non wrapping -> non wrapping") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)) |
| << QGeoCoordinate(50.0, 50.0) |
| << QGeoCoordinate(10.0, 10.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, -10.0), |
| QGeoCoordinate(-10.0, 30.0)); |
| |
| QTest::newRow("non wrapping -> wrapping") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)) |
| << QGeoCoordinate(50.0, 50.0) |
| << QGeoCoordinate(10.0, 170.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-10.0, -170.0)); |
| |
| QTest::newRow("non wrapping -> squash top") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)) |
| << QGeoCoordinate(50.0, 50.0) |
| << QGeoCoordinate(80.0, 50.0) |
| << QGeoRectangle(QGeoCoordinate(90.0, 30.0), |
| QGeoCoordinate(70.0, 70.0)); |
| |
| QTest::newRow("non wrapping -> squash bottom") |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)) |
| << QGeoCoordinate(50.0, 50.0) |
| << QGeoCoordinate(-80.0, 50.0) |
| << QGeoRectangle(QGeoCoordinate(-70.0, 30.0), |
| QGeoCoordinate(-90.0, 70.0)); |
| |
| QTest::newRow("wrapping -> non wrapping") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-10.0, -170.0)) |
| << QGeoCoordinate(10.0, 170.0) |
| << QGeoCoordinate(50.0, 50.0) |
| << QGeoRectangle(QGeoCoordinate(70.0, 30.0), |
| QGeoCoordinate(30.0, 70.0)); |
| |
| QTest::newRow("wrapping -> wrapping") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-10.0, -170.0)) |
| << QGeoCoordinate(10.0, 170.0) |
| << QGeoCoordinate(10.0, -170.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, 170.0), |
| QGeoCoordinate(-10.0, -150.0)); |
| |
| QTest::newRow("wrapping -> squash top") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-10.0, -170.0)) |
| << QGeoCoordinate(10.0, 170.0) |
| << QGeoCoordinate(80.0, 170.0) |
| << QGeoRectangle(QGeoCoordinate(90.0, 150.0), |
| QGeoCoordinate(70.0, -170.0)); |
| |
| QTest::newRow("wrapping -> squash bottom") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-10.0, -170.0)) |
| << QGeoCoordinate(10.0, 170.0) |
| << QGeoCoordinate(-80.0, 170.0) |
| << QGeoRectangle(QGeoCoordinate(-70.0, 150.0), |
| QGeoCoordinate(-90.0, -170.0)); |
| } |
| |
| void tst_QGeoRectangle::boundingGeoRectangle_data() |
| { |
| QTest::addColumn<QGeoRectangle>("rectangle"); |
| |
| QGeoRectangle b1(QGeoCoordinate(70, 30), QGeoCoordinate(30, 70)); |
| QGeoRectangle b2(QGeoCoordinate(70, 150), QGeoCoordinate(30, -170)); |
| QGeoRectangle b3(QGeoCoordinate(90, 30), QGeoCoordinate(50, 70)); |
| QGeoRectangle b4(QGeoCoordinate(-50, 30), QGeoCoordinate(-90, 70)); |
| |
| QTest::newRow("Box 1") << b1; |
| QTest::newRow("Box 2") << b2; |
| QTest::newRow("Box 3") << b3; |
| QTest::newRow("Box 4") << b4; |
| } |
| |
| void tst_QGeoRectangle::boundingGeoRectangle() |
| { |
| QFETCH(QGeoRectangle, rectangle); |
| |
| QGeoRectangle box = rectangle.boundingGeoRectangle(); |
| QCOMPARE(box, rectangle); |
| } |
| |
| void tst_QGeoRectangle::containsCoord() |
| { |
| QFETCH(QGeoRectangle, box); |
| QFETCH(QGeoCoordinate, coord); |
| QFETCH(bool, contains); |
| |
| QCOMPARE(box.contains(coord), contains); |
| |
| QGeoShape area = box; |
| QCOMPARE(area.contains(coord), contains); |
| } |
| |
| void tst_QGeoRectangle::containsCoord_data() |
| { |
| QTest::addColumn<QGeoRectangle>("box"); |
| QTest::addColumn<QGeoCoordinate>("coord"); |
| QTest::addColumn<bool>("contains"); |
| |
| QGeoRectangle b1(QGeoCoordinate(70, 30), QGeoCoordinate(30, 70)); |
| |
| double lonLO1 = 20.0; |
| double lonL1 = 30.0; |
| double lonLI1 = 40.0; |
| double lonC1 = 50.0; |
| double lonRI1 = 60.0; |
| double lonR1 = 70.0; |
| double lonRO1 = 80.0; |
| |
| double latTO1 = 80.0; |
| double latT1 = 70.0; |
| double latTI1 = 60.0; |
| double latC1 = 50.0; |
| double latBI1 = 40.0; |
| double latB1 = 30.0; |
| double latBO1 = 20.0; |
| |
| QTest::newRow("non wrapped - in center") |
| << b1 << QGeoCoordinate(latC1, lonC1) << true; |
| QTest::newRow("non wrapped - left edge - inside") |
| << b1 << QGeoCoordinate(latC1, lonLI1) << true; |
| QTest::newRow("non wrapped - left edge") |
| << b1 << QGeoCoordinate(latC1, lonL1) << true; |
| QTest::newRow("non wrapped - left edge - outside") |
| << b1 << QGeoCoordinate(latC1, lonLO1) << false; |
| QTest::newRow("non wrapped - right edge - inside") |
| << b1 << QGeoCoordinate(latC1, lonRI1) << true; |
| QTest::newRow("non wrapped - right edge") |
| << b1 << QGeoCoordinate(latC1, lonR1) << true; |
| QTest::newRow("non wrapped - right edge - outside") |
| << b1 << QGeoCoordinate(latC1, lonRO1) << false; |
| QTest::newRow("non wrapped - top edge - inside") |
| << b1 << QGeoCoordinate(latTI1, lonC1) << true; |
| QTest::newRow("non wrapped - top edge") |
| << b1 << QGeoCoordinate(latT1, lonC1) << true; |
| QTest::newRow("non wrapped - top edge - outside") |
| << b1 << QGeoCoordinate(latTO1, lonC1) << false; |
| QTest::newRow("non wrapped - bottom edge - inside") |
| << b1 << QGeoCoordinate(latBI1, lonC1) << true; |
| QTest::newRow("non wrapped - bottom edge") |
| << b1 << QGeoCoordinate(latB1, lonC1) << true; |
| QTest::newRow("non wrapped - bottom edge - outside") |
| << b1 << QGeoCoordinate(latBO1, lonC1) << false; |
| QTest::newRow("non wrapped - top left - inside") |
| << b1 << QGeoCoordinate(latTI1, lonLI1) << true; |
| QTest::newRow("non wrapped - top left") |
| << b1 << QGeoCoordinate(latT1, lonL1) << true; |
| QTest::newRow("non wrapped - top left - outside") |
| << b1 << QGeoCoordinate(latTO1, lonLO1) << false; |
| QTest::newRow("non wrapped - top right - inside") |
| << b1 << QGeoCoordinate(latTI1, lonRI1) << true; |
| QTest::newRow("non wrapped - top right") |
| << b1 << QGeoCoordinate(latT1, lonR1) << true; |
| QTest::newRow("non wrapped - top right - outside") |
| << b1 << QGeoCoordinate(latTO1, lonRO1) << false; |
| QTest::newRow("non wrapped - bottom left - inside") |
| << b1 << QGeoCoordinate(latBI1, lonLI1) << true; |
| QTest::newRow("non wrapped - bottom left") |
| << b1 << QGeoCoordinate(latB1, lonL1) << true; |
| QTest::newRow("non wrapped - bottom left - outside") |
| << b1 << QGeoCoordinate(latBO1, lonLO1) << false; |
| QTest::newRow("non wrapped - bottom right - inside") |
| << b1 << QGeoCoordinate(latBI1, lonRI1) << true; |
| QTest::newRow("non wrapped - bottom right") |
| << b1 << QGeoCoordinate(latB1, lonR1) << true; |
| QTest::newRow("non wrapped - bottom right - outside") |
| << b1 << QGeoCoordinate(latBO1, lonRO1) << false; |
| |
| QGeoRectangle b2(QGeoCoordinate(70, 150), QGeoCoordinate(30, -170)); |
| |
| double lonLO2 = 140.0; |
| double lonL2 = 150.0; |
| double lonLI2 = 160.0; |
| double lonC2 = 170.0; |
| double lonRI2 = 180.0; |
| double lonR2 = -170.0; |
| double lonRO2 = -160.0; |
| |
| double latTO2 = 80.0; |
| double latT2 = 70.0; |
| double latTI2 = 60.0; |
| double latC2 = 50.0; |
| double latBI2 = 40.0; |
| double latB2 = 30.0; |
| double latBO2 = 20.0; |
| |
| QTest::newRow("wrapped - in center") |
| << b2 << QGeoCoordinate(latC2, lonC2) << true; |
| QTest::newRow("wrapped - left edge - inside") |
| << b2 << QGeoCoordinate(latC2, lonLI2) << true; |
| QTest::newRow("wrapped - left edge") |
| << b2 << QGeoCoordinate(latC2, lonL2) << true; |
| QTest::newRow("wrapped - left edge - outside") |
| << b2 << QGeoCoordinate(latC2, lonLO2) << false; |
| QTest::newRow("wrapped - right edge - inside") |
| << b2 << QGeoCoordinate(latC2, lonRI2) << true; |
| QTest::newRow("wrapped - right edge") |
| << b2 << QGeoCoordinate(latC2, lonR2) << true; |
| QTest::newRow("wrapped - right edge - outside") |
| << b2 << QGeoCoordinate(latC2, lonRO2) << false; |
| QTest::newRow("wrapped - top edge - inside") |
| << b2 << QGeoCoordinate(latTI2, lonC2) << true; |
| QTest::newRow("wrapped - top edge") |
| << b2 << QGeoCoordinate(latT2, lonC2) << true; |
| QTest::newRow("wrapped - top edge - outside") |
| << b2 << QGeoCoordinate(latTO2, lonC2) << false; |
| QTest::newRow("wrapped - bottom edge - inside") |
| << b2 << QGeoCoordinate(latBI2, lonC2) << true; |
| QTest::newRow("wrapped - bottom edge") |
| << b2 << QGeoCoordinate(latB2, lonC2) << true; |
| QTest::newRow("wrapped - bottom edge - outside") |
| << b2 << QGeoCoordinate(latBO2, lonC2) << false; |
| QTest::newRow("wrapped - top left - inside") |
| << b2 << QGeoCoordinate(latTI2, lonLI2) << true; |
| QTest::newRow("wrapped - top left") |
| << b2 << QGeoCoordinate(latT2, lonL2) << true; |
| QTest::newRow("wrapped - top left - outside") |
| << b2 << QGeoCoordinate(latTO2, lonLO2) << false; |
| QTest::newRow("wrapped - top right - inside") |
| << b2 << QGeoCoordinate(latTI2, lonRI2) << true; |
| QTest::newRow("wrapped - top right") |
| << b2 << QGeoCoordinate(latT2, lonR2) << true; |
| QTest::newRow("wrapped - top right - outside") |
| << b2 << QGeoCoordinate(latTO2, lonRO2) << false; |
| QTest::newRow("wrapped - bottom left - inside") |
| << b2 << QGeoCoordinate(latBI2, lonLI2) << true; |
| QTest::newRow("wrapped - bottom left") |
| << b2 << QGeoCoordinate(latB2, lonL2) << true; |
| QTest::newRow("wrapped - bottom left - outside") |
| << b2 << QGeoCoordinate(latBO2, lonLO2) << false; |
| QTest::newRow("wrapped - bottom right - inside") |
| << b2 << QGeoCoordinate(latBI2, lonRI2) << true; |
| QTest::newRow("wrapped - bottom right") |
| << b2 << QGeoCoordinate(latB2, lonR2) << true; |
| QTest::newRow("wrapped - bottom right - outside") |
| << b2 << QGeoCoordinate(latBO2, lonRO2) << false; |
| |
| QGeoRectangle b3(QGeoCoordinate(90, 30), QGeoCoordinate(50, 70)); |
| |
| double lonLO3 = 20.0; |
| double lonL3 = 30.0; |
| double lonLI3 = 40.0; |
| double lonC3 = 50.0; |
| double lonRI3 = 60.0; |
| double lonR3 = 70.0; |
| double lonRO3 = 80.0; |
| |
| double latT3 = 90.0; |
| double latTI3 = 80.0; |
| double latC3 = 70.0; |
| /* current unused: |
| double latBI3 = 60.0; |
| double latB3 = 50.0; |
| double latBO3 = 40.0; |
| */ |
| |
| QTest::newRow("north pole - in center") |
| << b3 << QGeoCoordinate(latC3, lonC3) << true; |
| QTest::newRow("north pole - left edge - inside") |
| << b3 << QGeoCoordinate(latC3, lonLI3) << true; |
| QTest::newRow("north pole - left edge") |
| << b3 << QGeoCoordinate(latC3, lonL3) << true; |
| QTest::newRow("north pole - left edge - outside") |
| << b3 << QGeoCoordinate(latC3, lonLO3) << false; |
| QTest::newRow("north pole - right edge - inside") |
| << b3 << QGeoCoordinate(latC3, lonRI3) << true; |
| QTest::newRow("north pole - right edge") |
| << b3 << QGeoCoordinate(latC3, lonR3) << true; |
| QTest::newRow("north pole - right edge - outside") |
| << b3 << QGeoCoordinate(latC3, lonRO3) << false; |
| QTest::newRow("north pole - top edge - inside") |
| << b3 << QGeoCoordinate(latTI3, lonC3) << true; |
| QTest::newRow("north pole - top edge") |
| << b3 << QGeoCoordinate(latT3, lonC3) << true; |
| QTest::newRow("north pole - top left - inside") |
| << b3 << QGeoCoordinate(latTI3, lonLI3) << true; |
| QTest::newRow("north pole - top left") |
| << b3 << QGeoCoordinate(latT3, lonL3) << true; |
| QTest::newRow("north pole - top left - outside") |
| << b3 << QGeoCoordinate(latT3, lonLO3) << true; |
| QTest::newRow("north pole - top right - inside") |
| << b3 << QGeoCoordinate(latTI3, lonRI3) << true; |
| QTest::newRow("north pole - top right") |
| << b3 << QGeoCoordinate(latT3, lonR3) << true; |
| QTest::newRow("north pole - top right - outside") |
| << b3 << QGeoCoordinate(latT3, lonRO3) << true; |
| |
| QGeoRectangle b4(QGeoCoordinate(-50, 30), QGeoCoordinate(-90, 70)); |
| |
| double lonLO4 = 20.0; |
| double lonL4 = 30.0; |
| double lonLI4 = 40.0; |
| double lonC4 = 50.0; |
| double lonRI4 = 60.0; |
| double lonR4 = 70.0; |
| double lonRO4 = 80.0; |
| |
| /* currently unused: |
| double latTO4 = -40.0; |
| double latT4 = -50.0; |
| double latTI4 = -60.0; |
| */ |
| double latC4 = -70.0; |
| double latBI4 = -80.0; |
| double latB4 = -90.0; |
| |
| QTest::newRow("south pole - in center") |
| << b4 << QGeoCoordinate(latC4, lonC4) << true; |
| QTest::newRow("south pole - left edge - inside") |
| << b4 << QGeoCoordinate(latC4, lonLI4) << true; |
| QTest::newRow("south pole - left edge") |
| << b4 << QGeoCoordinate(latC4, lonL4) << true; |
| QTest::newRow("south pole - left edge - outside") |
| << b4 << QGeoCoordinate(latC4, lonLO4) << false; |
| QTest::newRow("south pole - right edge - inside") |
| << b4 << QGeoCoordinate(latC4, lonRI4) << true; |
| QTest::newRow("south pole - right edge") |
| << b4 << QGeoCoordinate(latC4, lonR4) << true; |
| QTest::newRow("south pole - right edge - outside") |
| << b4 << QGeoCoordinate(latC4, lonRO4) << false; |
| QTest::newRow("south pole - bottom edge - inside") |
| << b4 << QGeoCoordinate(latBI4, lonC4) << true; |
| QTest::newRow("south pole - bottom edge") |
| << b4 << QGeoCoordinate(latB4, lonC4) << true; |
| QTest::newRow("south pole - bottom left - inside") |
| << b4 << QGeoCoordinate(latBI4, lonLI4) << true; |
| QTest::newRow("south pole - bottom left") |
| << b4 << QGeoCoordinate(latB4, lonL4) << true; |
| QTest::newRow("south pole - bottom left - outside") |
| << b4 << QGeoCoordinate(latB4, lonLO4) << true; |
| QTest::newRow("south pole - bottom right - inside") |
| << b4 << QGeoCoordinate(latBI4, lonRI4) << true; |
| QTest::newRow("south pole - bottom right") |
| << b4 << QGeoCoordinate(latB4, lonR4) << true; |
| QTest::newRow("south pole - bottom right - outside") |
| << b4 << QGeoCoordinate(latB4, lonRO4) << true; |
| } |
| |
| void tst_QGeoRectangle::containsBoxAndIntersects() |
| { |
| QFETCH(QGeoRectangle, box1); |
| QFETCH(QGeoRectangle, box2); |
| QFETCH(bool, contains); |
| QFETCH(bool, intersects); |
| |
| QCOMPARE(box1.contains(box2), contains); |
| QCOMPARE(box1.intersects(box2), intersects); |
| } |
| |
| void tst_QGeoRectangle::containsBoxAndIntersects_data() |
| { |
| QTest::addColumn<QGeoRectangle>("box1"); |
| QTest::addColumn<QGeoRectangle>("box2"); |
| QTest::addColumn<bool>("contains"); |
| QTest::addColumn<bool>("intersects"); |
| |
| QGeoRectangle b1(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)); |
| |
| QTest::newRow("non wrapped same") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << true << true; |
| |
| QTest::newRow("non wrapped smaller") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(20.0, -20.0), |
| QGeoCoordinate(-20.0, 20.0)) |
| << true << true; |
| |
| QTest::newRow("non wrapped larger") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(40.0, -40.0), |
| QGeoCoordinate(-40.0, 40.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped outside top") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(80.0, -30.0), |
| QGeoCoordinate(50.0, 30.0)) |
| << false << false; |
| |
| QTest::newRow("non wrapped outside bottom") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-50.0, -30.0), |
| QGeoCoordinate(-80.0, 30.0)) |
| << false << false; |
| |
| QTest::newRow("non wrapped outside left") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(30.0, -80.0), |
| QGeoCoordinate(-30.0, -50.0)) |
| << false << false; |
| |
| QTest::newRow("non wrapped outside wrapped") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << false << false; |
| |
| QTest::newRow("non wrapped outside right") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(30.0, 50.0), |
| QGeoCoordinate(-30.0, 80.0)) |
| << false << false; |
| |
| QTest::newRow("non wrapped top left cross") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(40.0, -40.0), |
| QGeoCoordinate(20.0, -20.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped top cross") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(40.0, -10.0), |
| QGeoCoordinate(20.0, 10.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped top right cross") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(40.0, 20.0), |
| QGeoCoordinate(20.0, 40.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped left cross") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(10.0, -40.0), |
| QGeoCoordinate(-10.0, -20.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped right cross") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(10.0, 20.0), |
| QGeoCoordinate(-10.0, 40.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped bottom left cross") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-20.0, -40.0), |
| QGeoCoordinate(-40.0, -20.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped bottom cross") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-20.0, -10.0), |
| QGeoCoordinate(-40.0, 10.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped bottom right cross") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-20.0, 20.0), |
| QGeoCoordinate(-40.0, 40.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped top left touch outside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(50.0, -50.0), |
| QGeoCoordinate(30.0, -30.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped top touch outside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(50.0, -10.0), |
| QGeoCoordinate(30.0, 10.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped top right touch outside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(50.0, 30.0), |
| QGeoCoordinate(30.0, 50.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped left touch outside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(10.0, -50.0), |
| QGeoCoordinate(-10.0, -30.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped right touch outside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(10.0, 30.0), |
| QGeoCoordinate(-10.0, 50.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped bottom left touch outside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-30.0, -30.0), |
| QGeoCoordinate(-50.0, -50.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped bottom touch outside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-30.0, -10.0), |
| QGeoCoordinate(-50.0, 10.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped bottom right touch outside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-30.0, 30.0), |
| QGeoCoordinate(-50.0, 50.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped top left touch inside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(10.0, -10.0)) |
| << true << true; |
| |
| QTest::newRow("non wrapped top touch inside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(30.0, -10.0), |
| QGeoCoordinate(10.0, 10.0)) |
| << true << true; |
| |
| QTest::newRow("non wrapped top right touch inside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(30.0, 10.0), |
| QGeoCoordinate(10.0, 30.0)) |
| << true << true; |
| |
| QTest::newRow("non wrapped left touch inside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(10.0, -30.0), |
| QGeoCoordinate(-10.0, -10.0)) |
| << true << true; |
| |
| QTest::newRow("non wrapped right touch inside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(10.0, 10.0), |
| QGeoCoordinate(-10.0, 30.0)) |
| << true << true; |
| |
| QTest::newRow("non wrapped bottom left touch inside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-10.0, -30.0), |
| QGeoCoordinate(-30.0, -10.0)) |
| << true << true; |
| |
| QTest::newRow("non wrapped bottom touch inside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-10.0, -10.0), |
| QGeoCoordinate(-30.0, 10.0)) |
| << true << true; |
| |
| QTest::newRow("non wrapped bottom right touch inside") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-10.0, 10.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << true << true; |
| |
| QTest::newRow("non wrapped top lon strip") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(40.0, -40.0), |
| QGeoCoordinate(20.0, 40.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped center lon strip") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(10.0, -40.0), |
| QGeoCoordinate(-10.0, 40.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped bottom lon strip") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(-20.0, -40.0), |
| QGeoCoordinate(-40.0, 40.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped left lat strip") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(40.0, -40.0), |
| QGeoCoordinate(-40.0, -20.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped center lat strip") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(40.0, -10.0), |
| QGeoCoordinate(-40.0, 10.0)) |
| << false << true; |
| |
| QTest::newRow("non wrapped right lat strip") |
| << b1 |
| << QGeoRectangle(QGeoCoordinate(40.0, 20.0), |
| QGeoCoordinate(-40.0, 40.0)) |
| << false << true; |
| |
| QGeoRectangle b2(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)); |
| |
| QTest::newRow("wrapped same") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << true << true; |
| |
| QTest::newRow("wrapped smaller") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(20.0, 160.0), |
| QGeoCoordinate(-20.0, -160.0)) |
| << true << true; |
| |
| QTest::newRow("wrapped larger") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(40.0, 140.0), |
| QGeoCoordinate(-40.0, -140.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped outside top") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(80.0, 150.0), |
| QGeoCoordinate(50.0, -150.0)) |
| << false << false; |
| |
| QTest::newRow("wrapped outside bottom") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-50.0, 150.0), |
| QGeoCoordinate(-80.0, -150.0)) |
| << false << false; |
| |
| QTest::newRow("wrapped outside left") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(30.0, 70.0), |
| QGeoCoordinate(-30.0, 130.0)) |
| << false << false; |
| |
| QTest::newRow("wrapped outside right") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(30.0, -130.0), |
| QGeoCoordinate(-30.0, -70.0)) |
| << false << false; |
| |
| QTest::newRow("wrapped top left cross") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(40.0, 140.0), |
| QGeoCoordinate(20.0, 160.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped top cross") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(40.0, 170.0), |
| QGeoCoordinate(20.0, -170.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped top right cross") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(40.0, -160.0), |
| QGeoCoordinate(20.0, -140.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped left cross") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(10.0, 140.0), |
| QGeoCoordinate(-10.0, 160.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped right cross") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(10.0, -160.0), |
| QGeoCoordinate(-10.0, -140.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped bottom left cross") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-20.0, 140.0), |
| QGeoCoordinate(-40.0, 160.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped bottom cross") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-20.0, 170.0), |
| QGeoCoordinate(-40.0, -170.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped bottom right cross") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-20.0, -160.0), |
| QGeoCoordinate(-40.0, -140.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped top left touch outside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(50.0, 130.0), |
| QGeoCoordinate(30.0, 150.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped top touch outside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(50.0, 170.0), |
| QGeoCoordinate(30.0, -170.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped top right touch outside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(50.0, -150.0), |
| QGeoCoordinate(30.0, -130.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped left touch outside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(10.0, 130.0), |
| QGeoCoordinate(-10.0, 150.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped right touch outside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(10.0, -150.0), |
| QGeoCoordinate(-10.0, -130.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped bottom left touch outside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-30.0, 150.0), |
| QGeoCoordinate(-50.0, 130.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped bottom touch outside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-30.0, 170.0), |
| QGeoCoordinate(-50.0, -170.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped bottom right touch outside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-30.0, -150.0), |
| QGeoCoordinate(-50.0, -130.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped top left touch inside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(10.0, 170.0)) |
| << true << true; |
| |
| QTest::newRow("wrapped top touch inside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(30.0, 170.0), |
| QGeoCoordinate(10.0, -170.0)) |
| << true << true; |
| |
| QTest::newRow("wrapped top right touch inside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(30.0, -170.0), |
| QGeoCoordinate(10.0, -150.0)) |
| << true << true; |
| |
| QTest::newRow("wrapped left touch inside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(10.0, 150.0), |
| QGeoCoordinate(-10.0, 170.0)) |
| << true << true; |
| |
| QTest::newRow("wrapped right touch inside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(10.0, -170.0), |
| QGeoCoordinate(-10.0, -150.0)) |
| << true << true; |
| |
| QTest::newRow("wrapped bottom left touch inside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-10.0, 150.0), |
| QGeoCoordinate(-30.0, 170.0)) |
| << true << true; |
| |
| QTest::newRow("wrapped bottom touch inside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-10.0, 170.0), |
| QGeoCoordinate(-30.0, -170.0)) |
| << true << true; |
| |
| QTest::newRow("wrapped bottom right touch inside") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-10.0, -170.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << true << true; |
| |
| QTest::newRow("wrapped top lon strip") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(40.0, 140.0), |
| QGeoCoordinate(20.0, -140.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped center lon strip") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(10.0, 140.0), |
| QGeoCoordinate(-10.0, -140.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped bottom lon strip") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(-20.0, 140.0), |
| QGeoCoordinate(-40.0, -140.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped left lat strip") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(40.0, 140.0), |
| QGeoCoordinate(-40.0, 160.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped center lat strip") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(40.0, 170.0), |
| QGeoCoordinate(-40.0, -170.0)) |
| << false << true; |
| |
| QTest::newRow("wrapped right lat strip") |
| << b2 |
| << QGeoRectangle(QGeoCoordinate(40.0, -160.0), |
| QGeoCoordinate(-40.0, -140.0)) |
| << false << true; |
| |
| QTest::newRow("north pole touching") |
| << QGeoRectangle(QGeoCoordinate(90.0, 20.0), |
| QGeoCoordinate(40.0, 40.0)) |
| << QGeoRectangle(QGeoCoordinate(90.0, 60.0), |
| QGeoCoordinate(30.0, 80.0)) |
| << false << true; |
| |
| QTest::newRow("south pole touching") |
| << QGeoRectangle(QGeoCoordinate(40.0, 20.0), |
| QGeoCoordinate(-90.0, 40.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 60.0), |
| QGeoCoordinate(-90.0, 80.0)) |
| << false << true; |
| } |
| |
| void tst_QGeoRectangle::translate() |
| { |
| QFETCH(QGeoRectangle, box); |
| QFETCH(double, degreesLatitude); |
| QFETCH(double, degreesLongitude); |
| QFETCH(QGeoRectangle, newBox); |
| |
| QGeoRectangle test = box.translated(degreesLatitude, degreesLongitude); |
| QCOMPARE(test, newBox); |
| box.translate(degreesLatitude, degreesLongitude); |
| QCOMPARE(box, newBox); |
| |
| } |
| |
| void tst_QGeoRectangle::translate_data() |
| { |
| QTest::addColumn<QGeoRectangle>("box"); |
| QTest::addColumn<double>("degreesLatitude"); |
| QTest::addColumn<double>("degreesLongitude"); |
| QTest::addColumn<QGeoRectangle>("newBox"); |
| |
| QTest::newRow("invalid") |
| << QGeoRectangle() |
| << 20.0 |
| << 20.0 |
| << QGeoRectangle(); |
| |
| QTest::newRow("360 width") |
| << QGeoRectangle(QGeoCoordinate(30.0, -180.0), |
| QGeoCoordinate(-30.0, 180.0)) |
| << 20.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(50.0, -180.0), |
| QGeoCoordinate(-10.0, 180.0)); |
| |
| QTest::newRow("180 height") |
| << QGeoRectangle(QGeoCoordinate(90.0, -30.0), |
| QGeoCoordinate(-90.0, 30.0)) |
| << 20.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, -10.0), |
| QGeoCoordinate(-90.0, 50.0)); |
| |
| QTest::newRow("non wrapping -> non wrapping") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << 20.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(50.0, -10.0), |
| QGeoCoordinate(-10.0, 50.0)); |
| |
| QTest::newRow("non wrapping -> wrapping") |
| << QGeoRectangle(QGeoCoordinate(30.0, 110.0), |
| QGeoCoordinate(-30.0, 170.0)) |
| << 20.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(50.0, 130.0), |
| QGeoCoordinate(-10.0, -170.0)); |
| |
| QTest::newRow("non wrapping -> north clip") |
| << QGeoRectangle(QGeoCoordinate(80.0, -30.0), |
| QGeoCoordinate(20.0, 30.0)) |
| << 20.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, -10.0), |
| QGeoCoordinate(30.0, 50.0)); |
| |
| QTest::newRow("non wrapping -> south clip") |
| << QGeoRectangle(QGeoCoordinate(-20.0, -30.0), |
| QGeoCoordinate(-80.0, 30.0)) |
| << -20.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(-30.0, -10.0), |
| QGeoCoordinate(-90.0, 50.0)); |
| |
| QTest::newRow("wrapping -> non wrapping") |
| << QGeoRectangle(QGeoCoordinate(30.0, 130.0), |
| QGeoCoordinate(-30.0, -170.0)) |
| << 20.0 |
| << -20.0 |
| << QGeoRectangle(QGeoCoordinate(50.0, 110.0), |
| QGeoCoordinate(-10.0, 170.0)); |
| |
| QTest::newRow("wrapping -> wrapping") |
| << QGeoRectangle(QGeoCoordinate(30.0, 130.0), |
| QGeoCoordinate(-30.0, -170.0)) |
| << 20.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(50.0, 150.0), |
| QGeoCoordinate(-10.0, -150.0)); |
| |
| QTest::newRow("wrapping -> north clip") |
| << QGeoRectangle(QGeoCoordinate(80.0, 130.0), |
| QGeoCoordinate(20.0, -170.0)) |
| << 20.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(90.0, 150.0), |
| QGeoCoordinate(30.0, -150.0)); |
| |
| QTest::newRow("wrapping -> south clip") |
| << QGeoRectangle(QGeoCoordinate(-20.0, 130.0), |
| QGeoCoordinate(-80.0, -170.0)) |
| << -20.0 |
| << 20.0 |
| << QGeoRectangle(QGeoCoordinate(-30.0, 150.0), |
| QGeoCoordinate(-90.0, -150.0)); |
| } |
| |
| void tst_QGeoRectangle::unite() |
| { |
| QFETCH(QGeoRectangle, in1); |
| QFETCH(QGeoRectangle, in2); |
| QFETCH(QGeoRectangle, out); |
| |
| QCOMPARE(in1.united(in2), out); |
| QCOMPARE(in2.united(in1), out); |
| |
| QCOMPARE(in1 | in2, out); |
| QCOMPARE(in2 | in1, out); |
| |
| QGeoRectangle united1 = QGeoRectangle(in1); |
| united1 |= in2; |
| QCOMPARE(united1, out); |
| |
| QGeoRectangle united2 = QGeoRectangle(in2); |
| united2 |= in1; |
| QCOMPARE(united2, out); |
| } |
| |
| void tst_QGeoRectangle::unite_data() |
| { |
| QTest::addColumn<QGeoRectangle>("in1"); |
| QTest::addColumn<QGeoRectangle>("in2"); |
| QTest::addColumn<QGeoRectangle>("out"); |
| |
| QTest::newRow("central and taller") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(50.0, -30.0), |
| QGeoCoordinate(-50.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(50.0, -30.0), |
| QGeoCoordinate(-50.0, 30.0)); |
| |
| QTest::newRow("central and 180 high") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(90.0, -30.0), |
| QGeoCoordinate(-90.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(90.0, -30.0), |
| QGeoCoordinate(-90.0, 30.0)); |
| |
| QTest::newRow("central and non overlapping higher") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(60.0, -30.0), |
| QGeoCoordinate(50.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(60.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)); |
| |
| QTest::newRow("central and overlapping higher") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(60.0, -30.0), |
| QGeoCoordinate(0.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(60.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)); |
| |
| QTest::newRow("central and touching higher") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(60.0, -30.0), |
| QGeoCoordinate(30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(60.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)); |
| |
| QTest::newRow("central and non overlapping lower") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(-50.0, -30.0), |
| QGeoCoordinate(-60.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-60.0, 30.0)); |
| |
| QTest::newRow("central and overlapping lower") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(0.0, -30.0), |
| QGeoCoordinate(-60.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-60.0, 30.0)); |
| |
| QTest::newRow("central and touching lower") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(-30.0, -30.0), |
| QGeoCoordinate(-60.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-60.0, 30.0)); |
| |
| QTest::newRow("non wrapping central and wider") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -50.0), |
| QGeoCoordinate(-30.0, 50.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -50.0), |
| QGeoCoordinate(-30.0, 50.0)); |
| |
| QTest::newRow("non wrapping central and 360 width") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -180.0), |
| QGeoCoordinate(-30.0, 180.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -180.0), |
| QGeoCoordinate(-30.0, 180.0)); |
| |
| QTest::newRow("non wrapping central and non overlapping non wrapping left") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -110.0), |
| QGeoCoordinate(-30.0, -50.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -110.0), |
| QGeoCoordinate(-30.0, 30.0)); |
| |
| QTest::newRow("non wrapping central and overlapping non wrapping left") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -80.0), |
| QGeoCoordinate(-30.0, -20.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -80.0), |
| QGeoCoordinate(-30.0, 30.0)); |
| |
| QTest::newRow("non wrapping central and touching non wrapping left") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -90.0), |
| QGeoCoordinate(-30.0, -30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -90.0), |
| QGeoCoordinate(-30.0, 30.0)); |
| |
| QTest::newRow("non wrapping central and non overlapping non wrapping right") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 50.0), |
| QGeoCoordinate(-30.0, 110.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 110.0)); |
| |
| QTest::newRow("non wrapping central and overlapping non wrapping right") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 20.0), |
| QGeoCoordinate(-30.0, 80.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 80.0)); |
| |
| QTest::newRow("non wrapping central and touching non wrapping right") |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 30.0), |
| QGeoCoordinate(-30.0, 90.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 90.0)); |
| |
| QTest::newRow("wrapping and wider") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 130.0), |
| QGeoCoordinate(-30.0, -130.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 130.0), |
| QGeoCoordinate(-30.0, -130.0)); |
| |
| QTest::newRow("wrapping and 360 width") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -180.0), |
| QGeoCoordinate(-30.0, 180.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -180.0), |
| QGeoCoordinate(-30.0, 180.0)); |
| |
| QTest::newRow("wrapping and non overlapping right") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -130.0), |
| QGeoCoordinate(-30.0, -70.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -70.0)); |
| |
| QTest::newRow("wrapping and overlapping right") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -160.0), |
| QGeoCoordinate(-30.0, -70.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -70.0)); |
| |
| QTest::newRow("wrapping and touching right") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -150.0), |
| QGeoCoordinate(-30.0, -90.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -90.0)); |
| |
| QTest::newRow("wrapping and non overlapping left") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 70.0), |
| QGeoCoordinate(-30.0, 130.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 70.0), |
| QGeoCoordinate(-30.0, -150.0)); |
| |
| QTest::newRow("wrapping and overlapping left") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 100.0), |
| QGeoCoordinate(-30.0, 160.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 100.0), |
| QGeoCoordinate(-30.0, -150.0)); |
| |
| QTest::newRow("wrapping and touching left") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 90.0), |
| QGeoCoordinate(-30.0, 150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 90.0), |
| QGeoCoordinate(-30.0, -150.0)); |
| |
| QTest::newRow("wrapping and non overlapping center") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -30.0), |
| QGeoCoordinate(-30.0, 30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -180.0), |
| QGeoCoordinate(-30.0, 180.0)); |
| |
| QTest::newRow("wrapping and overlapping center") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -160.0), |
| QGeoCoordinate(-30.0, 160.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -180.0), |
| QGeoCoordinate(-30.0, 180.0)); |
| |
| QTest::newRow("wrapping and touching center") |
| << QGeoRectangle(QGeoCoordinate(30.0, 150.0), |
| QGeoCoordinate(-30.0, -150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -150.0), |
| QGeoCoordinate(-30.0, 150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -180.0), |
| QGeoCoordinate(-30.0, 180.0)); |
| |
| QTest::newRow("wrapping and one containing other") |
| << QGeoRectangle(QGeoCoordinate(30.0, 40.0), |
| QGeoCoordinate(-30.0, -40.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, 170.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 40.0), |
| QGeoCoordinate(-30.0, -40.0)); |
| |
| QTest::newRow("small gap over zero line") |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, -10.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 10.0), |
| QGeoCoordinate(-30.0, 20.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, 20.0)); |
| |
| QTest::newRow("small gap before zero line") |
| << QGeoRectangle(QGeoCoordinate(30.0, -40.0), |
| QGeoCoordinate(-30.0, -30.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, -10.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -40.0), |
| QGeoCoordinate(-30.0, -10.0)); |
| |
| QTest::newRow("small gap after zero line") |
| << QGeoRectangle(QGeoCoordinate(30.0, 10.0), |
| QGeoCoordinate(-30.0, 20.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 30.0), |
| QGeoCoordinate(-30.0, 40.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 10.0), |
| QGeoCoordinate(-30.0, 40.0)); |
| |
| QTest::newRow("small gap over dateline") |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, 170.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -170.0), |
| QGeoCoordinate(-30.0, -160.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, -160.0)); |
| |
| QTest::newRow("small gap before dateline") |
| << QGeoRectangle(QGeoCoordinate(30.0, 140.0), |
| QGeoCoordinate(-30.0, 150.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, 170.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 140.0), |
| QGeoCoordinate(-30.0, 170.0)); |
| |
| QTest::newRow("small gap after dateline") |
| << QGeoRectangle(QGeoCoordinate(30.0, -170.0), |
| QGeoCoordinate(-30.0, -160.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -150.0), |
| QGeoCoordinate(-30.0, -140.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -170.0), |
| QGeoCoordinate(-30.0, -140.0)); |
| |
| QTest::newRow("90-degree inner gap over zero line") |
| << QGeoRectangle(QGeoCoordinate(30.0, -55.0), |
| QGeoCoordinate(-30.0, -45.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 45.0), |
| QGeoCoordinate(-30.0, 55.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -55.0), |
| QGeoCoordinate(-30.0, 55.0)); |
| |
| QTest::newRow("90-degree inner gap before zero line") |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, -10.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -65.0), |
| QGeoCoordinate(-30.0, -55.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -65.0), |
| QGeoCoordinate(-30.0, -10.0)); |
| |
| QTest::newRow("90-degree inner gap after zero line") |
| << QGeoRectangle(QGeoCoordinate(30.0, 65.0), |
| QGeoCoordinate(-30.0, 75.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 10.0), |
| QGeoCoordinate(-30.0, 20.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 10.0), |
| QGeoCoordinate(-30.0, 75.0)); |
| |
| QTest::newRow("90-degree inner gap over dateline") |
| << QGeoRectangle(QGeoCoordinate(30.0, 125.0), |
| QGeoCoordinate(-30.0, 135.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -135.0), |
| QGeoCoordinate(-30.0, -125.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 125.0), |
| QGeoCoordinate(-30.0, -125.0)); |
| |
| QTest::newRow("90-degree inner gap before dateline") |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, 170.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 50.0), |
| QGeoCoordinate(-30.0, 60.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 50.0), |
| QGeoCoordinate(-30.0, 170.0)); |
| |
| QTest::newRow("90-degree inner gap after dateline") |
| << QGeoRectangle(QGeoCoordinate(30.0, -170.0), |
| QGeoCoordinate(-30.0, -160.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -60.0), |
| QGeoCoordinate(-30.0, -50.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -170.0), |
| QGeoCoordinate(-30.0, -50.0)); |
| |
| QTest::newRow("180-degree inner gap centered on zero line") |
| << QGeoRectangle(QGeoCoordinate(30.0, -100.0), |
| QGeoCoordinate(-30.0, -90.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 90.0), |
| QGeoCoordinate(-30.0, 100.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 90.0), |
| QGeoCoordinate(-30.0, -90.0)); |
| |
| QTest::newRow("180-degree outer gap cenetered on zero line") |
| << QGeoRectangle(QGeoCoordinate(30.0, -90.0), |
| QGeoCoordinate(-30.0, -80.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 80.0), |
| QGeoCoordinate(-30.0, 90.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -90.0), |
| QGeoCoordinate(-30.0, 90.0)); |
| |
| QTest::newRow("180-degree shift centered on zero line") |
| << QGeoRectangle(QGeoCoordinate(30.0, -100.0), |
| QGeoCoordinate(-30.0, -80.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 80.0), |
| QGeoCoordinate(-30.0, 100.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -180.0), |
| QGeoCoordinate(-30.0, 180.0)); |
| |
| QTest::newRow("180-degree inner gap centered on dateline") |
| << QGeoRectangle(QGeoCoordinate(30.0, 80.0), |
| QGeoCoordinate(-30.0, 90.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -90.0), |
| QGeoCoordinate(-30.0, -80.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -90.0), |
| QGeoCoordinate(-30.0, 90.0)); |
| |
| QTest::newRow("180-degree outer gap centered on dateline") |
| << QGeoRectangle(QGeoCoordinate(30.0, 90.0), |
| QGeoCoordinate(-30.0, 100.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -100.0), |
| QGeoCoordinate(-30.0, -90.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, 90.0), |
| QGeoCoordinate(-30.0, -90.0)); |
| |
| QTest::newRow("180-degree shift centered on dateline") |
| << QGeoRectangle(QGeoCoordinate(30.0, 80.0), |
| QGeoCoordinate(-30.0, 100.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -100.0), |
| QGeoCoordinate(-30.0, -80.0)) |
| << QGeoRectangle(QGeoCoordinate(30.0, -180.0), |
| QGeoCoordinate(-30.0, 180.0)); |
| } |
| |
| |
| void tst_QGeoRectangle::extendRectangle() |
| { |
| QFETCH(QGeoRectangle, box); |
| QFETCH(QGeoCoordinate, coord); |
| QFETCH(QGeoRectangle, out); |
| |
| box.extendRectangle(coord); |
| QCOMPARE(box, out); |
| } |
| |
| void tst_QGeoRectangle::extendRectangle_data() |
| { |
| QTest::addColumn<QGeoRectangle>("box"); |
| QTest::addColumn<QGeoCoordinate>("coord"); |
| QTest::addColumn<QGeoRectangle>("out"); |
| |
| QTest::newRow("valid rect - invalid coordinate") |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, 20.0)) |
| << QGeoCoordinate(100.0, 190.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, 20)); |
| QTest::newRow("invalid rect - valid coordinate") |
| << QGeoRectangle() |
| << QGeoCoordinate(10.0, 10.0) |
| << QGeoRectangle(); |
| QTest::newRow("inside rect - not wrapped") |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, 20.0)) |
| << QGeoCoordinate(10.0, 10.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, 20)); |
| QTest::newRow("lat outside rect - not wrapped") |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, 20.0)) |
| << QGeoCoordinate(40.0, 10.0) |
| << QGeoRectangle(QGeoCoordinate(40.0, -20.0), |
| QGeoCoordinate(-30.0, 20)); |
| QTest::newRow("positive lon outside rect - not wrapped") |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, 20.0)) |
| << QGeoCoordinate(10.0, 40.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, 40)); |
| QTest::newRow("negative lon outside rect - not wrapped") |
| << QGeoRectangle(QGeoCoordinate(30.0, -20.0), |
| QGeoCoordinate(-30.0, 20.0)) |
| << QGeoCoordinate(10.0, -40.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, -40.0), |
| QGeoCoordinate(-30.0, 20.0)); |
| QTest::newRow("inside rect - wrapped") |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, -160.0)) |
| << QGeoCoordinate(10.0, -170.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, -160.0)); |
| QTest::newRow("lat outside rect - wrapped") |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, -160.0)) |
| << QGeoCoordinate(-40.0, -170.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-40.0, -160.0)); |
| QTest::newRow("positive lon outside rect - wrapped") |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, -160.0)) |
| << QGeoCoordinate(10.0, 140.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, 140.0), |
| QGeoCoordinate(-30.0, -160.0)); |
| QTest::newRow("negative lon outside rect - wrapped") |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, -160.0)) |
| << QGeoCoordinate(10.0, -140.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, 160.0), |
| QGeoCoordinate(-30.0, -140.0)); |
| QTest::newRow("extending over 180 degree line eastward") |
| << QGeoRectangle(QGeoCoordinate(30.0, 130.0), |
| QGeoCoordinate(-30.0, 160.0)) |
| << QGeoCoordinate(10.0, -170.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, 130.0), |
| QGeoCoordinate(-30.0, -170)); |
| QTest::newRow("extending over -180 degree line westward") |
| << QGeoRectangle(QGeoCoordinate(30.0, -160.0), |
| QGeoCoordinate(-30.0, -130.0)) |
| << QGeoCoordinate(10.0, 170.0) |
| << QGeoRectangle(QGeoCoordinate(30.0, 170.0), |
| QGeoCoordinate(-30.0, -130)); |
| } |
| |
| void tst_QGeoRectangle::areaComparison_data() |
| { |
| QTest::addColumn<QGeoShape>("area"); |
| QTest::addColumn<QGeoRectangle>("box"); |
| QTest::addColumn<bool>("equal"); |
| |
| QGeoRectangle b1(QGeoCoordinate(10.0, 0.0), QGeoCoordinate(0.0, 10.0)); |
| QGeoRectangle b2(QGeoCoordinate(20.0, 0.0), QGeoCoordinate(0.0, 20.0)); |
| QGeoCircle c(QGeoCoordinate(0.0, 0.0), 10); |
| |
| QTest::newRow("default constructed") << QGeoShape() << QGeoRectangle() << false; |
| QTest::newRow("b1 b1") << QGeoShape(b1) << b1 << true; |
| QTest::newRow("b1 b2") << QGeoShape(b1) << b2 << false; |
| QTest::newRow("b2 b1") << QGeoShape(b2) << b1 << false; |
| QTest::newRow("b2 b2") << QGeoShape(b2) << b2 << true; |
| QTest::newRow("c b1") << QGeoShape(c) << b1 << false; |
| } |
| |
| void tst_QGeoRectangle::areaComparison() |
| { |
| QFETCH(QGeoShape, area); |
| QFETCH(QGeoRectangle, box); |
| QFETCH(bool, equal); |
| |
| QCOMPARE((area == box), equal); |
| QCOMPARE((area != box), !equal); |
| |
| QCOMPARE((box == area), equal); |
| QCOMPARE((box != area), !equal); |
| } |
| |
| void tst_QGeoRectangle::circleComparison_data() |
| { |
| QTest::addColumn<QGeoCircle>("circle"); |
| QTest::addColumn<QGeoRectangle>("box"); |
| QTest::addColumn<bool>("equal"); |
| |
| QGeoRectangle b(QGeoCoordinate(10.0, 0.0), QGeoCoordinate(0.0, 10.0)); |
| QGeoCircle c(QGeoCoordinate(0.0, 0.0), 10); |
| |
| QTest::newRow("default constructed") << QGeoCircle() << QGeoRectangle() << false; |
| QTest::newRow("c b") << c << b << false; |
| } |
| |
| void tst_QGeoRectangle::circleComparison() |
| { |
| QFETCH(QGeoCircle, circle); |
| QFETCH(QGeoRectangle, box); |
| QFETCH(bool, equal); |
| |
| QCOMPARE((circle == box), equal); |
| QCOMPARE((circle != box), !equal); |
| |
| QCOMPARE((box == circle), equal); |
| QCOMPARE((box != circle), !equal); |
| } |
| |
| QTEST_MAIN(tst_QGeoRectangle) |
| #include "tst_qgeorectangle.moc" |
| |