Split wxPersistenceManager-related tests and actually build them
It seems better to organize the tests in different files and just provide a common fixture-like class to reuse functionality. Also use this as an opportunity to rewrite the tests to use Catch directly instead of using CppUnit-compatible macros. Finally, actually build these tests as part of the test suite.
This commit is contained in:
123
tests/persistence/dataview.cpp
Normal file
123
tests/persistence/dataview.cpp
Normal file
@@ -0,0 +1,123 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: tests/persistence/dataview.cpp
|
||||
// Purpose: wxDataViewCtrl persistence support unit tests
|
||||
// Author: wxWidgets Team
|
||||
// Created: 2017-08-23
|
||||
// Copyright: (c) 2017 wxWidgets Team
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "testprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#include "testpersistence.h"
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/dataview.h"
|
||||
#endif // WX_PRECOMP
|
||||
|
||||
#include "wx/persist/dataview.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define DVC_PREFIX PO_PREFIX "/DataView/dvc"
|
||||
#define DVC_COL "Column #"
|
||||
#define DVC_COL_PREFIX DVC_PREFIX "/Columns/" DVC_COL
|
||||
#define DVC_SORT_PREFIX DVC_PREFIX "/Sorting"
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// tests themselves
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
// Note: The wxDataViewCtrl test currently uses the derivative class
|
||||
// wxDataViewListCtrl for convenience.
|
||||
TEST_CASE_METHOD(PersistenceTests, "wxPersistDVC", "[persist][wxDataViewCtrl]")
|
||||
{
|
||||
// We can't just destroy the control itself directly, we need to destroy
|
||||
// its parent as only this will ensure that it gets wxWindowDestroyEvent
|
||||
// from which its state will be saved.
|
||||
wxWindow* const parent = new wxWindow(wxTheApp->GetTopWindow(), wxID_ANY);
|
||||
wxDataViewListCtrl* const list = new wxDataViewListCtrl(parent, wxID_ANY);
|
||||
list->SetName("dvc");
|
||||
|
||||
// Add some columns to the DVC.
|
||||
list->AppendTextColumn(DVC_COL "1",
|
||||
wxDATAVIEW_CELL_INERT, -1, wxALIGN_LEFT,
|
||||
wxDATAVIEW_COL_RESIZABLE |
|
||||
wxDATAVIEW_COL_REORDERABLE |
|
||||
wxDATAVIEW_COL_SORTABLE);
|
||||
list->AppendTextColumn(DVC_COL "2",
|
||||
wxDATAVIEW_CELL_INERT, -1, wxALIGN_LEFT,
|
||||
wxDATAVIEW_COL_RESIZABLE |
|
||||
wxDATAVIEW_COL_REORDERABLE |
|
||||
wxDATAVIEW_COL_SORTABLE);
|
||||
|
||||
// Populate with DVC data.
|
||||
wxVector<wxVariant> data;
|
||||
|
||||
data.push_back("AAAA");
|
||||
data.push_back("BBBB");
|
||||
list->AppendItem(data);
|
||||
|
||||
data.clear();
|
||||
data.push_back("CCCC");
|
||||
data.push_back("DDDD");
|
||||
list->AppendItem(data);
|
||||
|
||||
data.clear();
|
||||
data.push_back("EEEE");
|
||||
data.push_back("FFFF");
|
||||
list->AppendItem(data);
|
||||
|
||||
SECTION("Save")
|
||||
{
|
||||
// Adjust the initial settings.
|
||||
list->GetColumn(0)->SetWidth(150);
|
||||
list->GetColumn(1)->SetWidth(250);
|
||||
list->GetColumn(1)->SetSortOrder(false);
|
||||
|
||||
wxPersistenceManager::Get().Register(list);
|
||||
|
||||
delete parent;
|
||||
|
||||
// Test that the relevant keys have been stored correctly.
|
||||
int val;
|
||||
wxString text;
|
||||
|
||||
const wxConfigBase* const conf = wxConfig::Get();
|
||||
|
||||
CHECK(conf->Read(DVC_COL_PREFIX "1/Width", &val));
|
||||
CHECK(150 == val);
|
||||
|
||||
CHECK(conf->Read(DVC_COL_PREFIX "2/Width", &val));
|
||||
CHECK(250 == val);
|
||||
|
||||
CHECK(conf->Read(DVC_SORT_PREFIX "/Column", &text));
|
||||
CHECK(text == "Column #2");
|
||||
|
||||
CHECK(conf->Read(DVC_SORT_PREFIX "/Asc", &val));
|
||||
CHECK(0 == val);
|
||||
}
|
||||
|
||||
SECTION("Restore")
|
||||
{
|
||||
EnableCleanup();
|
||||
|
||||
// Test that the object was registered and restored.
|
||||
CHECK(wxPersistenceManager::Get().RegisterAndRestore(list));
|
||||
|
||||
// Test that the correct values were restored.
|
||||
CHECK(150 == list->GetColumn(0)->GetWidth());
|
||||
CHECK(250 == list->GetColumn(1)->GetWidth());
|
||||
CHECK(list->GetColumn(1)->IsSortKey());
|
||||
CHECK(!list->GetColumn(1)->IsSortOrderAscending());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user