Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
		
	
		
			
				
	
	
		
			202 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			202 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
///////////////////////////////////////////////////////////////////////////////
 | 
						|
// 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;
 | 
						|
 | 
						|
    wxDECLARE_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
 |