Commit Graph

43 Commits

Author SHA1 Message Date
PB
a4647825cb Do not use wxRegEx in wxCmpNaturalGeneric()
Using wxRegEx in wxCmpNaturalGeneric() introduced a dependency of the
base library on the regex library.

Replace wxRegEx with character classification functions wxIsspace(),
wxIspunct(), and wxIsdigit() to remove this rather unnecessary
dependency.

Closes https://github.com/wxWidgets/wxWidgets/pull/2014
2020-08-14 19:26:33 +02:00
PB
83a2a1e505 Refactor the natural string compare and sort algorithm
Add a new string fragment type for whitespace and punctuation which needs
to be assessed separately from letters and symbols.

Use wxUint64 instead of long for storing the value for numeric fragment.

Use collate instead of compare for non-numeric fragments.

Change names for the public comparison functions: wxWidgets provided function
is now named wxCmpGenericNatural() and for common public use is wxCmpNatural()
which calls a native function in wxMSW and wxCmpGenericNatural() elsewhere.

Try harder in wxCmpNaturalGeneric() if wxRegEx is unavailable: do not
just make a simple string comparison, but perform a case-insensitive
collation.

Make some other changes to simplify and possibly speed up the code.
2020-07-07 23:10:18 +02:00
Hugo Elias
371c4b1366 Add functions for sorting strings in natural sort order
Use StrCmpLogicalW() under MSW and generic implementation under the
other platforms.

See https://github.com/wxWidgets/wxWidgets/pull/780
2020-07-07 23:10:11 +02:00
Vadim Zeitlin
dcee3ce899 Suppress some harmless clang warnings in the test suite
Use wxCLANG_WARNING_SUPPRESS() to avoid multiple warnings in CATCH
headers as well as in some of our own tests.
2019-01-04 23:51:31 +01:00
Vadim Zeitlin
02ffdd16f6 Fix using WX_DECLARE_OBJARRAY() with pointer types
While this doesn't make, and never made, any sense (pointers should be
stored in a plain, non-object array), we still should continue to
support it for compatibility.

Fix the problem introduced by 97684a9267
by writing "T const&" instead of "const T&" as the latter didn't have
the same meaning when the macro parameter "T" expanded into "U*" as
"const" applied to "U", making this type incompatible with the actual
one.

Also extend the unit test to check for this.
2018-07-15 14:48:08 +02:00
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
Vadim Zeitlin
985ff1e26e Check for self-assignment in wxArrayString
Assigning array to itself destroyed its contents -- check for this now.

Closes #17619.
2016-08-09 01:07:59 +02:00
Dimitri Schoolwerth
8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00
Vadim Zeitlin
45adc64f9f Fix inserting an element of wxArrayString itself back into it.
Do the insertion/addition before deallocating the old memory to allow things
like array.Add(array[0]) to work correctly.

Closes #2290.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76909 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-07-13 14:30:22 +00:00
Vadim Zeitlin
86e587a096 Fix memory leak in ArraysTestCase unit test.
Clear the items in PTR array explicitly, this is not done by the array itself.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76908 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-07-13 14:30:14 +00:00
Vadim Zeitlin
af77028fcf Add wxDictionaryStringSortAscending comparison function.
Add "dictionary sort" callbacks and document them and the already existing
wxStringSortAscending() and wxStringSortDescending().

See #16330.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76753 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-06-23 12:02:09 +00:00
Vadim Zeitlin
f4b80e5337 Remove MSVC6 support.
Don't support this compiler any more, this allows to get rid of tons of
MSVC6-specific workarounds, in particular we can now use Bind() and natural
template functions calls in the library code.

Also remove MSVC6 project and solution files and don't generate them when
bakefile_gen is ran any more (removing the remaining occurrences of msvc6prj
from the bakefiles results in weird bake-time errors, so it's simpler to just
leave them there).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-05-15 22:32:17 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Václav Slavík
23f32cd750 Test correctness of wxArray::Index() with bFromEnd=true.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69687 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-11-05 15:20:11 +00:00
Dimitri Schoolwerth
e3778b4d9c No code changes, fixed some typos.
Changed several occurrences of "it's" where "its" is meant, as well as a few other minor typos.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-30 10:57:04 +00:00
Vadim Zeitlin
0287ae5c75 Re-define push_back() in wxSortedArrayString to behave correctly.
Adding items to wxSortedArrayString should always keep them sorted but while
Add() did this, push_back() didn't breaking the class invariant.

Redefine push_back() in _WX_DEFINE_SORTED_TYPEARRAY_2 macro to fix this and
add a unit test checking that wxSortedArrayString::push_back() does work now.

Closes #13134.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67429 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-10 15:36:07 +00:00
Vadim Zeitlin
3d156e937a Provide implementation for wxArrayString::resize().
This method was declared but not implemented in wxUSE_STL==0 build.

Also add unit test for this function.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61947 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-09-16 23:18:48 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Vadim Zeitlin
d11c9d86b6 made wxArrayString::assign(iterator, iterator) a template function; also fixed a bad bug in it: it didn't call clear(); mention existence of std::vector-like methods in the docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58843 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-12 12:09:13 +00:00
Vadim Zeitlin
e4e7977701 no need to disable DoTestSwap() for VC6 any more with latest wx/cppunit.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56904 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-22 14:33:09 +00:00
Vadim Zeitlin
93a800a95e minor icc warning fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56845 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-19 09:55:27 +00:00
Vadim Zeitlin
8112fbf0d7 undo the previous change, it's not needed any more now that we overload assertEquals(int,long) too and it broke VC6 compilation again
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56652 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-02 22:30:16 +00:00
Vadim Zeitlin
9ea7a5ddb7 yet another compilation fix, this time for VC9
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56630 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-01 18:05:59 +00:00
Vadim Zeitlin
fecddbaa5d disable a correct test which VC6 just doesn't want to grok (hopefully last buildbot error?)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56604 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-10-30 23:23:07 +00:00
Vadim Zeitlin
10d256d6c8 attempting to fix VC6 compilation error from buildbot logs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56601 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-10-30 16:54:41 +00:00
Vadim Zeitlin
0c61ab6f66 add WX_CLEAR_ARRAY test
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56575 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-10-29 12:33:34 +00:00
Vadim Zeitlin
7ee34f2be1 no changes, just use CPPUNIT_ASSERT_EQUAL instead of CPPUNIT_ASSERT
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56574 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-10-29 12:25:32 +00:00
Vadim Zeitlin
ff2201cc74 added swap() for the other arrays too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55550 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-09-11 13:51:41 +00:00
Vadim Zeitlin
9127686895 added wxArrayString::swap()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-09-11 13:35:32 +00:00
Vadim Zeitlin
35d5da677d get rid of base arrays in wxUSE_STL build, we don't need them there and deriving wxFooPtr from wxBaseArrayPtrVoid makes it iterators return void pointers instead of those of the correct type; added test case to check for this
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54761 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-07-22 01:01:56 +00:00
Vadim Zeitlin
5098c258b2 compilation fixes for VC6
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51188 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-01-13 01:13:03 +00:00
Václav Slavík
8650108199 don't use implicit wxString->char*/wchar_t* conversion, it will not be available in wxUSE_STL build in the future
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-10 17:42:41 +00:00
Vadim Zeitlin
abbb59e8eb added wxJoin and wxSplit functions (modified patch 1638950)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-03-18 14:43:41 +00:00
Vadim Zeitlin
1ffc8d7a55 define arrays of chartoo as the existing ones can't be used to store char values (bug 1572314)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43030 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-11-04 12:51:01 +00:00
Michael Wetherell
7d3b9f3abe Compile fix for 64-bit.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42680 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-10-29 22:33:48 +00:00
Vadim Zeitlin
7788fc4046 Alloc() doesn't clear the array any more, for consistency with reserve()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42571 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-10-28 14:16:20 +00:00
Vadim Zeitlin
a059db11ff verify that we checked all the array elements in TestSTL(); make the number of array elements a constant
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-10-28 00:44:24 +00:00
Mattia Barbon
555d0d7ef1 Correct wxArrayString::Add return value as per the documentation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33888 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-04-26 19:24:12 +00:00
Włodzimierz Skiba
e3f2384e48 Unicode markup.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-01-24 11:16:42 +00:00
Mattia Barbon
10dcbe6369 Fix wxSortedArray::Index() when wxUSE_STL == 1, with tests.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-01-22 13:28:49 +00:00
Ryan Norton
8899b155a1 [ 1068188 ] Precompiled header for the test program [Modified a bit]
Regen bakefiles for unit tests


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30685 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-11-22 05:00:19 +00:00
Václav Slavík
be2c4488bf this code was taken from console sample, preserve its copyright
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26636 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-04-06 12:14:05 +00:00
Václav Slavík
cf1014a2e1 moved arrays tests to testsuite (patch 927475)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26574 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-04-01 21:10:33 +00:00