diff options
Diffstat (limited to 'tests/auto/gui/util/qtexturefilereader/tst_qtexturefilereader.cpp')
-rw-r--r-- | tests/auto/gui/util/qtexturefilereader/tst_qtexturefilereader.cpp | 79 |
1 files changed, 52 insertions, 27 deletions
diff --git a/tests/auto/gui/util/qtexturefilereader/tst_qtexturefilereader.cpp b/tests/auto/gui/util/qtexturefilereader/tst_qtexturefilereader.cpp index 6ff3497a74..62760e3844 100644 --- a/tests/auto/gui/util/qtexturefilereader/tst_qtexturefilereader.cpp +++ b/tests/auto/gui/util/qtexturefilereader/tst_qtexturefilereader.cpp @@ -1,30 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2018 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$ -** -****************************************************************************/ +// Copyright (C) 2018 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <private/qtexturefilereader_p.h> #include <QTest> @@ -36,6 +11,8 @@ class tst_qtexturefilereader : public QObject private slots: void checkHandlers_data(); void checkHandlers(); + void checkInvalid(); + void checkMetadata(); }; void tst_qtexturefilereader::checkHandlers_data() @@ -46,6 +23,7 @@ void tst_qtexturefilereader::checkHandlers_data() QTest::addColumn<quint32>("glInternalFormat"); QTest::addColumn<quint32>("glBaseInternalFormat"); QTest::addColumn<int>("levels"); + QTest::addColumn<int>("faces"); QTest::addColumn<QList<int>>("dataOffsets"); QTest::addColumn<QList<int>>("dataLengths"); @@ -56,6 +34,7 @@ void tst_qtexturefilereader::checkHandlers_data() << quint32(0x8d64) << quint32(0x0) << 1 + << 1 << (QList<int>() << 16) << (QList<int>() << 2048); @@ -66,6 +45,7 @@ void tst_qtexturefilereader::checkHandlers_data() << quint32(0x9278) << quint32(0x1908) << 1 + << 1 << (QList<int>() << 68) << (QList<int>() << 11840); @@ -76,9 +56,21 @@ void tst_qtexturefilereader::checkHandlers_data() << quint32(0x9274) << quint32(0x1907) << 8 + << 1 << (QList<int>() << 68 << 5992 << 7516 << 7880 << 8004 << 8056 << 8068 << 8080) << (QList<int>() << 5920 << 1520 << 360 << 120 << 48 << 8 << 8 << 8); + QTest::addRow("cubemap_float32_rgba.ktx") + << QStringLiteral(":/texturefiles/cubemap_float32_rgba.ktx") + << QSize(16, 16) + << quint32(0x1908) + << quint32(0x8814) + << quint32(0x1908) + << 5 + << 6 + << (QList<int>() << 96 << 24676 << 30824 << 32364 << 32752) + << (QList<int>() << 4096 << 1024 << 256 << 64 << 16); + QTest::addRow("newlogo.astc") << QStringLiteral(":/texturefiles/newlogo.astc") << QSize(111, 78) @@ -86,6 +78,7 @@ void tst_qtexturefilereader::checkHandlers_data() << quint32(0x93b9) << quint32(0x0) << 1 + << 1 << (QList<int>() << 16) << (QList<int>() << 2496); @@ -96,6 +89,7 @@ void tst_qtexturefilereader::checkHandlers_data() << quint32(0x93d9) << quint32(0x0) << 1 + << 1 << (QList<int>() << 16) << (QList<int>() << 2496); } @@ -107,6 +101,7 @@ void tst_qtexturefilereader::checkHandlers() QFETCH(quint32, glFormat); QFETCH(quint32, glInternalFormat); QFETCH(int, levels); + QFETCH(int, faces); QFETCH(QList<int>, dataOffsets); QFETCH(QList<int>, dataLengths); @@ -122,12 +117,42 @@ void tst_qtexturefilereader::checkHandlers() QCOMPARE(tex.glFormat(), glFormat); QCOMPARE(tex.glInternalFormat(), glInternalFormat); QCOMPARE(tex.numLevels(), levels); + QCOMPARE(tex.numFaces(), faces); + for (int i = 0; i < tex.numLevels(); i++) { QCOMPARE(tex.dataOffset(i), dataOffsets.at(i)); QCOMPARE(tex.dataLength(i), dataLengths.at(i)); } } +void tst_qtexturefilereader::checkMetadata() +{ + QFile f(":/texturefiles/cubemap_metadata.ktx"); + QVERIFY(f.open(QIODevice::ReadOnly)); + QTextureFileReader r(&f); + QTextureFileData d = r.read(); + auto kvs = d.keyValueMetadata(); + + QVERIFY(kvs.contains("test A")); + QVERIFY(kvs.contains("test B")); + QVERIFY(kvs.contains("test C")); + QCOMPARE(kvs.value("test A"), QByteArrayLiteral("1\x0000")); + QCOMPARE(kvs.value("test B"), QByteArrayLiteral("2\x0000")); + QCOMPARE(kvs.value("test C"), QByteArrayLiteral("3\x0000")); +} + +void tst_qtexturefilereader::checkInvalid() +{ + QFile f(":/texturefiles/invalid.ktx"); + QVERIFY(f.open(QIODevice::ReadOnly)); + QTextureFileReader r(&f); + QTextureFileData d = r.read(); + auto kvs = d.keyValueMetadata(); + + // Basically just checking that we don't crash on and invalid file + QVERIFY(kvs.empty()); +} + QTEST_MAIN(tst_qtexturefilereader) #include "tst_qtexturefilereader.moc" |