Revision control
Copy as Markdown
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.0
import QtDataVisualization
import QtTest 1.0
Item {
id: top
height: 150
width: 150
property var empty: null
property var basic: null
property var common: null
property var common_init: null
function constructEmpty() {
empty = Qt.createQmlObject("
import QtQuick
import QtDataVisualization
Bars3D {
}", top)
}
function constructBasic() {
basic = Qt.createQmlObject("
import QtQuick
import QtDataVisualization
Bars3D {
anchors.fill: parent
multiSeriesUniform: true
barThickness: 0.1
barSpacing.width: 0.1
barSpacing.height: 0.1
barSeriesMargin.width: 0.3
barSeriesMargin.height: 0.3
barSpacingRelative: false
floorLevel: 1.0
}", top)
basic.anchors.fill = top
}
function constructCommon() {
common = Qt.createQmlObject("
import QtQuick
import QtDataVisualization
Bars3D {
anchors.fill: parent
}", top)
common.anchors.fill = top
}
function constructCommonInit() {
common_init = Qt.createQmlObject("
import QtQuick
import QtDataVisualization
Bars3D {
anchors.fill: parent
selectionMode: AbstractGraph3D.SelectionNone
shadowQuality: AbstractGraph3D.ShadowQualityLow
msaaSamples: 2
theme: Theme3D { }
renderingMode: AbstractGraph3D.RenderIndirect
measureFps: true
orthoProjection: false
aspectRatio: 3.0
optimizationHints: AbstractGraph3D.OptimizationStatic
polar: false
radialLabelOffset: 2
horizontalAspectRatio: 0.2
reflection: true
reflectivity: 0.1
locale: Qt.locale(\"UK\")
margin: 0.2
}", top)
common_init.anchors.fill = top
}
TestCase {
name: "Bars3D Empty"
when: windowShown
function test_empty() {
constructEmpty()
compare(empty.width, 0, "width")
compare(empty.height, 0, "height")
compare(empty.multiSeriesUniform, false, "multiSeriesUniform")
compare(empty.barThickness, 1.0, "barThickness")
compare(empty.barSpacing, Qt.size(1.0, 1.0), "barSpacing")
compare(empty.barSeriesMargin, Qt.size(0.0, 0.0), "barSeriesMargin")
compare(empty.barSpacingRelative, true, "barSpacingRelative")
compare(empty.seriesList.length, 0, "seriesList")
compare(empty.selectedSeries, null, "selectedSeries")
compare(empty.primarySeries, null, "primarySeries")
compare(empty.floorLevel, 0.0, "floorLevel")
compare(empty.columnAxis.orientation, AbstractAxis3D.AxisOrientationX)
compare(empty.rowAxis.orientation, AbstractAxis3D.AxisOrientationZ)
compare(empty.valueAxis.orientation, AbstractAxis3D.AxisOrientationY)
compare(empty.columnAxis.type, AbstractAxis3D.AxisTypeCategory)
compare(empty.rowAxis.type, AbstractAxis3D.AxisTypeCategory)
compare(empty.valueAxis.type, AbstractAxis3D.AxisTypeValue)
waitForRendering(top)
}
}
TestCase {
name: "Bars3D Basic"
when: windowShown
function test_1_basic() {
constructBasic()
compare(basic.width, 150, "width")
compare(basic.height, 150, "height")
compare(basic.multiSeriesUniform, true, "multiSeriesUniform")
compare(basic.barThickness, 0.1, "barThickness")
compare(basic.barSpacing, Qt.size(0.1, 0.1), "barSpacing")
compare(basic.barSeriesMargin, Qt.size(0.3, 0.3), "barSeriesMargin")
compare(basic.barSpacingRelative, false, "barSpacingRelative")
compare(basic.floorLevel, 1.0, "floorLevel")
waitForRendering(top)
}
function test_2_basic_change() {
basic.multiSeriesUniform = false
basic.barThickness = 0.5
basic.barSpacing = Qt.size(1.0, 0.0)
basic.barSeriesMargin = Qt.size(0.5, 0.0)
basic.barSpacingRelative = true
basic.floorLevel = 0.2
compare(basic.multiSeriesUniform, false, "multiSeriesUniform")
compare(basic.barThickness, 0.5, "barThickness")
compare(basic.barSpacing, Qt.size(1.0, 0.0), "barSpacing")
compare(basic.barSeriesMargin, Qt.size(0.5, 0.0), "barSeriesMargin")
compare(basic.barSpacingRelative, true, "barSpacingRelative")
compare(basic.floorLevel, 0.2, "floorLevel")
waitForRendering(top)
}
function test_3_basic_change_invalid() {
basic.barThickness = -1
basic.barSpacing = Qt.size(-1.0, -1.0)
basic.barSeriesMargin = Qt.size(-1.0, -1.0)
compare(basic.barThickness, -1/*0.5*/, "barThickness") // TODO: Fix once QTRD-3367 is done
compare(basic.barSpacing, Qt.size(-1.0, -1.0), "barSpacing")
compare(basic.barSeriesMargin, Qt.size(-1.0, -1.0), "barSeriesMargin")
waitForRendering(top)
}
}
TestCase {
name: "Bars3D Common"
when: windowShown
function test_1_common() {
if (Qt.platform.os === "android")
return;
constructCommon()
if (common.shadowsSupported === false)
return;
compare(common.selectionMode, AbstractGraph3D.SelectionItem, "selectionMode")
compare(common.shadowQuality, AbstractGraph3D.ShadowQualityMedium, "shadowQuality")
compare(common.msaaSamples, 4, "msaaSamples")
compare(common.theme.type, Theme3D.ThemeQt, "theme")
compare(common.renderingMode, AbstractGraph3D.RenderIndirect, "renderingMode")
compare(common.measureFps, false, "measureFps")
compare(common.customItemList.length, 0, "customItemList")
compare(common.orthoProjection, false, "orthoProjection")
compare(common.selectedElement, AbstractGraph3D.ElementNone, "selectedElement")
compare(common.aspectRatio, 2.0, "aspectRatio")
compare(common.optimizationHints, AbstractGraph3D.OptimizationDefault, "optimizationHints")
compare(common.polar, false, "polar")
compare(common.radialLabelOffset, 1, "radialLabelOffset")
compare(common.horizontalAspectRatio, 0, "horizontalAspectRatio")
compare(common.reflection, false, "reflection")
compare(common.reflectivity, 0.5, "reflectivity")
compare(common.locale, Qt.locale("C"), "locale")
compare(common.queriedGraphPosition, Qt.vector3d(0, 0, 0), "queriedGraphPosition")
compare(common.margin, -1, "margin")
waitForRendering(top)
}
function test_2_change_common() {
if (Qt.platform.os === "android" || common.shadowsSupported === false)
return;
common.selectionMode = AbstractGraph3D.SelectionItem | AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionSlice
common.shadowQuality = AbstractGraph3D.ShadowQualitySoftHigh
common.msaaSamples = 8
compare(common.shadowQuality, AbstractGraph3D.ShadowQualitySoftHigh, "shadowQuality")
compare(common.msaaSamples, 8, "msaaSamples")
common.theme.type = Theme3D.ThemeRetro
common.renderingMode = AbstractGraph3D.RenderDirectToBackground_NoClear
common.measureFps = true
common.orthoProjection = true
common.aspectRatio = 1.0
common.optimizationHints = AbstractGraph3D.OptimizationStatic
common.polar = true
common.radialLabelOffset = 2
common.horizontalAspectRatio = 1
common.reflection = true
common.reflectivity = 1.0
common.locale = Qt.locale("FI")
common.margin = 1.0
compare(common.selectionMode, AbstractGraph3D.SelectionItem | AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionSlice, "selectionMode")
compare(common.shadowQuality, AbstractGraph3D.ShadowQualityNone, "shadowQuality") // Ortho disables shadows
compare(common.msaaSamples, 0, "msaaSamples") // Rendering mode changes this to zero
compare(common.theme.type, Theme3D.ThemeRetro, "theme")
compare(common.renderingMode, AbstractGraph3D.RenderDirectToBackground_NoClear, "renderingMode")
compare(common.measureFps, true, "measureFps")
compare(common.orthoProjection, true, "orthoProjection")
compare(common.aspectRatio, 1.0, "aspectRatio")
compare(common.optimizationHints, AbstractGraph3D.OptimizationStatic, "optimizationHints")
compare(common.polar, true, "polar")
compare(common.radialLabelOffset, 2, "radialLabelOffset")
compare(common.horizontalAspectRatio, 1, "horizontalAspectRatio")
compare(common.reflection, true, "reflection")
compare(common.reflectivity, 1.0, "reflectivity")
compare(common.locale, Qt.locale("FI"), "locale")
compare(common.margin, 1.0, "margin")
waitForRendering(top)
}
function test_3_change_invalid_common() {
if (Qt.platform.os === "android" || common.shadowsSupported === false)
return;
common.selectionMode = AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionColumn | AbstractGraph3D.SelectionSlice
common.theme.type = -2
common.renderingMode = -1
common.measureFps = false
common.orthoProjection = false
common.aspectRatio = -1.0
common.polar = false
common.horizontalAspectRatio = -2
common.reflection = false
common.reflectivity = -1.0
compare(common.selectionMode, AbstractGraph3D.SelectionItem | AbstractGraph3D.SelectionRow | AbstractGraph3D.SelectionSlice, "selectionMode")
compare(common.theme.type, Theme3D.ThemeRetro, "theme")
compare(common.renderingMode, AbstractGraph3D.RenderDirectToBackground_NoClear, "renderingMode")
compare(common.aspectRatio, 1.0, "aspectRatio")
compare(common.horizontalAspectRatio, 1.0, "horizontalAspectRatio")
compare(common.reflectivity, 1.0, "reflectivity")
waitForRendering(top)
}
}
TestCase {
name: "Bars3D Common Initialized"
when: windowShown
function test_1_common_initialized() {
if (Qt.platform.os === "android")
return;
constructCommonInit()
if (common_init.shadowsSupported === false) // This test is flaky on VM, use shadowsSupported to detect being run in VM
return;
compare(common_init.selectionMode, AbstractGraph3D.SelectionNone, "selectionMode")
tryCompare(common_init, "shadowQuality", AbstractGraph3D.ShadowQualityLow)
compare(common_init.msaaSamples, 2, "msaaSamples")
compare(common_init.theme.type, Theme3D.ThemeUserDefined, "theme")
compare(common_init.renderingMode, AbstractGraph3D.RenderIndirect, "renderingMode")
compare(common_init.measureFps, true, "measureFps")
compare(common_init.customItemList.length, 0, "customItemList")
compare(common_init.orthoProjection, false, "orthoProjection")
compare(common_init.aspectRatio, 3.0, "aspectRatio")
compare(common_init.optimizationHints, AbstractGraph3D.OptimizationStatic, "optimizationHints")
compare(common_init.polar, false, "polar")
compare(common_init.radialLabelOffset, 2, "radialLabelOffset")
compare(common_init.horizontalAspectRatio, 0.2, "horizontalAspectRatio")
compare(common_init.reflection, true, "reflection")
compare(common_init.reflectivity, 0.1, "reflectivity")
compare(common_init.locale, Qt.locale("UK"), "locale")
compare(common_init.margin, 0.2, "margin")
waitForRendering(top)
}
}
}