232fdc630c
Add a lot of tests for many wx GUI classes. Add tests using the new wxUIActionSimulator class but disable them under OS X as too many of them currently fail there. Refactor the test suite to make organizing the existing tests and adding the new ones easier. Improve documentation using the information gathered while testing the classes. Also update the documentation of the testing system itself. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65386 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
214 lines
6.3 KiB
C++
214 lines
6.3 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: tests/config/config.cpp
|
|
// Purpose: wxConfig unit test
|
|
// Author: Marcin Wojdyr
|
|
// Created: 2007-07-07
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 2007 Marcin Wojdyr
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// NOTE: this test is compiled in test_gui because it uses wxColour for
|
|
// its testing purpose.
|
|
// See also tests/config/fileconf.cpp for wxFileConfig specific tests and
|
|
// tests/config/regconf.cpp for wxRegConfig specific tests.
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// headers
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#include "testprec.h"
|
|
|
|
#if wxUSE_CONFIG
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/wx.h"
|
|
#endif // WX_PRECOMP
|
|
|
|
#include "wx/config.h"
|
|
#include "wx/colour.h"
|
|
|
|
// --------------------------------------------------------------------------
|
|
// test class
|
|
// --------------------------------------------------------------------------
|
|
|
|
class ConfigTestCase : public CppUnit::TestCase
|
|
{
|
|
public:
|
|
ConfigTestCase() {}
|
|
|
|
private:
|
|
CPPUNIT_TEST_SUITE( ConfigTestCase );
|
|
CPPUNIT_TEST( ReadWriteLocalTest );
|
|
CPPUNIT_TEST( RecordingDefaultsTest );
|
|
CPPUNIT_TEST_SUITE_END();
|
|
|
|
void ReadWriteLocalTest();
|
|
void RecordingDefaultsTest();
|
|
|
|
// return the number of values we (attempted to) read
|
|
int ReadValues(wxConfig *config, bool has_values);
|
|
|
|
DECLARE_NO_COPY_CLASS(ConfigTestCase)
|
|
};
|
|
|
|
// register in the unnamed registry so that these tests are run by default
|
|
CPPUNIT_TEST_SUITE_REGISTRATION( ConfigTestCase );
|
|
|
|
// also include in it's own registry so that these tests can be run alone
|
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ConfigTestCase, "ConfigTestCase" );
|
|
|
|
void ConfigTestCase::ReadWriteLocalTest()
|
|
{
|
|
wxString app = wxT("wxConfigTestCase");
|
|
wxString vendor = wxT("wxWidgets");
|
|
wxConfig *config = new wxConfig(app, vendor, wxT(""), wxT(""),
|
|
wxCONFIG_USE_LOCAL_FILE);
|
|
config->DeleteAll();
|
|
config->Write(wxT("string1"), wxT("abc"));
|
|
config->Write(wxT("string2"), wxString(wxT("def")));
|
|
config->Write(wxT("int1"), 123);
|
|
config->Write(wxString(wxT("long1")), 234L);
|
|
config->Write(wxT("double1"), 345.67);
|
|
config->Write(wxT("bool1"), true);
|
|
#ifdef wxHAS_CONFIG_TEMPLATE_RW
|
|
config->Write(wxT("color1"), wxColour(11,22,33,44));
|
|
#endif // wxHAS_CONFIG_TEMPLATE_RW
|
|
config->Flush();
|
|
delete config;
|
|
|
|
config = new wxConfig(app, vendor, wxT(""), wxT(""),
|
|
wxCONFIG_USE_LOCAL_FILE);
|
|
wxString string1 = config->Read(wxT("string1"));
|
|
CPPUNIT_ASSERT_EQUAL( "abc", string1 );
|
|
string1 = config->Read(wxT("string1"), wxT("defaultvalue"));
|
|
CPPUNIT_ASSERT_EQUAL( "abc", string1 );
|
|
|
|
wxString string2;
|
|
bool r = config->Read(wxT("string2"), &string2);
|
|
CPPUNIT_ASSERT( r );
|
|
CPPUNIT_ASSERT_EQUAL( "def", string2 );
|
|
|
|
r = config->Read(wxT("string2"), &string2, wxT("defaultvalue"));
|
|
CPPUNIT_ASSERT( r );
|
|
CPPUNIT_ASSERT_EQUAL( "def", string2 );
|
|
|
|
int int1 = config->Read(wxT("int1"), 5);
|
|
CPPUNIT_ASSERT_EQUAL( 123, int1 );
|
|
|
|
long long1;
|
|
r = config->Read(wxT("long1"), &long1);
|
|
CPPUNIT_ASSERT( r );
|
|
CPPUNIT_ASSERT_EQUAL( 234L, long1 );
|
|
|
|
CPPUNIT_ASSERT( config->ReadLong(wxT("long1"), 0) == 234 );
|
|
|
|
double double1;
|
|
r = config->Read(wxT("double1"), &double1);
|
|
CPPUNIT_ASSERT( r );
|
|
CPPUNIT_ASSERT_EQUAL( 345.67, double1 );
|
|
|
|
CPPUNIT_ASSERT( config->ReadDouble(wxT("double1"), 0) == double1 );
|
|
|
|
bool bool1;
|
|
r = config->Read(wxT("foo"), &bool1); // there is no "foo" key
|
|
CPPUNIT_ASSERT( !r );
|
|
|
|
r = config->Read(wxT("bool1"), &bool1);
|
|
CPPUNIT_ASSERT( r );
|
|
CPPUNIT_ASSERT_EQUAL( true, bool1 );
|
|
|
|
CPPUNIT_ASSERT( config->ReadBool(wxT("bool1"), false) == bool1 );
|
|
|
|
#ifdef wxHAS_CONFIG_TEMPLATE_RW
|
|
wxColour color1;
|
|
r = config->Read(wxT("color1"), &color1);
|
|
CPPUNIT_ASSERT( r );
|
|
CPPUNIT_ASSERT( color1 == wxColour(11,22,33,44) );
|
|
|
|
CPPUNIT_ASSERT( config->ReadObject(wxT("color1"), wxNullColour) == color1 );
|
|
#endif // wxHAS_CONFIG_TEMPLATE_RW
|
|
|
|
config->DeleteAll();
|
|
delete config;
|
|
}
|
|
|
|
int ConfigTestCase::ReadValues(wxConfig *config, bool has_values)
|
|
{
|
|
int read = 0;
|
|
bool r;
|
|
|
|
wxString string1 = config->Read(wxT("string1"), wxT("abc"));
|
|
read++;
|
|
|
|
wxString string2 = config->Read(wxT("string2"), wxString(wxT("def")));
|
|
read++;
|
|
|
|
wxString string3;
|
|
r = config->Read(wxT("string3"), &string3, wxT("abc"));
|
|
CPPUNIT_ASSERT_EQUAL( has_values, r );
|
|
read++;
|
|
|
|
wxString string4;
|
|
r = config->Read(wxT("string4"), &string4, wxString(wxT("def")));
|
|
CPPUNIT_ASSERT_EQUAL( has_values, r );
|
|
read++;
|
|
|
|
int int1;
|
|
r = config->Read(wxT("int1"), &int1, 123);
|
|
CPPUNIT_ASSERT_EQUAL( has_values, r );
|
|
read++;
|
|
|
|
int int2 = config->Read(wxT("int2"), 1234);
|
|
CPPUNIT_ASSERT_EQUAL( int2, 1234 );
|
|
read++;
|
|
|
|
long long1;
|
|
r = config->Read(wxString(wxT("long1")), &long1, 234L);
|
|
CPPUNIT_ASSERT_EQUAL( has_values, r );
|
|
read++;
|
|
|
|
double double1;
|
|
r = config->Read(wxT("double1"), &double1, 345.67);
|
|
CPPUNIT_ASSERT_EQUAL( has_values, r );
|
|
read++;
|
|
|
|
bool bool1;
|
|
r = config->Read(wxT("bool1"), &bool1, true);
|
|
CPPUNIT_ASSERT_EQUAL( has_values, r );
|
|
read++;
|
|
|
|
#ifdef wxHAS_CONFIG_TEMPLATE_RW
|
|
wxColour color1;
|
|
r = config->Read(wxT("color1"), &color1, wxColour(11,22,33,44));
|
|
CPPUNIT_ASSERT_EQUAL( has_values, r );
|
|
read++;
|
|
#endif // wxHAS_CONFIG_TEMPLATE_RW
|
|
|
|
return read;
|
|
}
|
|
|
|
|
|
void ConfigTestCase::RecordingDefaultsTest()
|
|
{
|
|
wxString app = wxT("wxConfigTestCaseRD");
|
|
wxString vendor = wxT("wxWidgets");
|
|
wxConfig *config = new wxConfig(app, vendor, wxT(""), wxT(""),
|
|
wxCONFIG_USE_LOCAL_FILE);
|
|
config->DeleteAll();
|
|
config->SetRecordDefaults(false); // by default it is false
|
|
ReadValues(config, false);
|
|
CPPUNIT_ASSERT_EQUAL( 0, config->GetNumberOfEntries() );
|
|
config->SetRecordDefaults(true);
|
|
int read = ReadValues(config, false);
|
|
CPPUNIT_ASSERT_EQUAL( read, config->GetNumberOfEntries() );
|
|
ReadValues(config, true);
|
|
config->DeleteAll();
|
|
delete config;
|
|
}
|
|
|
|
#endif //wxUSE_CONFIG
|