wxWidgets/tests/controls/headerctrltest.cpp
Vadim Zeitlin e2bfe6731e - Rewrite wxHeaderCtrl to be virtual-like: even if we don't need an infinite
number of columns in it, it turns out that getting column information from
  the associated control is much easier than copying it into the control.
- Provide wxHeaderCtrlSimple derived class which can be used easily if
  callback approach of wxHeaderCtrl is not needed.
- Because of wxHeaderCtrl virtualization, port-specific implementations of
  wxHeaderColumn are not needed any more and were removed.
- Use wxHeaderCtrl in the generic wxDataViewCtrl: this means that column
  events are broken right now in it as they haven't been implemented by
  wxHeaderCtrl yet, this will be fixed a.s.a.p.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57161 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-07 14:47:55 +00:00

108 lines
3.1 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: tests/controls/headerctrltest.cpp
// Purpose: wxHeaderCtrl unit test
// Author: Vadim Zeitlin
// Created: 2008-11-26
// RCS-ID: $Id$
// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
///////////////////////////////////////////////////////////////////////////////
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
#include "testprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifdef __WXMSW__ // no generic version of this control yet
#ifndef WX_PRECOMP
#include "wx/app.h"
#include "wx/headerctrl.h"
#endif // WX_PRECOMP
// ----------------------------------------------------------------------------
// test class
// ----------------------------------------------------------------------------
class HeaderCtrlTestCase : public CppUnit::TestCase
{
public:
HeaderCtrlTestCase() { }
virtual void setUp();
virtual void tearDown();
private:
CPPUNIT_TEST_SUITE( HeaderCtrlTestCase );
CPPUNIT_TEST( AddDelete );
CPPUNIT_TEST( BestSize );
CPPUNIT_TEST_SUITE_END();
void AddDelete();
void BestSize();
wxHeaderCtrlSimple *m_header;
DECLARE_NO_COPY_CLASS(HeaderCtrlTestCase)
};
// register in the unnamed registry so that these tests are run by default
CPPUNIT_TEST_SUITE_REGISTRATION( HeaderCtrlTestCase );
// also include in it's own registry so that these tests can be run alone
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( HeaderCtrlTestCase, "HeaderCtrlTestCase" );
// ----------------------------------------------------------------------------
// test initialization
// ----------------------------------------------------------------------------
void HeaderCtrlTestCase::setUp()
{
m_header = new wxHeaderCtrlSimple(wxTheApp->GetTopWindow());
}
void HeaderCtrlTestCase::tearDown()
{
delete m_header;
m_header = NULL;
}
// ----------------------------------------------------------------------------
// the tests themselves
// ----------------------------------------------------------------------------
void HeaderCtrlTestCase::AddDelete()
{
CPPUNIT_ASSERT_EQUAL( 0, m_header->GetColumnCount() );
m_header->AppendColumn(wxHeaderColumn("Column 1"));
CPPUNIT_ASSERT_EQUAL( 1, m_header->GetColumnCount() );
m_header->AppendColumn(wxHeaderColumn("Column 2"));
CPPUNIT_ASSERT_EQUAL( 2, m_header->GetColumnCount() );
m_header->InsertColumn(wxHeaderColumn("Column 0"), 0);
CPPUNIT_ASSERT_EQUAL( 3, m_header->GetColumnCount() );
m_header->DeleteColumn(2);
CPPUNIT_ASSERT_EQUAL( 2, m_header->GetColumnCount() );
}
void HeaderCtrlTestCase::BestSize()
{
const wxSize sizeEmpty = m_header->GetBestSize();
CPPUNIT_ASSERT( sizeEmpty.x > 0 );
CPPUNIT_ASSERT( sizeEmpty.y > 0 );
m_header->AppendColumn(wxHeaderColumn("Foo"));
m_header->AppendColumn(wxHeaderColumn("Bar"));
const wxSize size = m_header->GetBestSize();
CPPUNIT_ASSERT_EQUAL( sizeEmpty.y, size.y );
}
#endif // __WXMSW__