From bc1808794db670432e5c98c1b94119748c808843 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 30 Jun 2021 13:54:19 +0200 Subject: tst_QMatrixNxN: fix type-punning warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... 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 Reviewed-by: Friedemann Kleint --- .../auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp | 46 +++++++--------------- 1 file changed, 14 insertions(+), 32 deletions(-) (limited to 'tests/auto/gui') 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("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(&m)->flagBits, flagBits); + QCOMPARE(m.flagBits, flagBits); } void tst_QMatrixNxN::columnsAndRows() -- cgit v1.2.3