diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2021-06-30 13:54:19 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2021-06-30 23:13:28 +0200 |
commit | bc1808794db670432e5c98c1b94119748c808843 (patch) | |
tree | 0f16fca529b58f6f9641d4829357c0cb0ce7a9f3 | |
parent | 0ed1f8b54e42fc731eae302cdd1b06e955f01be9 (diff) |
tst_QMatrixNxN: fix type-punning warning
... by making the test class a friend of the CUT, as we do elsewhere
for the same reason.
This allows to remove the duplicated enum and struct in favor of using
The Real Thing™, which means the test can no longer go out of sync
with the CUT anymore.
Change-Id: I87dc8bb4a5476ae4fc99e006c4690e96d2f530d2
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
-rw-r--r-- | src/gui/math3d/qmatrix4x4.h | 4 | ||||
-rw-r--r-- | tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp | 46 |
2 files changed, 18 insertions, 32 deletions
diff --git a/src/gui/math3d/qmatrix4x4.h b/src/gui/math3d/qmatrix4x4.h index c077581a3e..15c5cabbf2 100644 --- a/src/gui/math3d/qmatrix4x4.h +++ b/src/gui/math3d/qmatrix4x4.h @@ -47,6 +47,8 @@ #include <QtGui/qgenericmatrix.h> #include <QtCore/qrect.h> +class tst_QMatrixNxN; + QT_BEGIN_NAMESPACE @@ -210,6 +212,8 @@ private: Flags flagBits; QMatrix4x4 orthonormalInverse() const; + + friend class ::tst_QMatrixNxN; // for access to flagBits }; Q_DECLARE_OPERATORS_FOR_FLAGS(QMatrix4x4::Flags) diff --git a/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp b/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp index 275c684815..972bbe2f1c 100644 --- a/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp +++ b/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp @@ -2871,24 +2871,6 @@ void tst_QMatrixNxN::convertGeneric() QVERIFY(isSame(m10, conv4x4)); } -// Copy of "flagBits" in qmatrix4x4.h. -enum { - Identity = 0x0000, // Identity matrix - Translation = 0x0001, // Contains a translation - Scale = 0x0002, // Contains a scale - Rotation2D = 0x0004, // Contains a rotation about the Z axis - Rotation = 0x0008, // Contains an arbitrary rotation - Perspective = 0x0010, // Last row is different from (0, 0, 0, 1) - General = 0x001f // General matrix, unknown contents -}; - -// Structure that allows direct access to "flagBits" for testing. -struct Matrix4x4 -{ - float m[4][4]; - int flagBits; -}; - // Test the inferring of special matrix types. void tst_QMatrixNxN::optimize_data() { @@ -2896,11 +2878,11 @@ void tst_QMatrixNxN::optimize_data() QTest::addColumn<int>("flagBits"); QTest::newRow("null") - << (void *)nullValues4 << (int)General; + << (void *)nullValues4 << int{QMatrix4x4::General}; QTest::newRow("identity") - << (void *)identityValues4 << (int)Identity; + << (void *)identityValues4 << int{QMatrix4x4::Identity}; QTest::newRow("unique") - << (void *)uniqueValues4 << (int)General; + << (void *)uniqueValues4 << int{QMatrix4x4::General}; static float scaleValues[16] = { 2.0f, 0.0f, 0.0f, 0.0f, @@ -2909,7 +2891,7 @@ void tst_QMatrixNxN::optimize_data() 0.0f, 0.0f, 0.0f, 1.0f }; QTest::newRow("scale") - << (void *)scaleValues << (int)Scale; + << (void *)scaleValues << int{QMatrix4x4::Scale}; static float translateValues[16] = { 1.0f, 0.0f, 0.0f, 2.0f, @@ -2918,7 +2900,7 @@ void tst_QMatrixNxN::optimize_data() 0.0f, 0.0f, 0.0f, 1.0f }; QTest::newRow("translate") - << (void *)translateValues << (int)Translation; + << (void *)translateValues << int{QMatrix4x4::Translation}; static float scaleTranslateValues[16] = { 1.0f, 0.0f, 0.0f, 2.0f, @@ -2927,7 +2909,7 @@ void tst_QMatrixNxN::optimize_data() 0.0f, 0.0f, 0.0f, 1.0f }; QTest::newRow("scaleTranslate") - << (void *)scaleTranslateValues << (int)(Scale | Translation); + << (void *)scaleTranslateValues << int{QMatrix4x4::Scale | QMatrix4x4::Translation}; static float rotateValues[16] = { 0.0f, 1.0f, 0.0f, 0.0f, @@ -2936,7 +2918,7 @@ void tst_QMatrixNxN::optimize_data() 0.0f, 0.0f, 0.0f, 1.0f }; QTest::newRow("rotate") - << (void *)rotateValues << (int)Rotation2D; + << (void *)rotateValues << int{QMatrix4x4::Rotation2D}; // Left-handed system, not a simple rotation. static float scaleRotateValues[16] = { @@ -2946,7 +2928,7 @@ void tst_QMatrixNxN::optimize_data() 0.0f, 0.0f, 0.0f, 1.0f }; QTest::newRow("scaleRotate") - << (void *)scaleRotateValues << (int)(Scale | Rotation2D); + << (void *)scaleRotateValues << int{QMatrix4x4::Scale | QMatrix4x4::Rotation2D}; static float matrix2x2Values[16] = { 1.0f, 2.0f, 0.0f, 0.0f, @@ -2955,7 +2937,7 @@ void tst_QMatrixNxN::optimize_data() 0.0f, 0.0f, 0.0f, 1.0f }; QTest::newRow("matrix2x2") - << (void *)matrix2x2Values << (int)(Scale | Rotation2D); + << (void *)matrix2x2Values << int{QMatrix4x4::Scale | QMatrix4x4::Rotation2D}; static float matrix3x3Values[16] = { 1.0f, 2.0f, 4.0f, 0.0f, @@ -2964,7 +2946,7 @@ void tst_QMatrixNxN::optimize_data() 0.0f, 0.0f, 0.0f, 1.0f }; QTest::newRow("matrix3x3") - << (void *)matrix3x3Values << (int)(Scale | Rotation2D | Rotation); + << (void *)matrix3x3Values << int{QMatrix4x4::Scale | QMatrix4x4::Rotation2D | QMatrix4x4::Rotation}; static float rotateTranslateValues[16] = { 0.0f, 1.0f, 0.0f, 1.0f, @@ -2973,7 +2955,7 @@ void tst_QMatrixNxN::optimize_data() 0.0f, 0.0f, 0.0f, 1.0f }; QTest::newRow("rotateTranslate") - << (void *)rotateTranslateValues << (int)(Translation | Rotation2D); + << (void *)rotateTranslateValues << int{QMatrix4x4::Translation | QMatrix4x4::Rotation2D}; // Left-handed system, not a simple rotation. static float scaleRotateTranslateValues[16] = { @@ -2983,7 +2965,7 @@ void tst_QMatrixNxN::optimize_data() 0.0f, 0.0f, 0.0f, 1.0f }; QTest::newRow("scaleRotateTranslate") - << (void *)scaleRotateTranslateValues << (int)(Translation | Scale | Rotation2D); + << (void *)scaleRotateTranslateValues << int{QMatrix4x4::Translation | QMatrix4x4::Scale | QMatrix4x4::Rotation2D}; static float belowValues[16] = { 1.0f, 0.0f, 0.0f, 0.0f, @@ -2992,7 +2974,7 @@ void tst_QMatrixNxN::optimize_data() 4.0f, 0.0f, 0.0f, 1.0f }; QTest::newRow("below") - << (void *)belowValues << (int)General; + << (void *)belowValues << int{QMatrix4x4::General}; } void tst_QMatrixNxN::optimize() { @@ -3002,7 +2984,7 @@ void tst_QMatrixNxN::optimize() QMatrix4x4 m((const float *)mValues); m.optimize(); - QCOMPARE(reinterpret_cast<Matrix4x4 *>(&m)->flagBits, flagBits); + QCOMPARE(m.flagBits, flagBits); } void tst_QMatrixNxN::columnsAndRows() |