| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: tests/config/config.cpp
- // Purpose: wxConfig unit test
- // Author: Marcin Wojdyr
- // Created: 2007-07-07
- // 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 its 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
|