Skip to content

Latest commit

 

History

History
751 lines (440 loc) · 30.3 KB

CHANGES.md

File metadata and controls

751 lines (440 loc) · 30.3 KB

xTests - Changes

0.28.0 - 26th October 2026

  • additions:
    • XTESTS_TEST_POINTER_NULL() and XTESTS_TEST_POINTER_NOT_NULL(), with terse aliases TEST_POINTER_NULL / TEST_PTR_NULL and TEST_POINTER_NOT_NULL / TEST_PTR_NOT_NULL;
    • further short aliases in xtests/terse-api.h: TEST_BOOL_*, TEST_CHAR_EQ_EXACT, TEST_FP_*_EXACT, TEST_INT_EQ_EXACT, TEST_INT_EQ_ANY_*, TEST_MS_SLICE_* / TEST_WS_SLICE_*, TEST_WS_NOT_CONTAIN_APPROX, TEST_EQUAL_WITH_MESSAGE / TEST_EQ_WITH_MSG, TEST_NOT_EQUAL_WITH_MESSAGE / TEST_NE_WITH_MSG, and END_RUNNER_UPDATE_EXITCODE;
    • XTESTS_START_RUNNER() (and related start-runner APIs) now infer a runner name from a source path such as __FILE__ when it has a C/C++ extension (.c, .cc, .cpp, .cxx) and a stem of entry / main or equal to its leaf directory; any other value is used as given;
  • changes:
    • pointer equality/inequality failure messages now say the actual value "is not null as expected" or "actual pointer is null not as expected" when the expected pointer is null, rather than comparing against a platform-formatted null address;
    • collapsed the internal file, line, function, and expression parameters into an flfe_t helper in xtests.core.cpp;
  • dependencies:
    • requires STLSoft 1.11.2 or later (_STLSOFT_VER >= 0x010b02FF);
  • documentation:
    • documented the __FILE__ runner-name rules in the XTESTS_START_RUNNER*() Doxygen markup in xtests.h, in COMPONENTS.md, and in a new README.md Runner Names section;
    • updated the COMPONENTS.md Terse API table;
  • examples:
    • illustrated the new pointer-null macros in example.c.tests;
    • example.cpp.udt now starts its runner with __FILE__;
  • testing:
    • test.component.temp_directory, test.scratch.fail_all, and test.unit.shwild-patterns now start their runners with __FILE__;
    • test.scratch.versions now also reports shwild (when XTESTS_USE_SHWILD) under efferent dependencies:, and omits the heading when no dependency is printed;
  • version:
    • bumped _XTESTS_VER_RELSTATUS to 0xFF (released) in xtests.h; synced Doxyfile PROJECT_NUMBER;

0.28.0-beta1 - 23rd October 2026

  • Expanded xtests/terse-api.h with further short aliases matching the established TYPE_OP vocabulary (BOOL, CHAR/FP/INT + EQ/NE, MS/WS + SLICE, and message / exit-code helpers):
    • TEST_BOOL_TRUE / TEST_BOOL_FALSE / TEST_BOOL_EQ / TEST_BOOL_NE;
    • TEST_CHAR_EQ_EXACT, TEST_FP_EQ_EXACT / TEST_FP_NE_EXACT, TEST_INT_EQ_EXACT;
    • TEST_INT_EQ_ANY_IN_RANGE / TEST_INT_EQ_ANY_NOT_IN_RANGE / TEST_INT_EQ_ANY_OF / TEST_INT_EQ_ANY_OF2 / TEST_INT_EQ_ANY_OF3;
    • TEST_MS_SLICE_EQ / TEST_MS_SLICE_EQ_APPROX / TEST_MS_SLICE_NE / TEST_MS_SLICE_NE_APPROX and the TEST_WS_SLICE_* counterparts;
    • TEST_WS_NOT_CONTAIN_APPROX (parity with TEST_MS_NOT_CONTAIN_APPROX);
    • TEST_EQUAL_WITH_MESSAGE / TEST_EQ_WITH_MSG, TEST_NOT_EQUAL_WITH_MESSAGE / TEST_NE_WITH_MSG, and END_RUNNER_UPDATE_EXITCODE;
  • Bumped _XTESTS_VER_RELSTATUS to 0x81 (beta 1) in xtests.h; synced Doxyfile PROJECT_NUMBER;
  • Updated COMPONENTS.md Terse API table for the new boolean short forms;

0.28.0-alpha2 - 22nd October 2026

  • XTESTS_START_RUNNER() (and related start-runner APIs) now infer a runner name from a source path such as __FILE__, when the path has a C/C++ extension (.c, .cc, .cpp, .cxx) and either its stem is entry or main (result: the leaf directory if it begins example. or test., otherwise the nearest example/examples/test ancestor joined with the directories below it by ., e.g. example.cpp.udt) or its stem equals its leaf directory (result: the stem); any other value is used as given;
  • Documented the __FILE__ runner-name rules in the XTESTS_START_RUNNER*() Doxygen markup in xtests.h, in the test-runner section of COMPONENTS.md, and in a new README.md Runner Names section;
  • example.cpp.udt, test.component.temp_directory, test.scratch.fail_all, and test.unit.shwild-patterns now start their runners with __FILE__;
  • Collapsed the internal file, line, function, and expression parameters into an flfe_t helper in xtests.core.cpp;

0.28.0-alpha1 - 18th October 2026

  • Added XTESTS_TEST_POINTER_NULL() and XTESTS_TEST_POINTER_NOT_NULL() (currently wrappers of XTESTS_TEST_POINTER_EQUAL(NULL, …) / XTESTS_TEST_POINTER_NOT_EQUAL(NULL, …)), with terse aliases TEST_POINTER_NULL / TEST_PTR_NULL and TEST_POINTER_NOT_NULL / TEST_PTR_NOT_NULL;
  • Illustrated the new pointer-null macros in example.c.tests, including deliberate failures that emit the null-expected wording;
  • Pointer equality/inequality failure messages now say the actual value "is not null as expected" (with the actual address) or "actual pointer is null not as expected" (without a redundant '0x0') when the expected pointer is null, rather than comparing against a platform-formatted null address;

0.27.0 - 17th October 2026

0.27.0

0.27.0-rc1 - 16th October 2026

  • Migrated _XTESTS_VER_* from _XTESTS_VER_ALPHABETA to _XTESTS_VER_RELSTATUS (0xC1), with documentation-skip aliases for _XTESTS_VER_ALPHABETA and _XTESTS_VER_AB;
  • Tip-synced run_all_examples.sh, run_all_scratch_tests (.sh / .cmd), and run_all_unit_tests.sh from misc-dev-scripts cmake-helpers;
  • Added empty .sis scratch ATF / skip-interactive list stubs (examples ATF retained);
  • Restructured ci-cell.yml to build → artifact → run jobs with non-Windows execute-bit restore (Windows .cmd dogfood, CTest, component, and scratch continue-on-error retained);
  • Added README.md Developer Experience section;
  • Synced Doxyfile PROJECT_NUMBER to 0.27.0-rc1;

0.27.0-beta3 - 16th October 2026

  • examples:
    • Shortened examples/ leaf directory names (dropped redundant example.c. / example.cpp. prefixes), e.g. factorial, runner, string-comparisons-n, temp_directory;
    • Conformed each example main.c / main.cpp File: (and \file) banner to the slash-path form (e.g. examples/c/factorial/main.c);
    • Aligned XTESTS_START_RUNNER names and CMake define_example_program targets with the shortened directories (notably example.c.string-comparisons-n / example.cpp.string-comparisons-n);
    • Updated examples/descriptors.cpp \example paths for the shortened layout (and added the string-comparisons-n examples);
  • documentation:
    • Restored missing doc/mainpage.md referenced by Doxyfile USE_MDFILE_AS_MAINPAGE;
  • version:
    • Bumped _XTESTS_VER_ALPHABETA to 0x83 (beta 3) in xtests.h; synced Doxyfile PROJECT_NUMBER;
    • NEWS.md chronology row for 0.27.0-beta3;

0.27.0-beta2 - 16th October 2026

  • testing:
    • Shortened test/ leaf directory names (dropped redundant test.<kind>. prefixes), e.g. command-line-functions, string-comparisons.C, setup-fail;
    • Conformed each entry.c / entry.cpp File: banner to the slash-path form (e.g. test/unit/string-comparisons/entry.cpp);
    • Aligned XTESTS_START_RUNNER names and CMake define_* targets with the shortened directories (including test.unit.command-line-functions, test.scratch.setup-fail, test.scratch.fail_all, and .C-suffixed C-API programs);
    • Fixed runner typo test.test.unit.string_comparisons → test.unit.string-comparisons;
    • Fixed test/scratch/CMakeLists.txt add_subdirectory for integer_comparisons.C;
  • version:
    • Bumped _XTESTS_VER_ALPHABETA to 0x82 (beta 2) in xtests.h; synced Doxyfile PROJECT_NUMBER;
    • NEWS.md chronology row for 0.27.0-beta2;

0.27.0-beta1 - 13th October 2026

  • API:
    • Fixed xtests_testWideStringsN length parameter type from int to ptrdiff_t, matching the multibyte API and avoiding truncation of large |n| values;
    • Fixed C-API xtests_testMultibyteStringsN / xtests_testWideStringsN to bound compared lengths to |n| (via bounded strnlen / wcsnlen), aligning with the C++ path and enabling safe use with non-NUL-terminated buffers;
    • Added case-insensitive slice macros XTESTS_TEST_*_STRING_SLICE_EQUAL_APPROX / XTESTS_TEST_*_STRING_SLICE_NOT_EQUAL_APPROX (multibyte and wide, with terse aliases);
    • Added XTESTS_TEST_MULTIBYTE_STRING_SLICE_NOT_EQUAL / XTESTS_TEST_WIDE_STRING_SLICE_NOT_EQUAL (and terse aliases);
  • documentation:
    • COMPONENTS.md entries for the new slice EQUAL / NOT_EQUAL / APPROX macros;
    • NEWS.md chronology row for 0.27.0-beta1;
  • examples:
    • Added example.c.string_comparisons_n, illustrating exact (n > 0) and limit (n < 0) forms of TEST_MS_EQ_N / TEST_MS_NE_N, including non-NUL-terminated buffers;
    • Added example.cpp.string_comparisons_n, illustrating the same _N contract for wide strings, std::wstring, and non-NUL-terminated buffers;
  • testing:
    • Extended test.unit.string_slices.c with TEST_WIDE_STRING_SLICE_EQUAL coverage parallel to the multibyte cases, plus NOT_EQUAL / APPROX coverage for multibyte and wide slices;
    • Extended test.unit.string_comparisons / test.unit.string_comparisons.c for the StringsN |n| contract and non-NUL-terminated buffers;
  • version:
    • Bumped _XTESTS_VER to 0.27.0 (_XTESTS_VER_ALPHABETA 0x81) in xtests.h; synced Doxyfile PROJECT_NUMBER;

0.26.6-beta1 - 10th October 2026

  • Applied misc-dev-scripts 0.6.0 editor/Git/.sis drop-in templates on boilerplate;
  • Restored historical .gitignore patterns as a sorted union with misc-dev-scripts gold section layout;
  • Aligned the common CMake helper scripts (prepare_cmake.sh, build_cmake.sh, ctest_cmake.sh, clean_cmake.sh, remove_cmake_artefacts.sh, and the run_all_*.sh / run_all_*.cmd runners) with misc-dev-scripts gold (SisClr), retaining --c-standard, --cxx-standard, --no-shwild, and --stlsoft-root-dir in prepare_cmake.sh;
  • Renamed the scratch version reporter target from versions to test.scratch.versions (test/scratch/versions/), so that run_all_scratch_tests.sh discovers it;
  • Added .sis/ci_examples_allowed_to_fail.txt (example.c.runner, example.c.tests, example.cpp.udt) and adopted the BDUT run_all_examples.sh / run_all_examples.cmd runners, so that examples which demonstrate failure by design are reported as anticipated rather than failing the run;
  • Fixed ci-cell.yml so that the component-test step invokes run_all_component_tests.sh (run_all_unit_tests.sh does not accept --component-only);
  • Made the Windows cells of ci-cell.yml (MSVC cl and MinGW) dogfood the native run_all_*.cmd runners under shell: cmd, with the Bash runners retained for non-Windows cells;

0.26.5 - 21st September 2026

  • Made CMake C and C++ language standards settings overrideable by external configurations (e.g., from command-line overrides or CI workflows);
  • Extended prepare_cmake.sh with --c-standard and --cxx-standard (mirroring sistools / chomp), including C90 and the C++98–23 set used by the Compatibility matrix;
  • Added a Clang (Linux) column to the README.md Compatibility matrix and filled every surveyed cell ✅ after a temporary language×toolchain build survey; restored modular CI (cell / install-smoke / stlsoft-routes) with the canonical push-branch set;
  • Filled the README.md Compatibility matrix Clang (macOS) column from Apple Clang 15 builds;
  • Fixed ISO C90 pedantic failures in xtests.h: #error text no longer contains //; XTESTS_GET_FUNCTION_() avoids __func__ when compiling as C90;
  • Fixed further ISO C90 pedantic failures: C90-safe inline for xtests_internal_while_0_(); converted remaining C++ // comments in xtests.h (and test.unit.string_slices.c) to /* */ where they sit in active translation units;
  • Fixed GCC C++98 build: STLSOFT_SUPPRESS_UNUSED(is_tty) without taking the address of a temporary in xtests.core.cpp;
  • STLSoft (freelibs tree): exclude MinGW from C++23 STD_gmtime_r / localtime_r claims in api/external/time.h; under ISO C90 set STLSOFT_CUSTOM_C_INLINE to static __attribute__((unused)) (not GNU extern inline) in cccap/clang.h and cccap/gcc.h;
  • Removed a duplicate C++20/C17 Compatibility matrix row;
  • example.cpp.temp_file now removes files left by temp_file::None after illustrating that they persist, so run_all_examples.sh no longer pollutes the working tree;
  • UNIX temp_file now keeps the mkstemp descriptor and records the path as a C-string, rather than reopening and assigning size() - 1;
  • Replaced the nested <details> catalog in README.md Components with a short map linking to COMPONENTS.md, which lists each public construct with a small example;
  • Aligned .gitattributes with the CLASP C/C++ GitHub-hosted form, including C++ source extras, Linguist language classification, and -linguist-detectable;
  • Added a Rust FileType autocmd to .vimrc;
  • Normalised prerelease version headings in CHANGES.md to hyphen-compact SemVer form;
  • Added a Details column to NEWS.md;
  • Regenerated the README.md table of contents with hyphen markers and example subsections;
  • Set _XTESTS_VER_ALPHABETA to 0x82 (beta 2) and added _XTESTS_VER_AB as an alias of _XTESTS_VER_ALPHABETA in xtests.h;

0.26.5-beta1 - 1st September 2026

  • Added minimal C and C++ usage examples to README.md;
  • Created a custom Doxygen main page (doc/mainpage.md) and a generate_doxygen.sh script for automated documentation building, bringing documentation generation on parity with peer projects;
  • Excluded README.md and INSTALL.md from Doxygen input to eliminate unresolved cross-reference warnings, and corrected obsolete configuration parameters in Doxyfile;
  • Clarified test suite expectations in INSTALL.md and FAQ.md, clearly distinguishing passing unit and component tests from failing scratch programs;
  • Corrected the signature and usage documentation of the XTESTS_CASE_END macro in xtests.h and README.md, removing the legacy description parameter;
  • Corrected linkage advice in INSTALL.md to target the xtests.core library artifact and documented proper modern CMake find_package consumption;
  • Documented known compiler-specific two-phase lookup and wide-character support gaps in KNOWN_ISSUES.md;
  • Corrected double-period parsing warnings and invalid slice member reference comments in xtests.h's Doxygen blocks;
  • Corrected multiple miscellaneous typos, file header metadata, and file/module description blocks across project headers and tests;

0.26.4 - 4th August 2026

  • Added modular GitHub Actions CI (ci.yml / ci-cell.yml) with install-smoke coverage;
  • Converted CHANGES.txt to CHANGES.md and removed HISTORY.md;
  • README CI badge now targets ci.yml; tagline and TOC tidy;
  • Updated INSTALL.md / README.md for consolidated STLSoft repository URL;
  • CMake improvements (incl. legacy MSVC warning suppression, absolute STLSoft include path, public STLSoft include for core target);
  • Enhanced run_all_unit_tests.sh (--unit-only / --component-only and --no-make guard);
  • Project boilerplate updates (.gitattributes, .vimrc, .vscode/settings.json, AUTHORS.md, KNOWN_ISSUES.md, TODO.md, LICENSE);

0.26.4-alpha4 - 7th September 2025

  • Removed legacy Visual Studio project/solution files;
  • Added run_all_unit_tests.cmd;
  • Further CMake, CTest, and GitHub Actions polish;

0.26.4-alpha3 - 30th August 2025

  • CTest compatibility;
  • GitHub Actions;

0.26.4-alpha2 - 30th June 2025

  • Allowing comparisons between integer values/variables of arbitrary type and sign;
  • C++-98 compatibility;

0.26.4-alpha1 - 6th May 2025

  • MinGW compatibility;
  • Various CMake scripts canonicalisation;

0.26.3 - 6th May 2025

  • Fixed defect in format specifiers for end-case summary;

0.26.2 - 3rd May 2025

  • Compatibility with older compilers (incl. Visual C++ 14);
  • Compatibility with older operating systems (incl. Windows Vista);

0.26.2-alpha2 - 28th April 2025

  • prepare_cmake.sh / CMakeLists.txt : + added '--no-shwild' / CMAKE_NO_SHWILD;
  • Minor improvements to temp_directory and temp_file to improve portability;

0.26.2-alpha1 - 26th April 2025

  • N-len string comparisons now works regardless of integral type of length argument;

0.26.1-alpha1 - 23rd April 2025

  • Fix wrong conditionality on inclusion of stlsoft/conversion/sas_to_string.hpp;

0.26.0 - 23rd April 2025

  • Improved compatibility to types that provide shims stlsoft::c_str_data_a() and stlsoft::c_str_len_a(), rather than stlsoft::c_str_ptr_a();
  • Fixed inconsistency in handling of verbosity levels (esp. XTESTS_VERBOSITY_FIRST_CASE_SUMMARY_ON_ERROR);
  • Visual C++ compatibility;
  • Further application of terse api in example and test programs;
  • Various tidyings;
  • Improved scope and consistency in example and test programs;

0.26.0-beta3 - 23rd February 2025

  • added support (including coloured output) for (in)equality testing of UDTs;
  • temp_directory now finds and deletes sockets (in addition to files);
  • fixed defect (when on UNIX) in temp_file;
  • now ensures that does not emit ANSI colour sequences when running on Windows on an old terminal that does not support them;

0.26.0-beta1 - 31st December 2024

  • now uses stlsoft::integral_traits<> for integer test macros (in C++) to allow for custom integral types to be tested;
  • temp_file now takes a hint_dir parameter to allow specification of directory for (temporary) file;
  • added missing test macros XTESTS_TEST_FLOATINGPOINT_GREATER(), XTESTS_TEST_FLOATINGPOINT_GREATER_OR_EQUAL(), XTESTS_TEST_FLOATINGPOINT_LESS(), XTESTS_TEST_FLOATINGPOINT_LESS_OR_EQUAL();
  • added macro XTESTS_COMMANDLINE_PARSE_HELP_OR_VERBOSITY(), which allows for a unified command-line parsing in test programs;
  • added terse forms of macros, available by including xtests/terse-api.h;
  • XTESTS_COMMANDLINE_PARSE_VERBOSITY() now also recognises, if the command-line argument "--verbosity= . . ." is not found, the enviroment variables "XTESTS_VERBOSITY" and "TEST_VERBOSITY";
  • added test programs test.scratch.all_failure_messages, test.scratch.basics2, test.scratch.custom_integral_types;
  • substantial internal refactoring;
  • minor tidying to CMake facilities;
  • minor improvements to examples;
  • minor improvements to project boilerplate files;
  • updated STLSoft constructs, incl. macros;

0.25.4 - 18th November 2024

  • added CMake MSVC MT support;

0.25.3 - 25th October 2024

  • Fix to colour output at high verbosity levels;

0.25.2 - 22nd October 2024

  • Added and applied CMake functions for examples and test programs;
  • Some refactoring in main header include/xtests/xtests.h;
  • VC++ 19+ warnings;
  • Fixed vulnerability in length-limited string comparisons;
  • Renamed project test.scratch.string_slices.c => test.unit.string_slices.c;

0.25.0 - 20th October 2024

  • no changes;

0.24.0-alpha7 - 18th October 2024

  • Coloured output now bold;
  • Minor fixes to CMake build scripts;

0.24.0-alpha6 - 17th October 2024

  • Expanded shwild integration (including CMake detection);
  • Significant enhancement and refactoring around use of CMake;
  • Added coloured output for test-case / runner names;
  • General tidying;
  • Compatibility with legacy versions of Visual C++;

0.24.0-alpha5 - 15th October 2024

  • Refactored common aspects of example and test main() functions;
  • Language/compiler compatibility fixes, including MinGW-W64 compatibility;
  • CMake build scripts enhancements;

0.24.0-alpha4 - 5th August 2024

  • compatibility with STLSoft 1.11.1-alpha13 or later;

0.24.0-alpha3 - 4th August 2024

  • minimal coloured console output;

0.24.0-alpha2 - 4th August 2024

  • fixed VC++ / CMake configuration;

0.24.0-alpha1 - 3rd August 2024

  • XTESTS_TEST_INTEGER_EQUAL_EXACT(), XTESTS_TEST_INTEGER_NOT_EQUAL(), XTESTS_TEST_INTEGER_GREATER(), XTESTS_TEST_INTEGER_GREATER_OR_EQUAL(), XTESTS_TEST_INTEGER_LESS(), XTESTS_TEST_INTEGER_LESS_OR_EQUAL() are all implemented in terms of _Generic (where supported) in C compilation units in order to be able to report the expected and actual values upon failure (as is done in C++ compilation units);
  • general tidying;

0.23.1 - 14th July 2024

  • Various CMake standardisations and simplifications;

0.22.1 - 9th July 2024

  • Visual C++ 17 (2022) compatibility;
  • CMake Windows compatibility;
  • Small improvements for temp_directory and temp_file;
  • now depends on STLSoft 1.11;

0.21.4 - 28th January 2024

  • Clang 14+ compatibility;
  • CMake scripts improvements;
  • now depends on STLSoft 1.10.6;

0.21.3 - 28th January 2024

  • Clang 14+ compatibility;

0.21.2 - 28th January 2024

  • CMake support minor improvements;

0.21.1 - 11th January 2024

  • fixed include of STLSoft header-file in presence of shwild;

0.21.0 - 2nd January 2024

  • added XTESTS_TEST_MULTIBYTE_STRING_MATCHES() that, in the presence of the shwild library, provides pattern matching;

0.20.5 - 2nd January 2024

  • completed CMake support, with flexible mechanism to select STLSoft dependency;

0.20.4 - 14th December 2023

  • added CMake support;
  • added Doxygen;
  • added makefile(s) for GCC generic version;
  • fix to xtests::cpp::util::temp_directory;
  • fix defect in example;

0.20.3 - 13th December 2020

  • fixed xtests::cpp::util::temp_directory dtor semantics for EmptyOnClose and RemoveOnClose;
  • compatibility with Visual Studio 2019 (16.8.2);

0.20.2 - 30th July 2020

  • added implicit-link support for VC++ 15 and VC++16;
  • added makefile(s) for VC++ 15 and VC++16;
  • various makefile improvements;
  • GCC 8 compatibility;

0.20.1 - 12th October 2019

  • added xtests::cpp::util::temp_file ctor that takes a callback function that is used to provide initial contents of the file;
  • added VC++ 10 project and solution files;
  • fixed range comparison tests;
  • fixing up VC++-specific non-standard token-pasting;
  • removed dependency on/discrimination for STLSoft 1.10 delta (though now works perfectly well with STLSoft 1.10 proper);

0.18.9 - 22nd July 2016

  • fix to 0.18.8 release;
  • NOTE: requires STLSoft 1.9.128;
  • bundles shwild 0.10.1;

0.18.8 - 22nd July 2016

  • changed no-throw declaration from stlsoft_throw_0() to STLSOFT_NOEXCEPT;
  • support for Borland C++ 6.2x;
  • added makefiles for Borland 5.82, 6.1x, 6.2x;
  • significant refactoring of structure of makefiles;
  • strict C-compilation compatibility;
  • NOTE: requires STLSoft 1.9.128;
  • bundles shwild 0.10.1;

0.18.4 - 7th October 2015

  • added temp_directory and temp_file utility classes;
  • now supports test cases that have void* param (for setup param);
  • support for cdecl and stdcall test cases;
  • support for Clang;
  • support for VC++ 11;
  • support for VC++ 12;
  • support for VC++ 14;
  • NOTE: requires STLSoft 1.9.121;
  • bundles shwild 0.10.1;

0.17.1 - 1st March 2013

  • added XTESTS_TEST_MULTIBYTE_STRING_SLICE_EQUAL() / XTESTS_TEST_WIDE_STRING_SLICE_EQUAL() macros for testing string slices;
  • expected/unexpected exception event messages now include file+line;
  • refactoring of implementation;
  • tidying up of makefile gripes;
  • NOTE: requires STLSoft 1.9.117;
  • bundles shwild 0.9.18;

0.16.6 - 16th February 2013

  • improved handling of booleans;
  • VC++ 11 compatibility;
  • NOTE: requires STLSoft 1.9.115;
  • bundles shwild 0.9.18;

0.16.3 - 2nd December 2011

  • workaround for strange behaviour (probably code-generation fault) in GCC 4.2 on Mac OS-X 10.7;
  • NOTE: requires STLSoft 1.9.111;

0.16.2 - 30th November 2010

  • various minor modifications for compatibility with recent versions of GCC 4.X;
  • NOTE: requires STLSoft 1.9.111;

0.16.1 - 13th August 2010

  • added function pointer testing, via XTESTS_TEST_FUNCTION_POINTER_EQUAL() and XTESTS_TEST_FUNCTION_POINTER_NOT_EQUAL();
  • added implicit-link support for VC++ 10;
  • fixes for 64-bit compatibility;
  • NOTE: requires STLSoft 1.9.100;

0.15.2 - 21st June 2010

  • minimal compatibility enhancements;
  • NOTE: requires STLSoft 1.9.99;

0.15.1 - 4th April 2010

  • added in-range testing, via XTESTS_TEST_INTEGER_EQUAL_ANY_IN_RANGE() and XTESTS_TEST_INTEGER_EQUAL_ANY_NOT_IN_RANGE();
  • added XTESTS_ARRAY_END_POST;
  • VC6 compatibility for signed __int16, unsigned __int16, & signed __int1632;
  • NOTE: requires STLSoft 1.9.97;

0.14.4 - 20th January 2010

  • workaround for erroneous Borland compilation error;
  • NOTE: requires STLSoft 1.9.89;

0.14.3 - 19th January 2010

  • removed erroneous debug information in UNIXem release builds;
  • NOTE: requires STLSoft 1.9.89;

0.14.2 - 11th August 2009

  • workaround for minor warning;
  • NOTE: requires STLSoft 1.9.87;

0.14.1 - 13th July 2009

  • added ability to display a summary of only the first case to fail;
  • renamed and add to enumerators of xtests_verbosity_t;
  • NOTE: requires STLSoft 1.9.85;

0.13.3 - 8th July 2009

  • workaround for Intel C/C++ compiler defect;
  • NOTE: requires STLSoft 1.9.85;

0.13.2 - 16th June 2009

  • added XTESTS_REQUIRE(), to allow testing to stop after test failure, to avoid contract violations;
  • NOTE: requires STLSoft 1.9.85;

0.12.1 - 1st May 2009

  • added XTESTS_FLOATINGPOINT_FACTOR_SCOPE scoping class;
  • added XTESTS_TEST_FLOATINGPOINT_NOT_EQUAL_EXACT, XTESTS_TEST_FLOATINGPOINT_NOT_EQUAL_APPROX, and XTESTS_TEST_FLOATINGPOINT_NOT_EQUAL test macros;
  • NOTE: requires STLSoft 1.9.78;

0.11.5 - 25th April 2009

  • fixed defect in XTESTS_START_RUNNER_WITH_REPORTER_AND_STREAM_AND_FLAGS_AND_SETUP_FNS();
  • added implicit link support for Intel C/C++ 10 & 11;
  • allows stream to be NULL, and assumes stdout if no reporter specified;
  • NOTE: requires STLSoft 1.9.77;

0.11.4 - 17th April 2009

  • changes to defn of exceptions & RTTI, for conformance to other library (e.g. Pantheios) makefile templates;
  • now allows compilation absent RTTI;
  • NOTE: now requires STLSoft 1.9.77;

0.11.3 - 15th April 2009

  • fixed defect in internal snprintf() abstraction, which faults on Linux;
  • NOTE: now requires STLSoft 1.9.77;

0.11.2 - 9th March 2009

  • fixed defect in core, whereby snprintf() overrun led to fault;
  • NOTE: now requires STLSoft 1.9.76;

0.11.1 - 6th March 2009

  • added setup / teardown functionality;
  • NOTE: now requires STLSoft 1.9.75;

0.10.4 - 13th February 2009

  • added support for Borland 5.9.x and 6.1.x;
  • added workaround for over-eager warnings in GCC 4.3;
  • NOTE: now requires STLSoft 1.9.74;

0.10.3 - 1st February 2009

  • added ability to suppress reporting of empty test cases;
  • added XTESTS_START_RUNNER_WITH_FLAGS();
  • now uses Windows debugging support when emulating UNIX on Windows;

0.10.2 - 27th January 2009

  • added facilities for length-limiting string comparison;
  • added missing macros for case-insensitive string inequality;
  • added full support for custom reporter functionality;
  • corrected defect whereby s/uint64 integer failures were not counted towards the total;
  • fixed various minor defects;

0.9.3 - 29th December 2008

  • added XTESTS_TEST_ENUM_TRUE() and XTESTS_TEST_ENUM_FALSE();

0.9.2 - 18th November 2008

  • added XTESTS_TEST_BOOLEAN_TRUE() and XTESTS_TEST_BOOLEAN_FALSE();
  • avoid precipitating warnings about unused return values;

0.9.1 - 25th October 2008

  • added xtestsComparisonApproxNotEqual comparison enumerator, and adjusted all comparison operations accordingly;
  • added xtests_testMultibyteStringContains() and xtests_testWideStringContains(), and all corresponding test macros;
  • cleared up some wrong (but benign) code exercised when compiling with exception-support switched off;

0.8.7 - 25th October 2008

  • fixed defective != comparison of signed & unsigned 64-bit integers;

0.8.6 - 19th October 2008

  • added more integer specialisations of xtests_failure_reporter<>;

0.8.5 - 23rd August 2008

  • added call to XTESTS_TEST_PASSED() when an expected exception is received;
  • added more integer specialisations of xtests_failure_reporter<>;
  • fixed a defect in the approximate comparison of negative floating-point numbers;

0.8.4 - 10th August 2008

  • fixed a bug in the reporting mechanism for boolean enforcement failures;

0.8.2 - 16th June 2008

  • elimination of compiler warning on VC++ 8+;

0.8.1 - 5th June 2008

  • added ability to specify output stream (FILE*) when starting a test runner;

0.7.4 - 4th June 2008

  • addition of missing makefiles in the distro;
  • bundles shwild 0.9.18;

0.7.3 - 20th May 2008

  • minor weakening of string comparison;
  • bundles shwild 0.9.17;

0.7.2 - 11th May 2008

  • minor compatibility enhancements;

0.7.1 - 4th May 2008

  • added Win64-compatibility;

0.6.5 - 29th April 2008

  • added compatibity with heterogeneous string types to xtests_writeFailMessage();

0.6.4 - 25th April 2008

  • fix for Sun Pro compatibility;

0.6.3 - 22nd April 2008

  • fix for Borland compilation error with widestring macros;

0.6.2 - 21st April 2008

  • added makefiles for VC9, GCC 4.1 and GCC 4.2;
  • altered library names to use UNIX libXXXX naming convention in UNIX builds;

0.6.1 - 20th April 2008

  • added evaluation of heterogeneous string types, using shim-based type-tunneling;

0.5.2 - 19th April 2008

  • added implicit link support for VC++ 9;

0.5.1 - 16th April 2008

  • added explicit support for character tests;
  • fixed bug in formatting of != tests;

0.4.1 - 13th April 2008

  • added explicit support for boolean tests;

0.3.3 - 18th March 2008

  • fix for wide string support;

0.3.2 - 17th March 2008

  • minor bug fix to prevent confusion about threading models on some UNIX operating systems;

0.3.1 - 15th March 2008

  • added wide string comparison;
  • enhanced multibyte string comparison;

0.2.2 - 13th March 2008

  • minor bug fix in definition of XTEST_TEST_POINTER_???? macros;

0.2.1 - 12th March 2008

  • added support for pointer testing;
  • enhanced string testing;
  • fixed implicit link bug;

0.1.15 - 24th February 2008

  • fixed compilation bug when exception-handling support not enabled;

0.1.14 - 23rd February 2008

  • fix in main header for bug encountered in C compilation units;
  • enhancements to test & example programs;

0.1.13 - 23rd February 2008

  • minor bug fix for Borland compilation;

0.1.12 - 22nd February 2008

  • First public release;