Revision control

Copy as Markdown

// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtTest 1.0
import QtPositioning 6.2
Item {
id: testCase
property var topLeft: QtPositioning.coordinate(1.0, 2.0)
property var bottomRight: QtPositioning.coordinate(2.0, 1.0)
property var centerPoint: QtPositioning.coordinate(1.5, 1.5)
Location {
id: defaultConstructed
}
Location {
id: location
}
// Use property bindings insetead of signal spies
property var addressObserver: location.address
property int addressChangedCount: 0
onAddressObserverChanged: {
++addressChangedCount
}
property var coordObserver: location.coordinate
property int coordChangedCount: 0
onCoordObserverChanged: {
++coordChangedCount
}
property var shapeObserver: location.boundingShape
property int shapeChangedCount: 0
onShapeObserverChanged: {
++shapeChangedCount
}
property var attrsObserver: location.extendedAttributes
property int attrsChangedCount: 0
onAttrsObserverChanged: {
++attrsChangedCount
}
Address {
id: emptyAddress
}
Address {
id: addr1
country: "Germany"
city: "Berlin"
street: "Erich-Thilo-Str"
streetNumber: "10"
postalCode: "12489"
}
Location {
id: completeLocation
address: addr1
coordinate: centerPoint
boundingShape: QtPositioning.rectangle(topLeft, bottomRight)
}
Location {
id: fromGeoLocation
}
TestCase {
name: "DeclarativeGeoLocation"
function test_default_construction() {
compare(defaultConstructed.address.address, emptyAddress.address)
compare(defaultConstructed.coordinate, QtPositioning.coordinate())
compare(defaultConstructed.boundingShape, QtPositioning.shape())
}
function test_address_changed() {
addressChangedCount = 0
location.address = addr1
compare(addressChangedCount, 1)
compare(location.address.address, addr1.address)
}
function test_coordinate_changed() {
var coord1 = QtPositioning.coordinate(1.0, 2.0)
var emptyCoord = QtPositioning.coordinate()
coordChangedCount = 0
compare(location.coordinate, emptyCoord)
location.coordinate = coord1
compare(coordChangedCount, 1)
compare(location.coordinate, coord1)
}
function test_bounding_box_changed() {
var emptyShape = QtPositioning.shape()
shapeChangedCount = 0
compare(location.boundingShape, emptyShape)
var box = QtPositioning.rectangle(topLeft, bottomRight)
location.boundingShape = box
compare(shapeChangedCount, 1)
compare(QtPositioning.shapeToRectangle(location.boundingShape), box)
// verify that shape's boundingGeoRectangle() matches the box.
compare(location.boundingShape.boundingGeoRectangle(), box)
var circle = QtPositioning.circle(centerPoint, 100)
location.boundingShape = circle
compare(shapeChangedCount, 2)
compare(QtPositioning.shapeToCircle(location.boundingShape), circle)
}
function test_from_geolocation() {
fromGeoLocation.location = completeLocation.location
compare(fromGeoLocation.location, completeLocation.location)
compare(fromGeoLocation.address.address, completeLocation.address.address)
compare(fromGeoLocation.coordinate, completeLocation.coordinate)
compare(fromGeoLocation.boundingShape, completeLocation.boundingShape)
}
function test_extended_attributes() {
attrsChangedCount = 0
var attributes = { "foo" : 42 }
location.extendedAttributes = attributes;
compare(location.extendedAttributes, attributes)
compare(attrsChangedCount, 1)
attributes["bar"] = 41
verify(location.extendedAttributes !== attributes)
}
}
}