diff options
13 files changed, 461 insertions, 21 deletions
diff --git a/tests/auto/cpptest/q3dbars-modelproxy/q3dbars-modelproxy.pro b/tests/auto/cpptest/q3dbars-modelproxy/q3dbars-modelproxy.pro index b0b5d361..c383ec25 100644 --- a/tests/auto/cpptest/q3dbars-modelproxy/q3dbars-modelproxy.pro +++ b/tests/auto/cpptest/q3dbars-modelproxy/q3dbars-modelproxy.pro @@ -1,4 +1,4 @@ -QT += testlib datavisualization +QT += testlib datavisualization widgets TARGET = tst_cpptest CONFIG += console testcase diff --git a/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp index 9c54df53..b3661b91 100644 --- a/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp @@ -19,6 +19,8 @@ #include <QtTest/QtTest> #include <QtDataVisualization/QItemModelBarDataProxy> +#include <QtDataVisualization/Q3DBars> +#include <QtWidgets/QTableWidget> using namespace QtDataVisualization; @@ -36,7 +38,8 @@ private slots: void initialProperties(); void initializeProperties(); - void invalidProperties(); + + void multiMatch(); private: QItemModelBarDataProxy *m_proxy; @@ -70,15 +73,136 @@ void tst_proxy::construct() void tst_proxy::initialProperties() { QVERIFY(m_proxy); + + QCOMPARE(m_proxy->autoColumnCategories(), true); + QCOMPARE(m_proxy->autoRowCategories(), true); + QCOMPARE(m_proxy->columnCategories(), QStringList()); + QCOMPARE(m_proxy->columnRole(), QString()); + QCOMPARE(m_proxy->columnRolePattern(), QRegExp()); + QCOMPARE(m_proxy->columnRoleReplace(), QString()); + QVERIFY(!m_proxy->itemModel()); + QCOMPARE(m_proxy->multiMatchBehavior(), QItemModelBarDataProxy::MMBLast); + QCOMPARE(m_proxy->rotationRole(), QString()); + QCOMPARE(m_proxy->rotationRolePattern(), QRegExp()); + QCOMPARE(m_proxy->rotationRoleReplace(), QString()); + QCOMPARE(m_proxy->rowCategories(), QStringList()); + QCOMPARE(m_proxy->rowRole(), QString()); + QCOMPARE(m_proxy->rowRolePattern(), QRegExp()); + QCOMPARE(m_proxy->rowRoleReplace(), QString()); + QCOMPARE(m_proxy->useModelCategories(), false); + QCOMPARE(m_proxy->valueRole(), QString()); + QCOMPARE(m_proxy->valueRolePattern(), QRegExp()); + QCOMPARE(m_proxy->valueRoleReplace(), QString()); + + QCOMPARE(m_proxy->columnLabels().count(), 0); + QCOMPARE(m_proxy->rowCount(), 0); + QCOMPARE(m_proxy->rowLabels().count(), 0); + QVERIFY(!m_proxy->series()); + + QCOMPARE(m_proxy->type(), QAbstractDataProxy::DataTypeBar); } void tst_proxy::initializeProperties() { QVERIFY(m_proxy); + + QTableWidget *table = new QTableWidget(); + + m_proxy->setAutoColumnCategories(false); + m_proxy->setAutoRowCategories(false); + m_proxy->setColumnCategories(QStringList() << "col1" << "col2"); + m_proxy->setColumnRole("column"); + m_proxy->setColumnRolePattern(QRegExp("/^.*-(\\d\\d)$/")); + m_proxy->setColumnRoleReplace("\\\\1"); + m_proxy->setItemModel(table->model()); + m_proxy->setMultiMatchBehavior(QItemModelBarDataProxy::MMBAverage); + m_proxy->setRotationRole("rotation"); + m_proxy->setRotationRolePattern(QRegExp("/-/")); + m_proxy->setRotationRoleReplace("\\\\1"); + m_proxy->setRowCategories(QStringList() << "row1" << "row2"); + m_proxy->setRowRole("row"); + m_proxy->setRowRolePattern(QRegExp("/^(\\d\\d\\d\\d).*$/")); + m_proxy->setRowRoleReplace("\\\\1"); + m_proxy->setUseModelCategories(true); + m_proxy->setValueRole("value"); + m_proxy->setValueRolePattern(QRegExp("/-/")); + m_proxy->setValueRoleReplace("\\\\1"); + + QCOMPARE(m_proxy->autoColumnCategories(), false); + QCOMPARE(m_proxy->autoRowCategories(), false); + QCOMPARE(m_proxy->columnCategories().count(), 2); + QCOMPARE(m_proxy->columnRole(), QString("column")); + QCOMPARE(m_proxy->columnRolePattern(), QRegExp("/^.*-(\\d\\d)$/")); + QCOMPARE(m_proxy->columnRoleReplace(), QString("\\\\1")); + QVERIFY(m_proxy->itemModel()); + QCOMPARE(m_proxy->multiMatchBehavior(), QItemModelBarDataProxy::MMBAverage); + QCOMPARE(m_proxy->rotationRole(), QString("rotation")); + QCOMPARE(m_proxy->rotationRolePattern(), QRegExp("/-/")); + QCOMPARE(m_proxy->rotationRoleReplace(), QString("\\\\1")); + QCOMPARE(m_proxy->rowCategories().count(), 2); + QCOMPARE(m_proxy->rowRole(), QString("row")); + QCOMPARE(m_proxy->rowRolePattern(), QRegExp("/^(\\d\\d\\d\\d).*$/")); + QCOMPARE(m_proxy->rowRoleReplace(), QString("\\\\1")); + QCOMPARE(m_proxy->useModelCategories(), true); + QCOMPARE(m_proxy->valueRole(), QString("value")); + QCOMPARE(m_proxy->valueRolePattern(), QRegExp("/-/")); + QCOMPARE(m_proxy->valueRoleReplace(), QString("\\\\1")); } -void tst_proxy::invalidProperties() +void tst_proxy::multiMatch() { + Q3DBars *graph = new Q3DBars(); + + QTableWidget *table = new QTableWidget(); + QStringList rows; + rows << "row 1" << "row 2" << "row 3"; + QStringList columns; + columns << "col 1"; + const char *values[1][3] = {{"0/0/3.5/30", "0/0/5.0/30", "0/0/6.5/30"}}; + + table->setRowCount(1); + table->setColumnCount(3); + + for (int col = 0; col < columns.size(); col++) { + for (int row = 0; row < rows.size(); row++) { + QModelIndex index = table->model()->index(col, row); + table->model()->setData(index, values[col][row]); + } + } + + m_proxy->setItemModel(table->model()); + m_proxy->setRowRole(table->model()->roleNames().value(Qt::DisplayRole)); + m_proxy->setColumnRole(table->model()->roleNames().value(Qt::DisplayRole)); + m_proxy->setRowRolePattern(QRegExp(QStringLiteral("^(\\d*)\\/(\\d*)\\/\\d*[\\.\\,]?\\d*\\/\\d*[\\.\\,]?\\d*$"))); + m_proxy->setRowRoleReplace(QStringLiteral("\\2")); + m_proxy->setValueRolePattern(QRegExp(QStringLiteral("^\\d*(\\/)(\\d*)\\/(\\d*[\\.\\,]?\\d*)\\/\\d*[\\.\\,]?\\d*$"))); + m_proxy->setValueRoleReplace(QStringLiteral("\\3")); + m_proxy->setColumnRolePattern(QRegExp(QStringLiteral("^(\\d*)(\\/)(\\d*)\\/\\d*[\\.\\,]?\\d*\\/\\d*[\\.\\,]?\\d*$"))); + m_proxy->setColumnRoleReplace(QStringLiteral("\\1")); + + QBar3DSeries *series = new QBar3DSeries(m_proxy); + + graph->addSeries(series); + + QCoreApplication::processEvents(); + QCOMPARE(graph->valueAxis()->max(), 6.5f); + m_proxy->setMultiMatchBehavior(QItemModelBarDataProxy::MMBFirst); + QCoreApplication::processEvents(); + QCOMPARE(graph->valueAxis()->max(), 3.5f); + m_proxy->setMultiMatchBehavior(QItemModelBarDataProxy::MMBLast); + QCoreApplication::processEvents(); + QCOMPARE(graph->valueAxis()->max(), 6.5f); + m_proxy->setMultiMatchBehavior(QItemModelBarDataProxy::MMBAverage); + QCoreApplication::processEvents(); + QCOMPARE(graph->valueAxis()->max(), 5.0f); + m_proxy->setMultiMatchBehavior(QItemModelBarDataProxy::MMBCumulative); + QCoreApplication::processEvents(); + QCOMPARE(graph->valueAxis()->max(), 15.0f); + + QCOMPARE(m_proxy->columnLabels().count(), 1); + QCOMPARE(m_proxy->rowCount(), 1); + QCOMPARE(m_proxy->rowLabels().count(), 1); + QVERIFY(m_proxy->series()); } QTEST_MAIN(tst_proxy) diff --git a/tests/auto/cpptest/q3dbars-proxy/tst_proxy.cpp b/tests/auto/cpptest/q3dbars-proxy/tst_proxy.cpp index d152c46b..8d64ed54 100644 --- a/tests/auto/cpptest/q3dbars-proxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dbars-proxy/tst_proxy.cpp @@ -36,7 +36,6 @@ private slots: void initialProperties(); void initializeProperties(); - void invalidProperties(); private: QBarDataProxy *m_proxy; @@ -70,15 +69,28 @@ void tst_proxy::construct() void tst_proxy::initialProperties() { QVERIFY(m_proxy); + + QCOMPARE(m_proxy->columnLabels().count(), 0); + QCOMPARE(m_proxy->rowCount(), 0); + QCOMPARE(m_proxy->rowLabels().count(), 0); + QVERIFY(!m_proxy->series()); + + QCOMPARE(m_proxy->type(), QAbstractDataProxy::DataTypeBar); } void tst_proxy::initializeProperties() { QVERIFY(m_proxy); -} -void tst_proxy::invalidProperties() -{ + m_proxy->setColumnLabels(QStringList() << "1" << "2" << "3"); + QBarDataRow *data = new QBarDataRow; + *data << 1.0f << 3.0f << 7.5f; + m_proxy->addRow(data); + m_proxy->setRowLabels(QStringList() << "1"); + + QCOMPARE(m_proxy->columnLabels().count(), 3); + QCOMPARE(m_proxy->rowCount(), 1); + QCOMPARE(m_proxy->rowLabels().count(), 1); } QTEST_MAIN(tst_proxy) diff --git a/tests/auto/cpptest/q3dscatter-modelproxy/q3dscatter-modelproxy.pro b/tests/auto/cpptest/q3dscatter-modelproxy/q3dscatter-modelproxy.pro index b0b5d361..c383ec25 100644 --- a/tests/auto/cpptest/q3dscatter-modelproxy/q3dscatter-modelproxy.pro +++ b/tests/auto/cpptest/q3dscatter-modelproxy/q3dscatter-modelproxy.pro @@ -1,4 +1,4 @@ -QT += testlib datavisualization +QT += testlib datavisualization widgets TARGET = tst_cpptest CONFIG += console testcase diff --git a/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp index 7a4a78be..dcb0b1fb 100644 --- a/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp @@ -19,6 +19,8 @@ #include <QtTest/QtTest> #include <QtDataVisualization/QItemModelScatterDataProxy> +#include <QtDataVisualization/Q3DScatter> +#include <QtWidgets/QTableWidget> using namespace QtDataVisualization; @@ -36,7 +38,8 @@ private slots: void initialProperties(); void initializeProperties(); - void invalidProperties(); + + void addModel(); private: QItemModelScatterDataProxy *m_proxy; @@ -70,15 +73,98 @@ void tst_proxy::construct() void tst_proxy::initialProperties() { QVERIFY(m_proxy); + + QVERIFY(!m_proxy->itemModel()); + QCOMPARE(m_proxy->rotationRole(), QString()); + QCOMPARE(m_proxy->rotationRolePattern(), QRegExp()); + QCOMPARE(m_proxy->rotationRoleReplace(), QString()); + QCOMPARE(m_proxy->xPosRole(), QString()); + QCOMPARE(m_proxy->xPosRolePattern(), QRegExp()); + QCOMPARE(m_proxy->xPosRoleReplace(), QString()); + QCOMPARE(m_proxy->yPosRole(), QString()); + QCOMPARE(m_proxy->yPosRolePattern(), QRegExp()); + QCOMPARE(m_proxy->yPosRoleReplace(), QString()); + QCOMPARE(m_proxy->zPosRole(), QString()); + QCOMPARE(m_proxy->zPosRolePattern(), QRegExp()); + QCOMPARE(m_proxy->zPosRoleReplace(), QString()); + + QCOMPARE(m_proxy->itemCount(), 0); + QVERIFY(!m_proxy->series()); + + QCOMPARE(m_proxy->type(), QAbstractDataProxy::DataTypeScatter); } void tst_proxy::initializeProperties() { QVERIFY(m_proxy); + + QTableWidget *table = new QTableWidget(); + + m_proxy->setItemModel(table->model()); + m_proxy->setRotationRole("rotation"); + m_proxy->setRotationRolePattern(QRegExp("/-/")); + m_proxy->setRotationRoleReplace("\\\\1"); + m_proxy->setXPosRole("X"); + m_proxy->setXPosRolePattern(QRegExp("/-/")); + m_proxy->setXPosRoleReplace("\\\\1"); + m_proxy->setYPosRole("Y"); + m_proxy->setYPosRolePattern(QRegExp("/-/")); + m_proxy->setYPosRoleReplace("\\\\1"); + m_proxy->setZPosRole("Z"); + m_proxy->setZPosRolePattern(QRegExp("/-/")); + m_proxy->setZPosRoleReplace("\\\\1"); + + QVERIFY(m_proxy->itemModel()); + QCOMPARE(m_proxy->rotationRole(), QString("rotation")); + QCOMPARE(m_proxy->rotationRolePattern(), QRegExp("/-/")); + QCOMPARE(m_proxy->rotationRoleReplace(), QString("\\\\1")); + QCOMPARE(m_proxy->xPosRole(), QString("X")); + QCOMPARE(m_proxy->xPosRolePattern(), QRegExp("/-/")); + QCOMPARE(m_proxy->xPosRoleReplace(), QString("\\\\1")); + QCOMPARE(m_proxy->yPosRole(), QString("Y")); + QCOMPARE(m_proxy->yPosRolePattern(), QRegExp("/-/")); + QCOMPARE(m_proxy->yPosRoleReplace(), QString("\\\\1")); + QCOMPARE(m_proxy->zPosRole(), QString("Z")); + QCOMPARE(m_proxy->zPosRolePattern(), QRegExp("/-/")); + QCOMPARE(m_proxy->zPosRoleReplace(), QString("\\\\1")); } -void tst_proxy::invalidProperties() +void tst_proxy::addModel() { + QTableWidget *table = new QTableWidget(); + QStringList rows; + rows << "row 1"; + QStringList columns; + columns << "col 1"; + const char *values[1][2] = {{"0/0/5.5/30", "0/0/10.5/30"}}; + + table->setRowCount(2); + table->setColumnCount(1); + + for (int col = 0; col < columns.size(); col++) { + for (int row = 0; row < rows.size(); row++) { + QModelIndex index = table->model()->index(col, row); + table->model()->setData(index, values[col][row]); + } + } + + m_proxy->setItemModel(table->model()); + m_proxy->setXPosRole(table->model()->roleNames().value(Qt::DisplayRole)); + m_proxy->setZPosRole(table->model()->roleNames().value(Qt::DisplayRole)); + m_proxy->setXPosRolePattern(QRegExp(QStringLiteral("^(\\d*)\\/(\\d*)\\/\\d*[\\.\\,]?\\d*\\/\\d*[\\.\\,]?\\d*$"))); + m_proxy->setXPosRoleReplace(QStringLiteral("\\2")); + m_proxy->setYPosRolePattern(QRegExp(QStringLiteral("^\\d*(\\/)(\\d*)\\/(\\d*[\\.\\,]?\\d*)\\/\\d*[\\.\\,]?\\d*$"))); + m_proxy->setYPosRoleReplace(QStringLiteral("\\3")); + m_proxy->setZPosRolePattern(QRegExp(QStringLiteral("^(\\d*)(\\/)(\\d*)\\/\\d*[\\.\\,]?\\d*\\/\\d*[\\.\\,]?\\d*$"))); + m_proxy->setZPosRoleReplace(QStringLiteral("\\1")); + + QScatter3DSeries *series = new QScatter3DSeries(m_proxy); + Q_UNUSED(series) + + QCoreApplication::processEvents(); + + QCOMPARE(m_proxy->itemCount(), 2); + QVERIFY(m_proxy->series()); } QTEST_MAIN(tst_proxy) diff --git a/tests/auto/cpptest/q3dscatter-proxy/tst_proxy.cpp b/tests/auto/cpptest/q3dscatter-proxy/tst_proxy.cpp index 00bbadb4..436350dc 100644 --- a/tests/auto/cpptest/q3dscatter-proxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dscatter-proxy/tst_proxy.cpp @@ -36,7 +36,6 @@ private slots: void initialProperties(); void initializeProperties(); - void invalidProperties(); private: QScatterDataProxy *m_proxy; @@ -70,15 +69,22 @@ void tst_proxy::construct() void tst_proxy::initialProperties() { QVERIFY(m_proxy); + + QCOMPARE(m_proxy->itemCount(), 0); + QVERIFY(!m_proxy->series()); + + QCOMPARE(m_proxy->type(), QAbstractDataProxy::DataTypeScatter); } void tst_proxy::initializeProperties() { QVERIFY(m_proxy); -} -void tst_proxy::invalidProperties() -{ + QScatterDataArray data; + data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f); + m_proxy->addItems(data); + + QCOMPARE(m_proxy->itemCount(), 2); } QTEST_MAIN(tst_proxy) diff --git a/tests/auto/cpptest/q3dsurface-heightproxy/customtexture.jpg b/tests/auto/cpptest/q3dsurface-heightproxy/customtexture.jpg Binary files differnew file mode 100644 index 00000000..2580f5bd --- /dev/null +++ b/tests/auto/cpptest/q3dsurface-heightproxy/customtexture.jpg diff --git a/tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.pro b/tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.pro index b0b5d361..56a964d0 100644 --- a/tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.pro +++ b/tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.pro @@ -6,3 +6,6 @@ CONFIG += console testcase TEMPLATE = app SOURCES += tst_proxy.cpp + +RESOURCES += \ + q3dsurface-heightproxy.qrc diff --git a/tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.qrc b/tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.qrc new file mode 100644 index 00000000..b83c7ef9 --- /dev/null +++ b/tests/auto/cpptest/q3dsurface-heightproxy/q3dsurface-heightproxy.qrc @@ -0,0 +1,5 @@ +<RCC> + <qresource prefix="/"> + <file>customtexture.jpg</file> + </qresource> +</RCC> diff --git a/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp index cf896bbf..8e998568 100644 --- a/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp @@ -70,15 +70,72 @@ void tst_proxy::construct() void tst_proxy::initialProperties() { QVERIFY(m_proxy); + + QCOMPARE(m_proxy->heightMap(), QImage()); + QCOMPARE(m_proxy->heightMapFile(), QString("")); + QCOMPARE(m_proxy->maxXValue(), 10.0f); + QCOMPARE(m_proxy->maxZValue(), 10.0f); + QCOMPARE(m_proxy->minXValue(), 0.0f); + QCOMPARE(m_proxy->minZValue(), 0.0f); + + QCOMPARE(m_proxy->columnCount(), 0); + QCOMPARE(m_proxy->rowCount(), 0); + QVERIFY(!m_proxy->series()); + + QCOMPARE(m_proxy->type(), QAbstractDataProxy::DataTypeSurface); } void tst_proxy::initializeProperties() { QVERIFY(m_proxy); + + m_proxy->setHeightMapFile(":/customtexture.jpg"); + m_proxy->setMaxXValue(11.0f); + m_proxy->setMaxZValue(11.0f); + m_proxy->setMinXValue(-10.0f); + m_proxy->setMinZValue(-10.0f); + + QCoreApplication::processEvents(); + + QCOMPARE(m_proxy->heightMapFile(), QString(":/customtexture.jpg")); + QCOMPARE(m_proxy->maxXValue(), 11.0f); + QCOMPARE(m_proxy->maxZValue(), 11.0f); + QCOMPARE(m_proxy->minXValue(), -10.0f); + QCOMPARE(m_proxy->minZValue(), -10.0f); + + QCOMPARE(m_proxy->columnCount(), 24); + QCOMPARE(m_proxy->rowCount(), 24); + + m_proxy->setHeightMapFile(""); + + QCoreApplication::processEvents(); + + QCOMPARE(m_proxy->columnCount(), 0); + QCOMPARE(m_proxy->rowCount(), 0); + + m_proxy->setHeightMap(QImage(":/customtexture.jpg")); + + QCoreApplication::processEvents(); + + QCOMPARE(m_proxy->columnCount(), 24); + QCOMPARE(m_proxy->rowCount(), 24); } void tst_proxy::invalidProperties() { + m_proxy->setMaxXValue(-10.0f); + m_proxy->setMaxZValue(-10.0f); + QCOMPARE(m_proxy->maxXValue(), -10.0f); + QCOMPARE(m_proxy->maxZValue(), -10.0f); + QCOMPARE(m_proxy->minXValue(), -11.0f); + QCOMPARE(m_proxy->minZValue(), -11.0f); + + m_proxy->setMinXValue(10.0f); + m_proxy->setMinZValue(10.0f); + QCOMPARE(m_proxy->maxXValue(), 11.0f); + QCOMPARE(m_proxy->maxZValue(), 11.0f); + QCOMPARE(m_proxy->minXValue(), 10.0f); + QCOMPARE(m_proxy->minZValue(), 10.0f); } QTEST_MAIN(tst_proxy) diff --git a/tests/auto/cpptest/q3dsurface-modelproxy/q3dsurface-modelproxy.pro b/tests/auto/cpptest/q3dsurface-modelproxy/q3dsurface-modelproxy.pro index b0b5d361..c383ec25 100644 --- a/tests/auto/cpptest/q3dsurface-modelproxy/q3dsurface-modelproxy.pro +++ b/tests/auto/cpptest/q3dsurface-modelproxy/q3dsurface-modelproxy.pro @@ -1,4 +1,4 @@ -QT += testlib datavisualization +QT += testlib datavisualization widgets TARGET = tst_cpptest CONFIG += console testcase diff --git a/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp index c7c1dd83..f7311ca1 100644 --- a/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp @@ -19,6 +19,8 @@ #include <QtTest/QtTest> #include <QtDataVisualization/QItemModelSurfaceDataProxy> +#include <QtDataVisualization/Q3DSurface> +#include <QtWidgets/QTableWidget> using namespace QtDataVisualization; @@ -36,7 +38,8 @@ private slots: void initialProperties(); void initializeProperties(); - void invalidProperties(); + + void multiMatch(); private: QItemModelSurfaceDataProxy *m_proxy; @@ -70,15 +73,146 @@ void tst_proxy::construct() void tst_proxy::initialProperties() { QVERIFY(m_proxy); + + QCOMPARE(m_proxy->autoColumnCategories(), true); + QCOMPARE(m_proxy->autoRowCategories(), true); + QCOMPARE(m_proxy->columnCategories(), QStringList()); + QCOMPARE(m_proxy->columnRole(), QString()); + QCOMPARE(m_proxy->columnRolePattern(), QRegExp()); + QCOMPARE(m_proxy->columnRoleReplace(), QString()); + QVERIFY(!m_proxy->itemModel()); + QCOMPARE(m_proxy->multiMatchBehavior(), QItemModelSurfaceDataProxy::MMBLast); + QCOMPARE(m_proxy->rowCategories(), QStringList()); + QCOMPARE(m_proxy->rowRole(), QString()); + QCOMPARE(m_proxy->rowRolePattern(), QRegExp()); + QCOMPARE(m_proxy->rowRoleReplace(), QString()); + QCOMPARE(m_proxy->useModelCategories(), false); + QCOMPARE(m_proxy->xPosRole(), QString()); + QCOMPARE(m_proxy->xPosRolePattern(), QRegExp()); + QCOMPARE(m_proxy->xPosRoleReplace(), QString()); + QCOMPARE(m_proxy->yPosRole(), QString()); + QCOMPARE(m_proxy->yPosRolePattern(), QRegExp()); + QCOMPARE(m_proxy->yPosRoleReplace(), QString()); + QCOMPARE(m_proxy->zPosRole(), QString()); + QCOMPARE(m_proxy->zPosRolePattern(), QRegExp()); + QCOMPARE(m_proxy->zPosRoleReplace(), QString()); + + QCOMPARE(m_proxy->columnCount(), 0); + QCOMPARE(m_proxy->rowCount(), 0); + QVERIFY(!m_proxy->series()); + + QCOMPARE(m_proxy->type(), QAbstractDataProxy::DataTypeSurface); } void tst_proxy::initializeProperties() { QVERIFY(m_proxy); + + QTableWidget *table = new QTableWidget(); + + m_proxy->setAutoColumnCategories(false); + m_proxy->setAutoRowCategories(false); + m_proxy->setColumnCategories(QStringList() << "col1" << "col2"); + m_proxy->setColumnRole("column"); + m_proxy->setColumnRolePattern(QRegExp("/^.*-(\\d\\d)$/")); + m_proxy->setColumnRoleReplace("\\\\1"); + m_proxy->setItemModel(table->model()); + m_proxy->setMultiMatchBehavior(QItemModelSurfaceDataProxy::MMBAverage); + m_proxy->setRowCategories(QStringList() << "row1" << "row2"); + m_proxy->setRowRole("row"); + m_proxy->setRowRolePattern(QRegExp("/^(\\d\\d\\d\\d).*$/")); + m_proxy->setRowRoleReplace("\\\\1"); + m_proxy->setUseModelCategories(true); + m_proxy->setXPosRole("X"); + m_proxy->setXPosRolePattern(QRegExp("/-/")); + m_proxy->setXPosRoleReplace("\\\\1"); + m_proxy->setYPosRole("Y"); + m_proxy->setYPosRolePattern(QRegExp("/-/")); + m_proxy->setYPosRoleReplace("\\\\1"); + m_proxy->setZPosRole("Z"); + m_proxy->setZPosRolePattern(QRegExp("/-/")); + m_proxy->setZPosRoleReplace("\\\\1"); + + QCOMPARE(m_proxy->autoColumnCategories(), false); + QCOMPARE(m_proxy->autoRowCategories(), false); + QCOMPARE(m_proxy->columnCategories().count(), 2); + QCOMPARE(m_proxy->columnRole(), QString("column")); + QCOMPARE(m_proxy->columnRolePattern(), QRegExp("/^.*-(\\d\\d)$/")); + QCOMPARE(m_proxy->columnRoleReplace(), QString("\\\\1")); + QVERIFY(m_proxy->itemModel()); + QCOMPARE(m_proxy->multiMatchBehavior(), QItemModelSurfaceDataProxy::MMBAverage); + QCOMPARE(m_proxy->rowCategories().count(), 2); + QCOMPARE(m_proxy->rowRole(), QString("row")); + QCOMPARE(m_proxy->rowRolePattern(), QRegExp("/^(\\d\\d\\d\\d).*$/")); + QCOMPARE(m_proxy->rowRoleReplace(), QString("\\\\1")); + QCOMPARE(m_proxy->useModelCategories(), true); + QCOMPARE(m_proxy->xPosRole(), QString("X")); + QCOMPARE(m_proxy->xPosRolePattern(), QRegExp("/-/")); + QCOMPARE(m_proxy->xPosRoleReplace(), QString("\\\\1")); + QCOMPARE(m_proxy->yPosRole(), QString("Y")); + QCOMPARE(m_proxy->yPosRolePattern(), QRegExp("/-/")); + QCOMPARE(m_proxy->yPosRoleReplace(), QString("\\\\1")); + QCOMPARE(m_proxy->zPosRole(), QString("Z")); + QCOMPARE(m_proxy->zPosRolePattern(), QRegExp("/-/")); + QCOMPARE(m_proxy->zPosRoleReplace(), QString("\\\\1")); } -void tst_proxy::invalidProperties() +void tst_proxy::multiMatch() { + Q3DSurface *graph = new Q3DSurface(); + + QTableWidget *table = new QTableWidget(); + QStringList rows; + rows << "row 1" << "row 2"; + QStringList columns; + columns << "col 1" << "col 2" << "col 3" << "col 4"; + const char *values[4][2] = {{"0/0/5.5/30", "0/0/10.5/30"}, + {"0/1/5.5/30", "0/1/0.5/30"}, + {"1/0/5.5/30", "1/0/0.5/30"}, + {"1/1/0.0/30", "1/1/0.0/30"}}; + + table->setRowCount(2); + table->setColumnCount(4); + + for (int col = 0; col < columns.size(); col++) { + for (int row = 0; row < rows.size(); row++) { + QModelIndex index = table->model()->index(col, row); + table->model()->setData(index, values[col][row]); + } + } + + m_proxy->setItemModel(table->model()); + m_proxy->setRowRole(table->model()->roleNames().value(Qt::DisplayRole)); + m_proxy->setColumnRole(table->model()->roleNames().value(Qt::DisplayRole)); + m_proxy->setRowRolePattern(QRegExp(QStringLiteral("^(\\d*)\\/(\\d*)\\/\\d*[\\.\\,]?\\d*\\/\\d*[\\.\\,]?\\d*$"))); + m_proxy->setRowRoleReplace(QStringLiteral("\\2")); + m_proxy->setYPosRolePattern(QRegExp(QStringLiteral("^\\d*(\\/)(\\d*)\\/(\\d*[\\.\\,]?\\d*)\\/\\d*[\\.\\,]?\\d*$"))); + m_proxy->setYPosRoleReplace(QStringLiteral("\\3")); + m_proxy->setColumnRolePattern(QRegExp(QStringLiteral("^(\\d*)(\\/)(\\d*)\\/\\d*[\\.\\,]?\\d*\\/\\d*[\\.\\,]?\\d*$"))); + m_proxy->setColumnRoleReplace(QStringLiteral("\\1")); + + QSurface3DSeries *series = new QSurface3DSeries(m_proxy); + + graph->addSeries(series); + + QCoreApplication::processEvents(); + QCOMPARE(graph->axisY()->max(), 10.5f); + m_proxy->setMultiMatchBehavior(QItemModelSurfaceDataProxy::MMBFirst); + QCoreApplication::processEvents(); + QCOMPARE(graph->axisY()->max(), 5.5f); + m_proxy->setMultiMatchBehavior(QItemModelSurfaceDataProxy::MMBLast); + QCoreApplication::processEvents(); + QCOMPARE(graph->axisY()->max(), 10.5f); + m_proxy->setMultiMatchBehavior(QItemModelSurfaceDataProxy::MMBAverage); + QCoreApplication::processEvents(); + QCOMPARE(graph->axisY()->max(), 8.0f); + m_proxy->setMultiMatchBehavior(QItemModelSurfaceDataProxy::MMBCumulativeY); + QCoreApplication::processEvents(); + QCOMPARE(graph->axisY()->max(), 16.0f); + + QCOMPARE(m_proxy->columnCount(), 2); + QCOMPARE(m_proxy->rowCount(), 3); + QVERIFY(m_proxy->series()); } QTEST_MAIN(tst_proxy) diff --git a/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp b/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp index f4935f96..4274899d 100644 --- a/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp @@ -36,7 +36,6 @@ private slots: void initialProperties(); void initializeProperties(); - void invalidProperties(); private: QSurfaceDataProxy *m_proxy; @@ -70,15 +69,29 @@ void tst_proxy::construct() void tst_proxy::initialProperties() { QVERIFY(m_proxy); + + QCOMPARE(m_proxy->columnCount(), 0); + QCOMPARE(m_proxy->rowCount(), 0); + QVERIFY(!m_proxy->series()); + + QCOMPARE(m_proxy->type(), QAbstractDataProxy::DataTypeSurface); } void tst_proxy::initializeProperties() { QVERIFY(m_proxy); -} -void tst_proxy::invalidProperties() -{ + QSurfaceDataArray *data = new QSurfaceDataArray; + QSurfaceDataRow *dataRow1 = new QSurfaceDataRow; + QSurfaceDataRow *dataRow2 = new QSurfaceDataRow; + *dataRow1 << QVector3D(0.0f, 0.1f, 0.5f) << QVector3D(1.0f, 0.5f, 0.5f); + *dataRow2 << QVector3D(0.0f, 1.8f, 1.0f) << QVector3D(1.0f, 1.2f, 1.0f); + *data << dataRow1 << dataRow2; + + m_proxy->resetArray(data); + + QCOMPARE(m_proxy->columnCount(), 2); + QCOMPARE(m_proxy->rowCount(), 2); } QTEST_MAIN(tst_proxy) |