[Ktutorial-commits] SF.net SVN: ktutorial:[160] trunk/ktutorial/ktutorial-editor
Status: Alpha
Brought to you by:
danxuliu
|
From: <dan...@us...> - 2010-03-16 02:12:09
|
Revision: 160
http://ktutorial.svn.sourceforge.net/ktutorial/?rev=160&view=rev
Author: danxuliu
Date: 2010-03-16 02:12:03 +0000 (Tue, 16 Mar 2010)
Log Message:
-----------
Fix crash when a reaction was saved and there was no WaitFor in the reaction or in the data to save.
Modified Paths:
--------------
trunk/ktutorial/ktutorial-editor/src/view/ReactionWidget.cpp
trunk/ktutorial/ktutorial-editor/tests/unit/view/ReactionWidgetTest.cpp
Modified: trunk/ktutorial/ktutorial-editor/src/view/ReactionWidget.cpp
===================================================================
--- trunk/ktutorial/ktutorial-editor/src/view/ReactionWidget.cpp 2010-03-16 00:16:31 UTC (rev 159)
+++ trunk/ktutorial/ktutorial-editor/src/view/ReactionWidget.cpp 2010-03-16 02:12:03 UTC (rev 160)
@@ -77,7 +77,8 @@
mReaction->setOptionName(ui->triggerOptionLineEdit->text());
}
- if (*mReaction->waitFor() != *mWaitForWidget->waitFor()) {
+ if (!mReaction->waitFor() || !mWaitForWidget->waitFor() ||
+ *mReaction->waitFor() != *mWaitForWidget->waitFor()) {
WaitFor* oldWaitFor = mReaction->waitFor();
mReaction->setWaitFor(mWaitForWidget->waitFor());
delete oldWaitFor;
Modified: trunk/ktutorial/ktutorial-editor/tests/unit/view/ReactionWidgetTest.cpp
===================================================================
--- trunk/ktutorial/ktutorial-editor/tests/unit/view/ReactionWidgetTest.cpp 2010-03-16 00:16:31 UTC (rev 159)
+++ trunk/ktutorial/ktutorial-editor/tests/unit/view/ReactionWidgetTest.cpp 2010-03-16 02:12:03 UTC (rev 160)
@@ -48,6 +48,7 @@
void testSelectResponseTypeCustomCode();
void testSaveChanges();
+ void testSaveChangesWithNoWaitFor();
private:
@@ -60,6 +61,7 @@
QRadioButton* responseCodeRadioButton(ReactionWidget* widget) const;
KTextEdit* responseCodeTextEdit(ReactionWidget* widget) const;
+ void addWaitForSignal(ReactionWidget* widget);
void addWaitForSignalToRootWaitFor(ReactionWidget* widget);
};
@@ -178,6 +180,23 @@
QCOMPARE(reaction.customCode(), QString("The custom code"));
}
+void ReactionWidgetTest::testSaveChangesWithNoWaitFor() {
+ Reaction reaction;
+ reaction.setTriggerType(Reaction::ConditionMet);
+
+ ReactionWidget widget(&reaction);
+
+ widget.saveChanges();
+
+ QCOMPARE(reaction.waitFor(), (WaitFor*)0);
+
+ addWaitForSignal(&widget);
+ widget.saveChanges();
+
+ QVERIFY(reaction.waitFor() != 0);
+ QVERIFY(qobject_cast<WaitForSignal*>(reaction.waitFor()));
+}
+
/////////////////////////////////// Helpers ////////////////////////////////////
QRadioButton* ReactionWidgetTest::triggerOptionRadioButton(
@@ -248,11 +267,7 @@
};
-void ReactionWidgetTest::addWaitForSignalToRootWaitFor(ReactionWidget* widget) {
- QTreeView* tree = widget->findChild<QTreeView*>("waitForTreeView");
- QModelIndex index = tree->model()->index(0, 0);
- tree->selectionModel()->select(index, QItemSelectionModel::SelectCurrent);
-
+void ReactionWidgetTest::addWaitForSignal(ReactionWidget* widget) {
AddWaitForSignalHelper* helper = new AddWaitForSignalHelper(widget, this);
//The dialog is modal, so it won't return to the test code until it is
@@ -263,6 +278,14 @@
widget->findChild<KPushButton*>("addButton")->click();
}
+void ReactionWidgetTest::addWaitForSignalToRootWaitFor(ReactionWidget* widget) {
+ QTreeView* tree = widget->findChild<QTreeView*>("waitForTreeView");
+ QModelIndex index = tree->model()->index(0, 0);
+ tree->selectionModel()->select(index, QItemSelectionModel::SelectCurrent);
+
+ addWaitForSignal(widget);
+}
+
QTEST_MAIN(ReactionWidgetTest)
#include "ReactionWidgetTest.moc"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|