summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/global/qfloat16
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-05-29 10:06:10 +0200
committerLiang Qi <liang.qi@qt.io>2017-05-29 10:54:41 +0200
commit6a772fd201ac738dc86e71bd82e98f65158e6335 (patch)
tree674007720f41d27b251bbcffd7a368a93f88eb96 /tests/auto/corelib/global/qfloat16
parent40206a9f6d7635bb19305d1c8d74908808e3529e (diff)
parent4c346b6e2bfab976bc9b16275b8382aee38aefa4 (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: .qmake.conf mkspecs/common/msvc-desktop.conf mkspecs/win32-g++/qmake.conf mkspecs/win32-icc/qmake.conf src/platformsupport/fontdatabases/mac/coretext.pri src/plugins/platforms/cocoa/qcocoawindow.h src/plugins/platforms/cocoa/qcocoawindow.mm Change-Id: I74a6f7705c9547ed8bbac7260eb4645543e32655
Diffstat (limited to 'tests/auto/corelib/global/qfloat16')
-rw-r--r--tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp59
1 files changed, 57 insertions, 2 deletions
diff --git a/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp b/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp
index 3ec863302e..9bd87e3f21 100644
--- a/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp
+++ b/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp
@@ -44,6 +44,8 @@ private slots:
void float_cast();
void float_cast_data();
void promotionTests();
+ void arithOps_data();
+ void arithOps();
};
void tst_qfloat16::fuzzyCompare_data()
@@ -198,8 +200,12 @@ void tst_qfloat16::float_cast()
{
QFETCH(float, val);
- QVERIFY(qFuzzyCompare(float(qfloat16(val)),val));
- QVERIFY(qFuzzyCompare(float(qfloat16(-val)),-val));
+ QVERIFY(qFuzzyCompare((float)(qfloat16(val)),val));
+ QVERIFY(qFuzzyCompare((float)(qfloat16(-val)),-val));
+ QVERIFY(qFuzzyCompare((double)(qfloat16(val)),(double)(val)));
+ QVERIFY(qFuzzyCompare((double)(qfloat16(-val)),(double)(-val)));
+ //QVERIFY(qFuzzyCompare((long double)(qfloat16(val)),(long double)(val)));
+ //QVERIFY(qFuzzyCompare((long double)(qfloat16(-val)),(long double)(-val)));
}
void tst_qfloat16::promotionTests()
@@ -248,6 +254,55 @@ void tst_qfloat16::promotionTests()
QCOMPARE(sizeof(double),sizeof(qfloat16(1.f)-1));
QCOMPARE(sizeof(double),sizeof(qfloat16(1.f)*1));
QCOMPARE(sizeof(double),sizeof(qfloat16(1.f)/1));
+
+ QCOMPARE(QString::number(1.f),QString::number(qfloat16(1.f)));
+}
+
+void tst_qfloat16::arithOps_data()
+{
+ QTest::addColumn<float>("val1");
+ QTest::addColumn<float>("val2");
+
+ QTest::newRow("zero") << 0.0f << 2.0f;
+ QTest::newRow("one") << 1.0f << 4.0f;
+ QTest::newRow("ten") << 10.0f << 20.0f;
+}
+
+void tst_qfloat16::arithOps()
+{
+ QFETCH(float, val1);
+ QFETCH(float, val2);
+
+ QVERIFY(qFuzzyCompare(float(qfloat16(val1) + qfloat16(val2)), val1 + val2));
+ QVERIFY(qFuzzyCompare(float(qfloat16(val1) - qfloat16(val2)), val1 - val2));
+ QVERIFY(qFuzzyCompare(float(qfloat16(val1) * qfloat16(val2)), val1 * val2));
+ QVERIFY(qFuzzyCompare(float(qfloat16(val1) / qfloat16(val2)), val1 / val2));
+
+ QVERIFY(qFuzzyCompare(qfloat16(val1) + val2, val1 + val2));
+ QVERIFY(qFuzzyCompare(qfloat16(val1) - val2, val1 - val2));
+ QVERIFY(qFuzzyCompare(qfloat16(val1) * val2, val1 * val2));
+ QVERIFY(qFuzzyCompare(qfloat16(val1) / val2, val1 / val2));
+
+ QVERIFY(qFuzzyCompare(val1 + qfloat16(val2), val1 + val2));
+ QVERIFY(qFuzzyCompare(val1 - qfloat16(val2), val1 - val2));
+ QVERIFY(qFuzzyCompare(val1 * qfloat16(val2), val1 * val2));
+ QVERIFY(qFuzzyCompare(val1 / qfloat16(val2), val1 / val2));
+
+ float r1 = 0.f;
+ r1 += qfloat16(val2);
+ QVERIFY(qFuzzyCompare(r1,val2));
+
+ float r2 = 0.f;
+ r2 -= qfloat16(val2);
+ QVERIFY(qFuzzyCompare(r2,-val2));
+
+ float r3 = 1.f;
+ r3 *= qfloat16(val2);
+ QVERIFY(qFuzzyCompare(r3,val2));
+
+ float r4 = 1.f;
+ r4 /= qfloat16(val2);
+ QVERIFY(qFuzzyCompare(r4,1.f/val2));
}
QTEST_APPLESS_MAIN(tst_qfloat16)