| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: tests/controls/dataviewctrltest.cpp
- // Purpose: wxDataViewCtrl unit test
- // Author: Vaclav Slavik
- // Created: 2011-08-08
- // Copyright: (c) 2011 Vaclav Slavik <vslavik@gmail.com>
- ///////////////////////////////////////////////////////////////////////////////
- // ----------------------------------------------------------------------------
- // headers
- // ----------------------------------------------------------------------------
- #include "testprec.h"
- #if wxUSE_DATAVIEWCTRL
- #ifdef __BORLANDC__
- #pragma hdrstop
- #endif
- #include "wx/app.h"
- #include "wx/dataview.h"
- #include "testableframe.h"
- // ----------------------------------------------------------------------------
- // test class
- // ----------------------------------------------------------------------------
- class DataViewCtrlTestCase : public CppUnit::TestCase
- {
- public:
- DataViewCtrlTestCase() { }
- virtual void setUp();
- virtual void tearDown();
- private:
- CPPUNIT_TEST_SUITE( DataViewCtrlTestCase );
- CPPUNIT_TEST( DeleteSelected );
- CPPUNIT_TEST( DeleteNotSelected );
- CPPUNIT_TEST( GetSelectionForMulti );
- CPPUNIT_TEST( GetSelectionForSingle );
- CPPUNIT_TEST_SUITE_END();
- // Create wxDataViewTreeCtrl with the given style.
- void Create(long style);
- void DeleteSelected();
- void DeleteNotSelected();
- void GetSelectionForMulti();
- void GetSelectionForSingle();
- void TestSelectionFor0and1();
- // the dataview control itself
- wxDataViewTreeCtrl *m_dvc;
- // and some of its items
- wxDataViewItem m_root,
- m_child1,
- m_child2,
- m_grandchild;
- DECLARE_NO_COPY_CLASS(DataViewCtrlTestCase)
- };
- // register in the unnamed registry so that these tests are run by default
- CPPUNIT_TEST_SUITE_REGISTRATION( DataViewCtrlTestCase );
- // also include in its own registry so that these tests can be run alone
- CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( DataViewCtrlTestCase, "DataViewCtrlTestCase" );
- // ----------------------------------------------------------------------------
- // test initialization
- // ----------------------------------------------------------------------------
- void DataViewCtrlTestCase::Create(long style)
- {
- m_dvc = new wxDataViewTreeCtrl(wxTheApp->GetTopWindow(),
- wxID_ANY,
- wxDefaultPosition,
- wxSize(400, 200),
- style);
- m_root = m_dvc->AppendContainer(wxDataViewItem(), "The root");
- m_child1 = m_dvc->AppendContainer(m_root, "child1");
- m_grandchild = m_dvc->AppendItem(m_child1, "grandchild");
- m_child2 = m_dvc->AppendItem(m_root, "child2");
- m_dvc->SetSize(400, 200);
- m_dvc->ExpandAncestors(m_root);
- m_dvc->Refresh();
- m_dvc->Update();
- }
- void DataViewCtrlTestCase::setUp()
- {
- Create(wxDV_MULTIPLE);
- }
- void DataViewCtrlTestCase::tearDown()
- {
- delete m_dvc;
- m_dvc = NULL;
- m_root =
- m_child1 =
- m_child2 =
- m_grandchild = wxDataViewItem();
- }
- // ----------------------------------------------------------------------------
- // the tests themselves
- // ----------------------------------------------------------------------------
- void DataViewCtrlTestCase::DeleteSelected()
- {
- wxDataViewItemArray sel;
- sel.push_back(m_child1);
- sel.push_back(m_grandchild);
- sel.push_back(m_child2);
- m_dvc->SetSelections(sel);
- // delete a selected item
- m_dvc->DeleteItem(m_child1);
- m_dvc->GetSelections(sel);
- // m_child1 and its children should be removed from the selection now
- CPPUNIT_ASSERT_EQUAL( 1, sel.size() );
- CPPUNIT_ASSERT( sel[0] == m_child2 );
- }
- void DataViewCtrlTestCase::DeleteNotSelected()
- {
- // TODO not working on OS X as expected
- #ifndef __WXOSX__
- wxDataViewItemArray sel;
- sel.push_back(m_child1);
- sel.push_back(m_grandchild);
- m_dvc->SetSelections(sel);
- // delete unselected item
- m_dvc->DeleteItem(m_child2);
- m_dvc->GetSelections(sel);
- // m_child1 and its children should be unaffected
- CPPUNIT_ASSERT_EQUAL( 2, sel.size() );
- CPPUNIT_ASSERT( sel[0] == m_child1 );
- CPPUNIT_ASSERT( sel[1] == m_grandchild );
- #endif
- }
- void DataViewCtrlTestCase::TestSelectionFor0and1()
- {
- wxDataViewItemArray selections;
- // Initially there is no selection.
- CPPUNIT_ASSERT_EQUAL( 0, m_dvc->GetSelectedItemsCount() );
- CPPUNIT_ASSERT( !m_dvc->HasSelection() );
- CPPUNIT_ASSERT( !m_dvc->GetSelection().IsOk() );
- CPPUNIT_ASSERT( !m_dvc->GetSelections(selections) );
- CPPUNIT_ASSERT( selections.empty() );
- // Select one item.
- m_dvc->Select(m_child1);
- CPPUNIT_ASSERT_EQUAL( 1, m_dvc->GetSelectedItemsCount() );
- CPPUNIT_ASSERT( m_dvc->HasSelection() );
- CPPUNIT_ASSERT( m_dvc->GetSelection().IsOk() );
- CPPUNIT_ASSERT_EQUAL( 1, m_dvc->GetSelections(selections) );
- CPPUNIT_ASSERT( selections[0] == m_child1 );
- }
- void DataViewCtrlTestCase::GetSelectionForMulti()
- {
- wxDataViewItemArray selections;
- TestSelectionFor0and1();
- // Also test with more than one selected item.
- m_dvc->Select(m_child2);
- CPPUNIT_ASSERT_EQUAL( 2, m_dvc->GetSelectedItemsCount() );
- CPPUNIT_ASSERT( m_dvc->HasSelection() );
- CPPUNIT_ASSERT( !m_dvc->GetSelection().IsOk() );
- CPPUNIT_ASSERT_EQUAL( 2, m_dvc->GetSelections(selections) );
- CPPUNIT_ASSERT( selections[1] == m_child2 );
- }
- void DataViewCtrlTestCase::GetSelectionForSingle()
- {
- delete m_dvc;
- Create(0);
- TestSelectionFor0and1();
- }
- #endif //wxUSE_DATAVIEWCTRL
|