mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
dfcbb30a92
This patch can be viewed as combination of two parts: 1) Enabling '-' in the path so that the parser does not give out a warning. 2) Setting the negative index to a correct value and returning the appropriate value. 1) To enable using the negative index in the path: To make the parser not return warning when negative index is used in path '-' needs to be allowed in json path characters. P_NEG is added to enable this and is made recognizable by setting the 45th index of json_path_chr_map[] to P_NEG (instead of previous P_ETC) because 45 corresponds to '-' in unicode. When the path is being parsed and '-' is encountered, the parser should recognize it as parsing '-' sign, so a new json state PS_NEG is required. When the state is PS_NEG, it means that a negative integer is going to be parsed so set is_negative_index of current step to 1 and n_item is set accordingly when integer is encountered after '-'. Next proceed with parsing rest of the path and get the correct path. Next thing is parsing the json and returning correct value. 2) Setting the negative index to a correct value and returning the value: While parsing json if we encounter array and the path step for the array is a negative index (n_item < 0), then we can count the number of elements in the array and set n_item to correct corresponding value. This is done in json_skip_array_and_count. |
||
---|---|---|
.. | ||
embedded | ||
examples | ||
json_lib | ||
my_decimal | ||
mysys | ||
mytap | ||
sql | ||
strings | ||
README.txt | ||
unit.pl |
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.