mariadb/unittest
Alexander Barkov 3a13f814b0 MDEV-37849 UCA: Change "skip equal simple prefix" to "compare simple prefix"
Removing the function my_uca_level_booster_equal_prefix_length().
It was useful only in rare cases, when comparing two equal strings.

Adding a more useful function instead:
  my_uca_level_booster_simple_prefix_cmp()
It optimizes well the case when different strings with a simple
prefix are compared.

"Simple" means that prefixes must have the following data:
- The data can be traversed two bytes at a time, i.e.:
  * Every two bytes are either two ASCII characters or one 2-byte character
  * There are no two-byte characters at an odd octet position
  * There are no ASCII contraction heads at an odd octet position
- Each two bytes producing one or two weights

When either of the two prefixes become non-simple, the comparison
switches to the slower loop.

The timing of this query:
  SELECT BENCHMARK(1000000000,strcmp('aaaaaaaa','aaaaaaab'));
changed from 11.084 seconds to 8.488 seconds on my desktop.
2025-11-11 09:44:38 +04:00
..
client MDEV-34740 mariadb-import: optimize index and constraint creation 2025-01-24 13:15:05 +01:00
embedded MDEV-33091 pcre2 headers aren't found on Solaris 2024-09-05 12:14:06 +10:00
examples Cleanup Whitespace in unittest/ directory 2024-07-25 00:28:02 +10:00
json_lib Merge 11.7 into main 2025-01-09 13:46:06 +02:00
my_decimal Cleanup Whitespace in unittest/ directory 2024-07-25 00:28:02 +10:00
mysys Merge 11.4 into 11.8 2025-10-07 14:37:43 +03:00
mytap unittest/mytap/tap.h: Use ATTRIBUTE_FORMAT 2025-02-11 20:32:55 +01:00
sql Merge 11.4 into 11.8 2025-09-29 18:25:09 +03:00
strings MDEV-37849 UCA: Change "skip equal simple prefix" to "compare simple prefix" 2025-11-11 09:44:38 +04:00
README.txt Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl 2006-10-20 22:56:03 +02:00
unit.pl Cleanup Whitespace in unittest/ directory 2024-07-25 00:28:02 +10:00

Unit tests directory structure
------------------------------

This is the current structure of the unit tests.  More directories
will be added over time.

mytap                 Source for the MyTAP library
mysys                 Tests for mysys components
  bitmap-t.c          Unit test for MY_BITMAP
  base64-t.c          Unit test for base64 encoding functions
examples              Example unit tests.
  core-t.c            Example of raising a signal in the middle of the test
		      THIS TEST WILL STOP ALL FURTHER TESTING!
  simple-t.c          Example of a standard TAP unit test
  skip-t.c            Example where some test points are skipped
  skip_all-t.c        Example of a test where the entire test is skipped
  todo-t.c            Example where test contain test points that are TODO
  no_plan-t.c         Example of a test with no plan (avoid this)


Executing unit tests
--------------------

To make and execute all unit tests in the directory:

   make test

Observe that the tests in the examples/ directory are just various
examples of tests and are not expected to pass.


Adding unit tests
-----------------

Add a file with a name of the format "foo-t.c" to the appropriate
directory and add the following to the Makefile.am in that directory
(where ... denotes stuff already there):

  noinst_PROGRAMS = ... foo-t

Note, it's important to have "-t" at the end of the filename, otherwise the
test won't be executed by 'make test' !


Documentation
-------------

The generated documentation is temporarily placed at:

      http://www.kindahl.net/mytap/doc/

I will move it to a better place once I figure out where and how.