From 194a56ea79a4aa11a01dda0491427bb5ba4b37fd Mon Sep 17 00:00:00 2001
From: Thiago Macieira <thiago.macieira@intel.com>
Date: Tue, 1 Dec 2015 17:44:34 -0800
Subject: [PATCH] QTest: Fix printing of values of Q_ENUMs

QMetaEnum::key(n) returns the n-th key, which is not necessarily the one
of value n. For the key of value n, we want QMetaEnum::valueToKey(n).

Change-Id: Ic90fe6b1cbe84978a02fffff141bf4a06074917a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
---
 src/testlib/qtestcase.h                                | 2 +-
 tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp   | 5 +++--
 tests/auto/testlib/selftests/expected_cmptest.lightxml | 4 ++--
 tests/auto/testlib/selftests/expected_cmptest.txt      | 4 ++--
 tests/auto/testlib/selftests/expected_cmptest.xml      | 4 ++--
 tests/auto/testlib/selftests/expected_cmptest.xunitxml | 4 ++--
 6 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h
index 9d79439e049..14ee0865eb4 100644
--- a/src/testlib/qtestcase.h
+++ b/src/testlib/qtestcase.h
@@ -238,7 +238,7 @@ namespace QTest
     inline typename QtPrivate::QEnableIf<QtPrivate::IsQEnumHelper<T>::Value, char*>::Type toString(T e)
     {
         QMetaEnum me = QMetaEnum::fromType<T>();
-        return qstrdup(me.key(int(e))); // int cast is necessary to support enum classes
+        return qstrdup(me.valueToKey(int(e))); // int cast is necessary to support enum classes
     }
 
     template <typename T> // Fallback
diff --git a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
index 6446fec5109..09a90508d33 100644
--- a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
+++ b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
@@ -156,8 +156,9 @@ void tst_Cmptest::compare_unregistered_enums()
 
 void tst_Cmptest::compare_registered_enums()
 {
-    QCOMPARE(Qt::ArrowCursor, Qt::ArrowCursor);
-    QCOMPARE(Qt::ArrowCursor, Qt::BusyCursor);
+    // use an enum that doesn't start at 0
+    QCOMPARE(Qt::Monday, Qt::Monday);
+    QCOMPARE(Qt::Monday, Qt::Sunday);
 }
 
 static bool boolfunc() { return true; }
diff --git a/tests/auto/testlib/selftests/expected_cmptest.lightxml b/tests/auto/testlib/selftests/expected_cmptest.lightxml
index 36929cec6bc..8f02e2e1ad1 100644
--- a/tests/auto/testlib/selftests/expected_cmptest.lightxml
+++ b/tests/auto/testlib/selftests/expected_cmptest.lightxml
@@ -16,8 +16,8 @@
 <TestFunction name="compare_registered_enums">
 <Incident type="fail" file="tst_cmptest.cpp" line="160">
     <Description><![CDATA[Compared values are not the same
-   Actual   (Qt::ArrowCursor): ArrowCursor
-   Expected (Qt::BusyCursor) : BusyCursor]]></Description>
+   Actual   (Qt::Monday): Monday
+   Expected (Qt::Sunday): Sunday]]></Description>
 </Incident>
     <Duration msecs="0"/>
 </TestFunction>
diff --git a/tests/auto/testlib/selftests/expected_cmptest.txt b/tests/auto/testlib/selftests/expected_cmptest.txt
index 70c54704f94..92056585090 100644
--- a/tests/auto/testlib/selftests/expected_cmptest.txt
+++ b/tests/auto/testlib/selftests/expected_cmptest.txt
@@ -4,8 +4,8 @@ PASS   : tst_Cmptest::initTestCase()
 FAIL!  : tst_Cmptest::compare_unregistered_enums() Compared values are not the same
    Loc: [tst_cmptest.cpp(154)]
 FAIL!  : tst_Cmptest::compare_registered_enums() Compared values are not the same
-   Actual   (Qt::ArrowCursor): ArrowCursor
-   Expected (Qt::BusyCursor) : BusyCursor
+   Actual   (Qt::Monday): Monday
+   Expected (Qt::Sunday): Sunday
    Loc: [tst_cmptest.cpp(160)]
 PASS   : tst_Cmptest::compare_boolfuncs()
 PASS   : tst_Cmptest::compare_pointerfuncs()
diff --git a/tests/auto/testlib/selftests/expected_cmptest.xml b/tests/auto/testlib/selftests/expected_cmptest.xml
index 9437e8e4b7c..55a97062276 100644
--- a/tests/auto/testlib/selftests/expected_cmptest.xml
+++ b/tests/auto/testlib/selftests/expected_cmptest.xml
@@ -18,8 +18,8 @@
 <TestFunction name="compare_registered_enums">
 <Incident type="fail" file="tst_cmptest.cpp" line="160">
     <Description><![CDATA[Compared values are not the same
-   Actual   (Qt::ArrowCursor): ArrowCursor
-   Expected (Qt::BusyCursor) : BusyCursor]]></Description>
+   Actual   (Qt::Monday): Monday
+   Expected (Qt::Sunday): Sunday]]></Description>
 </Incident>
     <Duration msecs="0"/>
 </TestFunction>
diff --git a/tests/auto/testlib/selftests/expected_cmptest.xunitxml b/tests/auto/testlib/selftests/expected_cmptest.xunitxml
index fa970d41726..c26f723cfc0 100644
--- a/tests/auto/testlib/selftests/expected_cmptest.xunitxml
+++ b/tests/auto/testlib/selftests/expected_cmptest.xunitxml
@@ -11,8 +11,8 @@
   </testcase>
   <testcase result="fail" name="compare_registered_enums">
     <failure message="Compared values are not the same
-   Actual   (Qt::ArrowCursor): ArrowCursor
-   Expected (Qt::BusyCursor) : BusyCursor" result="fail"/>
+   Actual   (Qt::Monday): Monday
+   Expected (Qt::Sunday): Sunday" result="fail"/>
   </testcase>
   <testcase result="pass" name="compare_boolfuncs"/>
   <testcase result="pass" name="compare_pointerfuncs"/>
-- 
GitLab