]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/controls/listboxtest.cpp
silence GCC warning "base class ‘class wxEvtHandler’ should be explicitly initialized...
[wxWidgets.git] / tests / controls / listboxtest.cpp
index 2accf43119afb8373540a1750f8b6d085f30da77..afab5f80ed62f08a7a66598ca572e512f0524f75 100644 (file)
@@ -72,7 +72,7 @@ private:
 // register in the unnamed registry so that these tests are run by default
 CPPUNIT_TEST_SUITE_REGISTRATION( ListBoxTestCase );
 
-// also include in it's own registry so that these tests can be run alone
+// also include in its own registry so that these tests can be run alone
 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ListBoxTestCase, "ListBoxTestCase" );
 
 //initialise the static variable
@@ -170,6 +170,12 @@ void ListBoxTestCase::MultipleSelect()
     CPPUNIT_ASSERT(!m_list->IsSelected(1));
     CPPUNIT_ASSERT(m_list->IsSelected(2));
     CPPUNIT_ASSERT(!m_list->IsSelected(3));
+
+    m_list->SetSelection(0);
+    m_list->SetSelection(wxNOT_FOUND);
+
+    m_list->GetSelections(selected);
+    CPPUNIT_ASSERT_EQUAL(0, selected.Count());
 }
 
 void ListBoxTestCase::ClickEvents()
@@ -178,8 +184,8 @@ void ListBoxTestCase::ClickEvents()
     wxTestableFrame* frame = wxStaticCast(wxTheApp->GetTopWindow(),
                                               wxTestableFrame);
 
-    EventCounter count(frame, wxEVT_COMMAND_LISTBOX_SELECTED);
-    EventCounter count1(frame, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED);
+    EventCounter selected(frame, wxEVT_COMMAND_LISTBOX_SELECTED);
+    EventCounter dclicked(frame, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED);
 
     wxUIActionSimulator sim;
 
@@ -199,12 +205,12 @@ void ListBoxTestCase::ClickEvents()
     sim.MouseClick();
     wxYield();
 
-    CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount());
+    CPPUNIT_ASSERT_EQUAL(1, selected.GetCount());
 
     sim.MouseDblClick();
     wxYield();
 
-    CPPUNIT_ASSERT_EQUAL(1, frame->GetEventCount());
+    CPPUNIT_ASSERT_EQUAL(1, dclicked.GetCount());
 #endif
 }
 
@@ -214,8 +220,8 @@ void ListBoxTestCase::ClickNotOnItem()
     wxTestableFrame* frame = wxStaticCast(wxTheApp->GetTopWindow(),
                                               wxTestableFrame);
 
-    EventCounter count(frame, wxEVT_COMMAND_LISTBOX_SELECTED);
-    EventCounter count1(frame, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED);
+    EventCounter selected(frame, wxEVT_COMMAND_LISTBOX_SELECTED);
+    EventCounter dclicked(frame, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED);
 
     wxUIActionSimulator sim;
 
@@ -226,6 +232,13 @@ void ListBoxTestCase::ClickNotOnItem()
 
     m_list->Append(testitems);
 
+    // It is important to set a valid selection: if the control doesn't have
+    // any, clicking anywhere in it, even outside of any item, selects the
+    // first item in the control under GTK resulting in a selection changed
+    // event. This is not a wx bug, just the native platform behaviour so
+    // simply avoid it by starting with a valid selection.
+    m_list->SetSelection(0);
+
     m_list->Update();
     m_list->Refresh();
 
@@ -239,7 +252,8 @@ void ListBoxTestCase::ClickNotOnItem()
     wxYield();
 
     //If we are not clicking on an item we shouldn't have any events
-    CPPUNIT_ASSERT_EQUAL(0, frame->GetEventCount());
+    CPPUNIT_ASSERT_EQUAL(0, selected.GetCount());
+    CPPUNIT_ASSERT_EQUAL(0, dclicked.GetCount());
 #endif
 }