Files
wxWidgets/tests/misc/selstoretest.cpp
Vadim Zeitlin a1cca242a4 Use CHECK() instead of CPPUNIT_ASSERT in wxSelectionStore test
No real changes, just simplify the code. Notably we don't need explicit
"u" suffix on the literal constants any longer as CATCH is smart enough
to compare signed and unsigned integers correctly without it.
2021-01-23 16:40:30 +01:00

180 lines
5.0 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: tests/misc/selstoretest.cpp
// Purpose: wxSelectionStore unit test
// Author: Vadim Zeitlin
// Created: 2008-03-31
// Copyright: (c) 2008 Vadim Zeitlin
///////////////////////////////////////////////////////////////////////////////
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
#include "testprec.h"
#include "wx/selstore.h"
// ----------------------------------------------------------------------------
// test class
// ----------------------------------------------------------------------------
class SelStoreTestCase : public CppUnit::TestCase
{
public:
SelStoreTestCase() { }
virtual void setUp() wxOVERRIDE
{
m_store.SetItemCount(NUM_ITEMS);
}
private:
CPPUNIT_TEST_SUITE( SelStoreTestCase );
CPPUNIT_TEST( SelectItem );
CPPUNIT_TEST( SelectRange );
CPPUNIT_TEST( SetItemCount );
CPPUNIT_TEST( Clear );
CPPUNIT_TEST( Iterate );
CPPUNIT_TEST( ItemsAddDelete );
CPPUNIT_TEST_SUITE_END();
void SelectItem();
void SelectRange();
void SetItemCount();
void Clear();
void Iterate();
void ItemsAddDelete();
// NB: must be even
static const unsigned NUM_ITEMS;
wxSelectionStore m_store;
wxDECLARE_NO_COPY_CLASS(SelStoreTestCase);
};
// register in the unnamed registry so that these tests are run by default
CPPUNIT_TEST_SUITE_REGISTRATION( SelStoreTestCase );
// also include in its own registry so that these tests can be run alone
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( SelStoreTestCase, "SelStoreTestCase" );
const unsigned SelStoreTestCase::NUM_ITEMS = 10; // NB: must be even
void SelStoreTestCase::SelectItem()
{
m_store.SelectItem(0);
CHECK( m_store.GetSelectedCount() == 1 );
CHECK( m_store.IsSelected(0) );
m_store.SelectItem(NUM_ITEMS - 1);
CHECK( m_store.GetSelectedCount() == 2 );
CHECK( m_store.IsSelected(NUM_ITEMS - 1) );
m_store.SelectItem(0, false);
CHECK( m_store.GetSelectedCount() == 1 );
CHECK( !m_store.IsSelected(0) );
}
void SelStoreTestCase::SelectRange()
{
m_store.SelectRange(0, NUM_ITEMS/2);
CHECK( m_store.GetSelectedCount() == NUM_ITEMS/2 + 1 );
CHECK( m_store.IsSelected(0) );
CHECK( !m_store.IsSelected(NUM_ITEMS - 1) );
m_store.SelectRange(NUM_ITEMS/2, NUM_ITEMS - 1);
CHECK( m_store.GetSelectedCount() == NUM_ITEMS );
CHECK( m_store.IsSelected(0) );
CHECK( m_store.IsSelected(NUM_ITEMS - 1) );
m_store.SelectRange(1, NUM_ITEMS - 2, false);
CHECK( m_store.GetSelectedCount() == 2 );
CHECK( m_store.IsSelected(0) );
CHECK( !m_store.IsSelected(NUM_ITEMS/2) );
CHECK( m_store.IsSelected(NUM_ITEMS - 1) );
}
void SelStoreTestCase::SetItemCount()
{
m_store.SelectRange(1, NUM_ITEMS - 2);
CHECK( m_store.GetSelectedCount() == NUM_ITEMS - 2 );
m_store.SetItemCount(NUM_ITEMS/2);
CHECK( m_store.GetSelectedCount() == NUM_ITEMS/2 - 1 );
m_store.Clear();
m_store.SetItemCount(NUM_ITEMS);
m_store.SelectItem(NUM_ITEMS/2 - 1);
m_store.SelectItem(NUM_ITEMS/2 + 1);
m_store.SetItemCount(NUM_ITEMS/2);
CHECK( m_store.GetSelectedCount() == 1 );
}
void SelStoreTestCase::Clear()
{
CHECK(m_store.IsEmpty());
CHECK( m_store.GetSelectedCount() == 0 );
m_store.SelectItem(0);
CHECK(!m_store.IsEmpty());
m_store.Clear();
CHECK(m_store.IsEmpty());
CHECK( m_store.GetSelectedCount() == 0 );
}
void SelStoreTestCase::Iterate()
{
m_store.SelectRange(NUM_ITEMS/2 - 1, NUM_ITEMS/2 + 1);
wxSelectionStore::IterationState cookie;
CHECK(NUM_ITEMS/2 - 1 == m_store.GetFirstSelectedItem(cookie));
CHECK(NUM_ITEMS/2 == m_store.GetNextSelectedItem(cookie));
CHECK(NUM_ITEMS/2 + 1 == m_store.GetNextSelectedItem(cookie));
CHECK(wxSelectionStore::NO_SELECTION == m_store.GetNextSelectedItem(cookie));
m_store.SelectRange(0, NUM_ITEMS - 1);
m_store.SelectItem(0, false);
CHECK(1 == m_store.GetFirstSelectedItem(cookie));
}
void SelStoreTestCase::ItemsAddDelete()
{
m_store.SelectItem(0);
m_store.SelectItem(NUM_ITEMS/2);
m_store.SelectItem(NUM_ITEMS - 1);
m_store.OnItemsInserted(NUM_ITEMS/2 + 1, 1);
CHECK(m_store.IsSelected(0));
CHECK(m_store.IsSelected(NUM_ITEMS/2));
CHECK(m_store.IsSelected(NUM_ITEMS));
CHECK(m_store.GetSelectedCount() == 3);
CHECK(m_store.OnItemsDeleted(NUM_ITEMS/2 - 1, 2));
CHECK(m_store.IsSelected(0));
CHECK(m_store.IsSelected(NUM_ITEMS - 2));
CHECK(m_store.GetSelectedCount() == 2);
m_store.OnItemsInserted(0, 2);
CHECK(m_store.IsSelected(2));
CHECK(m_store.IsSelected(NUM_ITEMS));
CHECK(m_store.GetSelectedCount() == 2);
m_store.OnItemDelete(0);
m_store.SelectRange(0, NUM_ITEMS - 1);
CHECK(m_store.OnItemsDeleted(0, NUM_ITEMS/2));
CHECK(m_store.GetSelectedCount() == NUM_ITEMS/2);
CHECK(m_store.IsSelected(0));
CHECK(m_store.IsSelected(NUM_ITEMS/2));
}