]> git.saurik.com Git - wxWidgets.git/commitdiff
Add a unit test checking selection updating in virtual wxListCtrl.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 13 Nov 2010 15:03:20 +0000 (15:03 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 13 Nov 2010 15:03:20 +0000 (15:03 +0000)
Verify that the selection is updated correctly after the number of items in
the control is decreased.

See #12378.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66141 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

tests/Makefile.in
tests/controls/virtlistctrltest.cpp [new file with mode: 0644]
tests/makefile.bcc
tests/makefile.gcc
tests/makefile.vc
tests/makefile.wat
tests/test.bkl
tests/test_test_gui.dsp
tests/test_vc7_test_gui.vcproj
tests/test_vc8_test_gui.vcproj
tests/test_vc9_test_gui.vcproj

index 3c0ec97cc25facf4a6d96de9412e8e655b51ea85..64b4e3ee6b3d383e1ede4e8a59211940dee4bdaa 100644 (file)
@@ -192,6 +192,7 @@ TEST_GUI_OBJECTS =  \
        test_gui_toolbooktest.o \
        test_gui_treebooktest.o \
        test_gui_treectrltest.o \
+       test_gui_virtlistctrltest.o \
        test_gui_windowtest.o \
        test_gui_clone.o \
        test_gui_propagation.o \
@@ -797,6 +798,9 @@ test_gui_treebooktest.o: $(srcdir)/controls/treebooktest.cpp $(TEST_GUI_ODEP)
 test_gui_treectrltest.o: $(srcdir)/controls/treectrltest.cpp $(TEST_GUI_ODEP)
        $(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/controls/treectrltest.cpp
 
+test_gui_virtlistctrltest.o: $(srcdir)/controls/virtlistctrltest.cpp $(TEST_GUI_ODEP)
+       $(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/controls/virtlistctrltest.cpp
+
 test_gui_windowtest.o: $(srcdir)/controls/windowtest.cpp $(TEST_GUI_ODEP)
        $(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/controls/windowtest.cpp
 
diff --git a/tests/controls/virtlistctrltest.cpp b/tests/controls/virtlistctrltest.cpp
new file mode 100644 (file)
index 0000000..ea04904
--- /dev/null
@@ -0,0 +1,92 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        tests/controls/virtlistctrltest.cpp
+// Purpose:     wxListCtrl unit tests for virtual mode
+// Author:      Vadim Zeitlin
+// Created:     2010-11-13
+// RCS-ID:      $Id$
+// Copyright:   (c) 2010 Vadim Zeitlin <vadim@wxwidgets.org>
+///////////////////////////////////////////////////////////////////////////////
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#include "testprec.h"
+
+#if wxUSE_LISTCTRL
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/app.h"
+#endif // WX_PRECOMP
+
+#include "wx/listctrl.h"
+
+// ----------------------------------------------------------------------------
+// test class
+// ----------------------------------------------------------------------------
+
+class VirtListCtrlTestCase : public CppUnit::TestCase
+{
+public:
+    VirtListCtrlTestCase() { }
+
+    virtual void setUp();
+    virtual void tearDown();
+
+private:
+    CPPUNIT_TEST_SUITE( VirtListCtrlTestCase );
+        CPPUNIT_TEST( UpdateSelection );
+    CPPUNIT_TEST_SUITE_END();
+
+    void UpdateSelection();
+
+    wxListCtrl *m_list;
+
+    wxDECLARE_NO_COPY_CLASS(VirtListCtrlTestCase);
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION( VirtListCtrlTestCase );
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( VirtListCtrlTestCase, "VirtListCtrlTestCase" );
+
+// ----------------------------------------------------------------------------
+// test initialization
+// ----------------------------------------------------------------------------
+
+void VirtListCtrlTestCase::setUp()
+{
+    m_list = new wxListCtrl(wxTheApp->GetTopWindow(), wxID_ANY,
+                            wxPoint(0, 0), wxSize(400, 200),
+                            wxLC_REPORT | wxLC_VIRTUAL);
+}
+
+void VirtListCtrlTestCase::tearDown()
+{
+    delete m_list;
+    m_list = NULL;
+}
+
+void VirtListCtrlTestCase::UpdateSelection()
+{
+    m_list->SetItemCount(10);
+    CPPUNIT_ASSERT_EQUAL( 0, m_list->GetSelectedItemCount() );
+
+    m_list->SetItemState(7, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
+    CPPUNIT_ASSERT_EQUAL( 1, m_list->GetSelectedItemCount() );
+
+    m_list->SetItemState(0, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
+    CPPUNIT_ASSERT_EQUAL( 2, m_list->GetSelectedItemCount() );
+
+    // The item 7 is now invalid and so shouldn't be counted as selected any
+    // more.
+    m_list->SetItemCount(5);
+    CPPUNIT_ASSERT_EQUAL( 1, m_list->GetSelectedItemCount() );
+}
+
+#endif // wxUSE_LISTCTRL
index a373da303de5d4330d66d8de4d26a8f3066776a9..c7f9b74cb05ff204422295b6f095fafb5df2be63 100644 (file)
@@ -177,6 +177,7 @@ TEST_GUI_OBJECTS =  \
        $(OBJS)\test_gui_toolbooktest.obj \\r
        $(OBJS)\test_gui_treebooktest.obj \\r
        $(OBJS)\test_gui_treectrltest.obj \\r
+       $(OBJS)\test_gui_virtlistctrltest.obj \\r
        $(OBJS)\test_gui_windowtest.obj \\r
        $(OBJS)\test_gui_clone.obj \\r
        $(OBJS)\test_gui_propagation.obj \\r
@@ -843,6 +844,9 @@ $(OBJS)\test_gui_treebooktest.obj: .\controls\treebooktest.cpp
 $(OBJS)\test_gui_treectrltest.obj: .\controls\treectrltest.cpp\r
        $(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\controls\treectrltest.cpp\r
 \r
+$(OBJS)\test_gui_virtlistctrltest.obj: .\controls\virtlistctrltest.cpp\r
+       $(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\controls\virtlistctrltest.cpp\r
+\r
 $(OBJS)\test_gui_windowtest.obj: .\controls\windowtest.cpp\r
        $(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\controls\windowtest.cpp\r
 \r
index 9d0b1550d388291da2d4d3e753d5b5897a741590..d5c284bff57e8a87fc9df7cc209b0fbc259a6b5d 100644 (file)
@@ -170,6 +170,7 @@ TEST_GUI_OBJECTS =  \
        $(OBJS)\test_gui_toolbooktest.o \\r
        $(OBJS)\test_gui_treebooktest.o \\r
        $(OBJS)\test_gui_treectrltest.o \\r
+       $(OBJS)\test_gui_virtlistctrltest.o \\r
        $(OBJS)\test_gui_windowtest.o \\r
        $(OBJS)\test_gui_clone.o \\r
        $(OBJS)\test_gui_propagation.o \\r
@@ -824,6 +825,9 @@ $(OBJS)\test_gui_treebooktest.o: ./controls/treebooktest.cpp
 $(OBJS)\test_gui_treectrltest.o: ./controls/treectrltest.cpp\r
        $(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<\r
 \r
+$(OBJS)\test_gui_virtlistctrltest.o: ./controls/virtlistctrltest.cpp\r
+       $(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<\r
+\r
 $(OBJS)\test_gui_windowtest.o: ./controls/windowtest.cpp\r
        $(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<\r
 \r
index f4aa014d926a63b268b1dcb91290d589d2298138..855214400330cd34aa2fdb775eabb7541db9f856 100644 (file)
@@ -172,6 +172,7 @@ TEST_GUI_OBJECTS =  \
        $(OBJS)\test_gui_toolbooktest.obj \\r
        $(OBJS)\test_gui_treebooktest.obj \\r
        $(OBJS)\test_gui_treectrltest.obj \\r
+       $(OBJS)\test_gui_virtlistctrltest.obj \\r
        $(OBJS)\test_gui_windowtest.obj \\r
        $(OBJS)\test_gui_clone.obj \\r
        $(OBJS)\test_gui_propagation.obj \\r
@@ -969,6 +970,9 @@ $(OBJS)\test_gui_treebooktest.obj: .\controls\treebooktest.cpp
 $(OBJS)\test_gui_treectrltest.obj: .\controls\treectrltest.cpp\r
        $(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\controls\treectrltest.cpp\r
 \r
+$(OBJS)\test_gui_virtlistctrltest.obj: .\controls\virtlistctrltest.cpp\r
+       $(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\controls\virtlistctrltest.cpp\r
+\r
 $(OBJS)\test_gui_windowtest.obj: .\controls\windowtest.cpp\r
        $(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\controls\windowtest.cpp\r
 \r
index 891c4615867d737ef8aef37a8160914c76f8fcd2..b3eb9730325b56508489ce9f4fbc8095e0f08d49 100644 (file)
@@ -412,6 +412,7 @@ TEST_GUI_OBJECTS =  &
        $(OBJS)\test_gui_toolbooktest.obj &\r
        $(OBJS)\test_gui_treebooktest.obj &\r
        $(OBJS)\test_gui_treectrltest.obj &\r
+       $(OBJS)\test_gui_virtlistctrltest.obj &\r
        $(OBJS)\test_gui_windowtest.obj &\r
        $(OBJS)\test_gui_clone.obj &\r
        $(OBJS)\test_gui_propagation.obj &\r
@@ -882,6 +883,9 @@ $(OBJS)\test_gui_treebooktest.obj :  .AUTODEPEND .\controls\treebooktest.cpp
 $(OBJS)\test_gui_treectrltest.obj :  .AUTODEPEND .\controls\treectrltest.cpp\r
        $(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<\r
 \r
+$(OBJS)\test_gui_virtlistctrltest.obj :  .AUTODEPEND .\controls\virtlistctrltest.cpp\r
+       $(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<\r
+\r
 $(OBJS)\test_gui_windowtest.obj :  .AUTODEPEND .\controls\windowtest.cpp\r
        $(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<\r
 \r
index bd04f82ab514133aa26590122d7ef721f64aa413..9b8f76833d19233a91e77eb55df0212b2e94a838 100644 (file)
             controls/toolbooktest.cpp
             controls/treebooktest.cpp
             controls/treectrltest.cpp
+            controls/virtlistctrltest.cpp
             controls/windowtest.cpp
             events/clone.cpp
             events/propagation.cpp
index b53a63b20db496a0e0dc9a88be34ad980221de6c..6b6b845b56bf70aa89f4c665ca0cde6144f7790a 100644 (file)
@@ -501,6 +501,10 @@ SOURCE=.\controls\treectrltest.cpp
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=.\controls\virtlistctrltest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=.\controls\windowtest.cpp\r
 # End Source File\r
 # Begin Source File\r
index 7e26320eb43f68243c8b0dc84d51ada07de2370e..4b506325a89fc6674ac3fc79ce22a8914967765e 100644 (file)
                        <File\r
                                RelativePath=".\controls\treectrltest.cpp">\r
                        </File>\r
+                       <File\r
+                               RelativePath=".\controls\virtlistctrltest.cpp">\r
+                       </File>\r
                        <File\r
                                RelativePath=".\controls\windowtest.cpp">\r
                        </File>\r
index 47043a7260a7768d9ea10012965b8f34dea9caf3..687e5e7e013f2496381bbbf14426a53870e82874 100644 (file)
                                RelativePath=".\controls\treectrltest.cpp"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath=".\controls\virtlistctrltest.cpp"\r
+                               >\r
+                       </File>\r
                        <File\r
                                RelativePath=".\controls\windowtest.cpp"\r
                                >\r
index 205cd7c09ff35399886855ea1b68199450a57829..939d0453af2af1b79fd779c81432d22e89ac42ca 100644 (file)
                                RelativePath=".\controls\treectrltest.cpp"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath=".\controls\virtlistctrltest.cpp"\r
+                               >\r
+                       </File>\r
                        <File\r
                                RelativePath=".\controls\windowtest.cpp"\r
                                >\r