[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdevplatform/veritas
From:       Manuel Breugelmans <mbr.nxi () gmail ! com>
Date:       2009-01-03 18:03:43
Message-ID: 1231005823.374871.26976.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 905114 by mbreugel:

Fix a defect that would wrongly restore check-state for sub-tests after a reload.



 M  +1 -1      internal/selectionstore.cpp  
 M  +5 -0      internal/test_p.cpp  
 M  +2 -0      internal/test_p.h  
 M  +38 -1     tests/selectionstoretest.cpp  
 M  +1 -0      tests/selectionstoretest.h  


--- trunk/KDE/kdevplatform/veritas/internal/selectionstore.cpp #905113:905114
@@ -48,7 +48,7 @@
         Q_ASSERT(m_store);
         kDebug() << t->name() << m_store->wasDeselected(t);
         if (m_store->wasDeselected(t)) {
-            t->internal()->unCheck();
+            t->internal()->unCheckNonRecursive();
         }
     }
     SelectionStore* m_store;
--- trunk/KDE/kdevplatform/veritas/internal/test_p.cpp #905113:905114
@@ -81,6 +81,11 @@
     }
 }
 
+void Test::Internal::unCheckNonRecursive()
+{
+    isChecked_ = false;
+}
+
 void Test::Internal::unCheck()
 {
     isChecked_ = false;
--- trunk/KDE/kdevplatform/veritas/internal/test_p.h #905113:905114
@@ -53,6 +53,8 @@
     void check();
     /*! Recursively lift check state */
     void unCheck();
+    /*! Uncheck only this test, not it's children */
+    void unCheckNonRecursive();
 
     bool isRunning() const;
     void setIsRunning(bool);
--- trunk/KDE/kdevplatform/veritas/tests/selectionstoretest.cpp #905113:905114
@@ -123,6 +123,11 @@
 
 void SelectionStoreTest::saveRecursive()
 {
+    /* child1      checked
+     * child2      not checked
+     *   - child21 not checked
+     */
+
     Test* child1 = new Test("test2", m_root);
     Test* child2 = new Test("test3", m_root);
     Test* child21 = new Test("test21", child2);
@@ -188,7 +193,7 @@
     KVERIFY(child1->internal()->isChecked());
     KVERIFY(!child2->internal()->isChecked());
     KVERIFY(!child21->internal()->isChecked());
-    KVERIFY(!child22->internal()->isChecked());
+    KVERIFY(child22->internal()->isChecked()); // newly added test, so checked
     KVERIFY(child3->internal()->isChecked());
 }
 
@@ -213,5 +218,37 @@
     delete root2;
 }
 
+void SelectionStoreTest::selectedChildDeselectedParent()
+{
+    /* parent       deselected
+     *   - child    selected
+     *
+     * First serialize the selection state of this test-tree
+     * then restore it. Parent should be deselected & child selected.
+     */
+    Test* parent = new Test("parent", m_root);
+    m_root->addChild(parent);
+    Test* child = new Test("child", parent);
+    parent->addChild(child);
+
+    parent->internal()->unCheck();
+    child->internal()->check();
+
+    m_store->saveTree(m_root);
+
+    // reset the tree
+    delete m_root;
+    m_root = new Test("root", 0);
+    parent = new Test("parent", m_root);
+    m_root->addChild(parent);
+    child = new Test("child", parent);
+    parent->addChild(child);
+
+    m_store->restoreTree(m_root);
+
+    KVERIFY(!parent->internal()->isChecked());
+    KVERIFY(child->internal()->isChecked());
+}
+
 QTEST_MAIN( SelectionStoreTest )
 #include "selectionstoretest.moc"
--- trunk/KDE/kdevplatform/veritas/tests/selectionstoretest.h #905113:905114
@@ -46,6 +46,7 @@
     void saveRecursive();
     void restoreRecursive();
     void ignoreRoot();
+    void selectedChildDeselectedParent();
 
 private:
     SelectionStore* m_store;
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic