Go to file
Vadim Zeitlin e70fc11ef1 Replace CppUnit with Catch for unit tests
Drop the legacy CppUnit testing framework used for the unit tests.
Replacing it with Catch has the advantage of not requiring CppUnit
libraries to be installed on the system in order to be able to run
tests (Catch is header-only and a copy of it is now included in the
main repository itself) and, in the future, of being able to write
the tests in a much more natural way.

For now, however, avoid changing the existing tests code as much as
[reasonably] possible to avoid introducing bugs in them and provide
the CppUnit compatibility macros in the new wx/catch_cppunit.h header
which allow to preserve the 99% of the existing code unchanged. Some
of the required changes are:

 - Decompose asserts using "a && b" conditions into multiple asserts
   checking "a" and "b" independently. This would have been better
   even with CppUnit (to know which part of condition exactly failed)
   and is required with Catch.

 - Use extra parentheses around such conditions when they can't be
   easily decomposed in the arrays test, due to the use of macros.
   This is not ideal from the point of view of messages given when
   the tests fail but will do for now.

 - Rewrite asserts using "a || b" as a combination of condition
   checks and assert macros. Again, this is better anyhow, and is
   required with Catch. Incidentally, this allowed to fix a bug in
   the "exec" unit test which didn't leave enough time for the new
   process to be launched before trying to kill it.

 - Remove multiple CPPUNIT_TEST_SUITE_NAMED_REGISTRATION() macros,
   our emulation of this macro can be used only once.

 - Provide string conversions using Catch-specific StringMaker for
   a couple of types.

 - Replace custom wxImage comparison with a Catch-specific matcher
   class.

 - Remove most of test running logic from test.cpp, in particular don't
   parse command line ourselves any longer but use Catch built-in
   command line parser. This is a source of a minor regression:
   previously, both "Foo" and "FooTestCase" could be used as the name of
   the test to run, but now only the latter is accepted.
2017-11-02 01:53:16 +01:00
.github Use HTTPS with Trac links. 2017-07-04 13:15:14 -06:00
3rdparty Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
art Replace images in wxRendererMac::DrawTitleBarBitmap() with drawing code. 2016-01-05 14:51:04 +01:00
build Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
demos Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
distrib Updated links and mailing list addresses. 2015-10-30 20:06:09 -06:00
docs Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
include Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
interface Slightly improve wxMBConv::IsUTF8() documentation 2017-10-28 01:10:51 +02:00
lib Delete dummy 2015-06-03 17:17:38 +02:00
locale Czech translations update from pbfordev 2017-09-27 14:26:07 +02:00
misc Use HTTPS with Trac links. 2017-07-04 13:15:14 -06:00
samples Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
src Fix integer overflow in ZIP reading code 2017-10-28 15:02:12 +02:00
tests Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
utils Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
.editorconfig Add a simple EditorConfig coding style file 2017-01-20 14:32:12 +01:00
.gitattributes Replace upmake and dependent modules with a monolithic script 2015-10-04 00:11:10 +02:00
.gitignore Ignore build directories under tests/benchmarks 2017-07-16 15:47:04 +02:00
.gitmodules Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
.mailmap Add another email address for Steve Browne 2017-07-16 15:22:05 +02:00
.travis.yml Split building and running tests in 2 steps on Travis CI 2017-08-25 14:22:43 +02:00
acinclude.m4 Don't accept nonsensical --without-<toolkit> options in configure 2017-05-27 19:03:32 +02:00
aclocal.m4 Add --enable-cxx11 configure option 2016-01-24 21:22:15 +01:00
appveyor.yml Stop AppVeyor build if a newer PR commit exists 2016-02-03 22:42:47 +01:00
autoconf_inc.m4 Update to bakefile 0.2.11 and rebake everything 2017-10-21 17:42:30 +02:00
autogen.sh
BuildGit.txt Updated BuildSVN.txt for git migration. 2015-02-20 18:04:53 -07:00
config.guess
config.sub
configure Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
configure.in Replace CppUnit with Catch for unit tests 2017-11-02 01:53:16 +01:00
descrip.mms Remove controls sample from OpenVMS makefiles 2016-02-03 09:04:53 +01:00
install-sh
Makefile.in Update to bakefile 0.2.11 and rebake everything 2017-10-21 17:42:30 +02:00
mkinstalldirs Remove all lines containing cvs/svn "$Id$" keyword. 2013-07-26 16:02:46 +00:00
README.md Use HTTPS with Trac links. 2017-07-04 13:15:14 -06:00
regen Remove all lines containing cvs/svn "$Id$" keyword. 2013-07-26 16:02:46 +00:00
setup.h_vms Remove unused configure --enable-objc_uniquifying option 2017-10-21 19:06:33 +02:00
setup.h.in Remove unused configure --enable-objc_uniquifying option 2017-10-21 19:06:33 +02:00
version-script.in Remove all lines containing cvs/svn "$Id$" keyword. 2013-07-26 16:02:46 +00:00
wx-config-inplace.in Remove all lines containing cvs/svn "$Id$" keyword. 2013-07-26 16:02:46 +00:00
wx-config.in Report libraries in EXTRALIBS_WEBVIEW in wx-config output 2016-03-12 01:46:54 +01:00
wxwin.m4 Work around an apparent autoconf bug in WX_CONFIG_CHECK 2017-01-08 15:42:41 +01:00

About

wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.

wxWidgets Logo

wxWidgets allows you to write native-looking GUI applications for all the major desktop platforms and also helps with abstracting the differences in the non-GUI aspects between them. It is free for the use in both open source and commercial applications, comes with the full, easy to read and modify, source and extensive documentation and a collection of more than a hundred examples. You can learn more about wxWidgets at https://www.wxwidgets.org/ and read its documentation online at http://docs.wxwidgets.org/

Platforms

AppVeyor Travis

wxWidgets currently supports the following primary platforms:

  • Windows XP, Vista, 7, 8 and 10 (32/64 bits).
  • Most Unix variants using the GTK+ toolkit (version 2.6 or newer or 3.x).
  • OS X (10.7 or newer) using Cocoa (32/64 bits).

Most popular C++ compilers are supported including but not limited to:

  • Microsoft Visual C++ 2003 or later (up to 2017).
  • g++ 3.4 or later, including MinGW/MinGW-64/TDM under Windows.
  • Clang under OS X and Linux.
  • Intel icc compiler.
  • Oracle (ex-Sun) aCC.

Licence

wxWidgets licence is a modified version of LGPL explicitly allowing not distributing the sources of an application using the library even in the case of static linking.

Further information

If you are looking for support, you can get it from

We would also gladly welcome your contributions.

Have fun!

The wxWidgets Team.