From e8a53a5a3a4b3d8069e69eba7f96e1f0b47699b6 Mon Sep 17 00:00:00 2001
From: Mitch Curtis <mitch.curtis@digia.com>
Date: Thu, 21 Feb 2013 15:02:09 +0100
Subject: [PATCH] Add exclusiveGroup tests to RadioButton and CheckBox.

Change-Id: I677e21f7e53e5fe38429659e372b8994bfb143d1
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
---
 tests/auto/qtdesktop/data/tst_checkbox.qml    | 38 ++++++++++++++++++
 tests/auto/qtdesktop/data/tst_radiobutton.qml | 40 ++++++++++++++++++-
 2 files changed, 77 insertions(+), 1 deletion(-)

diff --git a/tests/auto/qtdesktop/data/tst_checkbox.qml b/tests/auto/qtdesktop/data/tst_checkbox.qml
index 203ba3aa5..8b4abedee 100644
--- a/tests/auto/qtdesktop/data/tst_checkbox.qml
+++ b/tests/auto/qtdesktop/data/tst_checkbox.qml
@@ -161,5 +161,43 @@ Item {
                 compare(checkBox.checkedState, expectedStates[i]);
             }
         }
+
+        function test_exclusiveGroup() {
+            var root = Qt.createQmlObject("import QtQuick 2.0; import QtDesktop 1.0; \n"
+                + "Row { \n"
+                + "    property alias checkBox1: checkBox1 \n"
+                + "    property alias checkBox2: checkBox2 \n"
+                + "    property alias group: group \n"
+                + "    ExclusiveGroup { id: group } \n"
+                + "    CheckBox { id: checkBox1; checked: true; exclusiveGroup: group } \n"
+                + "    CheckBox { id: checkBox2; exclusiveGroup: group } \n"
+                + "}", container, "");
+
+            compare(root.checkBox1.exclusiveGroup, root.group);
+            compare(root.checkBox2.exclusiveGroup, root.group);
+            compare(root.checkBox1.checked, true);
+            compare(root.checkBox2.checked, false);
+
+            root.forceActiveFocus();
+
+            signalSpy.target = root.checkBox2;
+            signalSpy.signalName = "clicked";
+            compare(signalSpy.count, 0);
+
+            mouseClick(root.checkBox2, root.checkBox2.x, root.checkBox2.y, Qt.LeftButton);
+            compare(signalSpy.count, 1);
+            compare(root.checkBox1.checked, false);
+            compare(root.checkBox2.checked, true);
+
+            signalSpy.clear();
+            signalSpy.target = root.checkBox1;
+            signalSpy.signalName = "clicked";
+            compare(signalSpy.count, 0);
+
+            mouseClick(root.checkBox1, root.checkBox1.x, root.checkBox1.y, Qt.LeftButton);
+            compare(signalSpy.count, 1);
+            compare(root.checkBox1.checked, true);
+            compare(root.checkBox2.checked, false);
+        }
     }
 }
diff --git a/tests/auto/qtdesktop/data/tst_radiobutton.qml b/tests/auto/qtdesktop/data/tst_radiobutton.qml
index 74c81dd97..ba4445db2 100644
--- a/tests/auto/qtdesktop/data/tst_radiobutton.qml
+++ b/tests/auto/qtdesktop/data/tst_radiobutton.qml
@@ -58,7 +58,7 @@ Item {
         }
 
         function init() {
-            radioButton = Qt.createQmlObject('import QtDesktop 1.0; RadioButton {}', container, '');
+            radioButton = Qt.createQmlObject("import QtDesktop 1.0; RadioButton {}", container, "");
         }
 
         function cleanup() {
@@ -131,5 +131,43 @@ Item {
                 compare(radioButton.checked, expectedStates[i]);
             }
         }
+
+        function test_exclusiveGroup() {
+            var root = Qt.createQmlObject("import QtQuick 2.0; import QtDesktop 1.0; \n"
+                + "Row { \n"
+                + "    property alias radioButton1: radioButton1 \n"
+                + "    property alias radioButton2: radioButton2 \n"
+                + "    property alias group: group \n"
+                + "    ExclusiveGroup { id: group } \n"
+                + "    RadioButton { id: radioButton1; checked: true; exclusiveGroup: group } \n"
+                + "    RadioButton { id: radioButton2; exclusiveGroup: group } \n"
+                + "}", container, "");
+
+            compare(root.radioButton1.exclusiveGroup, root.group);
+            compare(root.radioButton2.exclusiveGroup, root.group);
+            compare(root.radioButton1.checked, true);
+            compare(root.radioButton2.checked, false);
+
+            root.forceActiveFocus();
+
+            signalSpy.target = root.radioButton2;
+            signalSpy.signalName = "clicked";
+            compare(signalSpy.count, 0);
+
+            mouseClick(root.radioButton2, root.radioButton2.x, root.radioButton2.y, Qt.LeftButton);
+            compare(signalSpy.count, 1);
+            compare(root.radioButton1.checked, false);
+            compare(root.radioButton2.checked, true);
+
+            signalSpy.clear();
+            signalSpy.target = root.radioButton1;
+            signalSpy.signalName = "clicked";
+            compare(signalSpy.count, 0);
+
+            mouseClick(root.radioButton1, root.radioButton1.x, root.radioButton1.y, Qt.LeftButton);
+            compare(signalSpy.count, 1);
+            compare(root.radioButton1.checked, true);
+            compare(root.radioButton2.checked, false);
+        }
     }
 }
-- 
GitLab