Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
db70716
chore: all unit/component test assertions use xTests Terse API
synesissoftware Aug 8, 2026
565b65f
squash-merge
synesissoftware Aug 8, 2026
7232169
squash-commit
synesissoftware Aug 8, 2026
be1c937
test: expand unit/component coverage across all sub-projects (~708 pr…
synesissoftware Aug 8, 2026
3e5e2c2
fix
synesissoftware Aug 8, 2026
4bb8074
fix
synesissoftware Aug 8, 2026
ce7db83
fix
synesissoftware Aug 8, 2026
32f7dd6
fix
synesissoftware Aug 8, 2026
d41da67
test: add Phase 0 test inventory audit (TESTING.md + audit_tests.py)
synesissoftware Aug 9, 2026
fdf8d2d
fix
synesissoftware Aug 9, 2026
073eb8f
Normalise generated tests towards canonical layout; fix CI scaffolds …
synesissoftware Aug 9, 2026
46e39e5
Merge branch 'dev' into 'test-coverage'
synesissoftware Aug 9, 2026
9fad523
test: add C API validation scaffolds, prune obsolete tests, and refre…
synesissoftware Aug 12, 2026
ecb6cc2
chore: miscellaneous warning fixes
synesissoftware Aug 12, 2026
3e3f266
fix: `stlsoft::string_to_integer_range<>()`
synesissoftware Aug 12, 2026
c1933bc
fix: `stlsoft::sinteger64`
synesissoftware Aug 12, 2026
bcf8432
fix: `stlsoft::unused_return_value_monitor<>()`
synesissoftware Aug 12, 2026
118a2d2
squash-commit
synesissoftware Aug 12, 2026
33104f3
Merge branch 'dev' into 'test-coverage'
synesissoftware Aug 12, 2026
55ceab8
test: emit subject.C from C-API scaffolds; gate removal of test/scripts
synesissoftware Aug 12, 2026
9f98807
TODO.md
synesissoftware Aug 12, 2026
3982c9c
test: rename comstl/util and platformstl unit C programs to subject.C
synesissoftware Aug 12, 2026
ba0df41
chore: ordering
synesissoftware Aug 12, 2026
0b392db
Rename remaining C API tests from infix C.<subject> to suffix <subjec…
synesissoftware Aug 12, 2026
cda9548
chore: tidying
synesissoftware Aug 12, 2026
15e412a
chore: removed "SIS:AUTO_GENERATED" eye-catched in edited CMakeLists.…
synesissoftware Aug 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 2 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ on:
- dev
- boilerplate
- idiomatic
- update.3
- update.4
- ace
- test-consistency
- test-coverage
- rc1
- rc2
- rc3
Expand Down
21 changes: 21 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,27 @@
# STLSoft - CHANGES <!-- omit in toc -->


## 1.11.2-alpha1 - 20th August 2026

TBC


## 1.11.1-rc6 - 12th August 2026

* **Test coverage expansion (1.11.2 increment)** — comprehensive unit- and component-test suites across all sub-projects; **~640 new** test programs (from **86** to **~708** buildable on Unix/macOS);
* **ACESTL** — full unit + component coverage (`shims`, `memory/message_block_functions`, `collections/message_queue_sequence`, `network/socket_functions`, `reactor/custom_event_handler`, …); gated on **`HAS_ACE`**;
* **ATLSTL** — **11** unit tests; **`DEFERRED.md`** documents skipped GUI/`module_scope` components;
* **MFCSTL** — **21** new unit tests (collections, shims, string, util);
* **COMSTL** — **27** unit + **1** component (`rot_functions`); **`SKIPPED.md`** for SAPI/typelib/cross-apartment cases;
* **INETSTL** — exception, filesystem traits/functionals, network session/connection (WinInet sequences intentionally excluded);
* **UnixSTL** — **56** tests (full public API);
* **PlatformSTL** — **53** tests (full public API);
* **WinSTL** — **~200** tests (unit + component; GUI/interactive scopes excluded);
* **STLSoft** — **~300** unit + **~13** component tests for substantive components (`meta/`, `obsolete/`, `internal/` excluded);
* Test infrastructure scripts under **`test/scripts/`** (`scaffold_missing_tests.py`, `generate_*_tests.py`, `fix_failed_tests.py`, …);
* **`test.unit.versions`** — aligned with **1.11.1-rc6** (**`_STLSOFT_VER_1_11_1_RC6`**);


## 1.11.1-rc5 - 9th August 2026

* Fixed `stlsoft::basic_simple_string<>#resize()` — expanding a non-empty string no longer over-reads the source buffer (MinGW unit-test segfault in **test.unit.stlsoft.string.simple_string**);
Expand Down
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

| Date | News Item |
| --------------------- | --------------------------------------------------------- |
| 12th August 2026 | Release of [STLSoft 1.11.1 (release candidate 6)](https://github.com/synesissoftware/STLSoft/releases/tag/1.11.1-rc6) — comprehensive unit/component test coverage across all sub-projects |
| 9th August 2026 | Release of [STLSoft 1.11.1 (release candidate 5)](https://github.com/synesissoftware/STLSoft/releases/tag/1.11.1-rc5) |
| 29th July 2026 | Release of [STLSoft 1.11.1 (release candidate 4)](https://github.com/synesissoftware/STLSoft/releases/tag/1.11.1-rc4) |
| 23rd August 2025 | Release of [STLSoft 1.11.1 (release candidate 3)](https://github.com/synesissoftware/STLSoft/releases/tag/1.11.1-rc3) |
Expand Down
174 changes: 174 additions & 0 deletions TESTING-C.md

Large diffs are not rendered by default.

1,102 changes: 1,102 additions & 0 deletions TESTING.md

Large diffs are not rendered by default.

11 changes: 7 additions & 4 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,20 @@
* [x] ~~~Unit/component tests — adopt **xTests** terse API throughout~~~;
* [ ] Remove **WTL**;
* [ ] Resolve finally the structure and semantics of the top-level execution scripts (**run_all_unit_tests.sh**, **run_all_scratch_tests.sh**, **run_all_examples.sh**, **execute_performance_tests.sh**, and Windows `.cmd` counterparts) on all platforms — discovery globs, execute-bit / artifact restore, zero-match failure, verbosity, and CI wiring;
* [ ] bring in some essential unit-tests from interal repo;
* [ ] bring in some essential unit-tests from internal repo;


### 1.11.2

Dedicated increment: **test analysis and coverage only** — no other product changes in this release.

* [ ] Existing test consistency (deep analysis);
* [x] Coverage of currently untested components — **bulk expansion landed in 1.11.1-rc6** (~640 new test programs);
* [ ] Existing test consistency (deep analysis) — many new tests are compile-verified or smoke-level; behavioural depth still to be improved;
* [ ] Complete coverage of currently tested components (improvement / completion);
* [ ] Coverage of currently untested components;

* [ ] WinSTL / COMSTL / ATLSTL / MFCSTL — Windows CI verification of new suites;
* [ ] STLSoft — deepen behavioural tests for the ~100 compile-only scaffolds; remove or fix vestigial targets;
* [ ] Correct/ensure (and write coding guidelines for) test-function naming;
* [ ] Canonicalise C-language test/example program names to **`subject.C`** (suffix, not infix `.C.`); update inventories after the rename;

### 1.11.3

Expand Down
4 changes: 3 additions & 1 deletion examples/by_library/conversion/sap_cast/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
list(APPEND X_GCC_CUSTOM_WARNINGS_TO_BE_SUPPRESSED
uninitialized
)

list(APPEND X_GCC_CUSTOM_WARNINGS_TO_BE_SUPPRESSED "uninitialized")
define_example_program(sap_cast main.cpp)
7 changes: 5 additions & 2 deletions examples/by_library/conversion/union_cast/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@

list(APPEND X_GCC_CUSTOM_WARNINGS_TO_BE_SUPPRESSED "uninitialized")
list(APPEND X_GCC_CUSTOM_WARNINGS_TO_BE_SUPPRESSED "unused-variable")
list(APPEND X_GCC_CUSTOM_WARNINGS_TO_BE_SUPPRESSED
uninitialized
unused-variable
)

define_example_program(union_cast main.cpp)
2 changes: 2 additions & 0 deletions examples/by_library/memory/auto_buffer/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
list(APPEND X_GCC_CUSTOM_WARNINGS_TO_BE_SUPPRESSED
unused-variable
)

list(APPEND X_MSVC_CUSTOM_WARNINGS_TO_BE_SUPPRESSED
4189
)

define_example_program(auto_buffer main.cpp)
22 changes: 11 additions & 11 deletions include/stlsoft/conversion/string_to_integer_range.hpp
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
/* /////////////////////////////////////////////////////////////////////////
* File: stlsoft/conversion/string_to_integer_range.hpp
* File: stlsoft/conversion/string_to_integer_range.hpp
*
* Purpose: String to integer conversions.
* Purpose: String to integer conversions.
*
* Created: 28th October 2020
* Updated: 21st March 2025
* Created: 28th October 2020
* Updated: 12th August 2026
*
* Home: http://stlsoft.org/
* Home: http://stlsoft.org/
*
* Copyright (c) 2020-2025, Matthew Wilson and Synesis Information Systems
* Copyright (c) 2020-2026, Matthew Wilson and Synesis Information Systems
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
Expand Down Expand Up @@ -53,8 +53,8 @@
#ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
# define STLSOFT_VER_STLSOFT_CONVERSION_HPP_STRING_TO_INTEGER_RANGE_MAJOR 1
# define STLSOFT_VER_STLSOFT_CONVERSION_HPP_STRING_TO_INTEGER_RANGE_MINOR 0
# define STLSOFT_VER_STLSOFT_CONVERSION_HPP_STRING_TO_INTEGER_RANGE_REVISION 1
# define STLSOFT_VER_STLSOFT_CONVERSION_HPP_STRING_TO_INTEGER_RANGE_EDIT 5
# define STLSOFT_VER_STLSOFT_CONVERSION_HPP_STRING_TO_INTEGER_RANGE_REVISION 2
# define STLSOFT_VER_STLSOFT_CONVERSION_HPP_STRING_TO_INTEGER_RANGE_EDIT 6
#endif /* !STLSOFT_DOCUMENTATION_SKIP_SECTION */


Expand Down Expand Up @@ -176,7 +176,7 @@ struct ximpl_string_to_integer_range_util_
return false;
}

if (ximpl_string_to_integer_util_::try_string_to_integer_len_4_(s, len, pfrom, endptr))
if (ximpl_string_to_integer_util_::try_string_to_integer_4slre_(s, len, pfrom, endptr))
{
if (is_negative_(pfrom, T_integer_is_signed_t_()))
{
Expand Down Expand Up @@ -229,7 +229,7 @@ struct ximpl_string_to_integer_range_util_
return true;
}

if (ximpl_string_to_integer_util_::try_string_to_integer_len_4_(s, len, pto, endptr))
if (ximpl_string_to_integer_util_::try_string_to_integer_4slre_(s, len, pto, endptr))
{
return true;
}
Expand Down Expand Up @@ -311,7 +311,7 @@ struct ximpl_string_to_integer_range_util_
return true;
}

if (ximpl_string_to_integer_util_::try_string_to_integer_len_4_(s, len, pto, endptr))
if (ximpl_string_to_integer_util_::try_string_to_integer_4slre_(s, len, pto, endptr))
{
return true;
}
Expand Down
8 changes: 5 additions & 3 deletions include/stlsoft/stlsoft.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* and platform discriminations, and definitions of types.
*
* Created: 15th January 2002
* Updated: 9th August 2026
* Updated: 12th August 2026
*
* Home: http://stlsoft.org/
*
Expand Down Expand Up @@ -390,12 +390,14 @@
# define _STLSOFT_VER_1_11_1_RC3 0x010b01c3 /*!< Version 1.11.1 rc 3 (23rd August 2025) */
# define _STLSOFT_VER_1_11_1_RC4 0x010b01c4 /*!< Version 1.11.1 rc 4 (1st July 2026) */
# define _STLSOFT_VER_1_11_1_RC5 0x010b01c5 /*!< Version 1.11.1 rc 5 (9th August 2026) */
# define _STLSOFT_VER_1_11_1_RC6 0x010b01c6 /*!< Version 1.11.1 rc 6 (12th August 2026) */
# define _STLSOFT_VER_1_11_2_A1 0x010b0241 /*!< Version 1.11.2 alpha 1 (20th August 2026) */
#endif /* !STLSOFT_DOCUMENTATION_SKIP_SECTION */

#define _STLSOFT_VER_MAJOR 1
#define _STLSOFT_VER_MINOR 11
#define _STLSOFT_VER_PATCH 1
#define _STLSOFT_VER_ALPHABETA 0xc5
#define _STLSOFT_VER_PATCH 2
#define _STLSOFT_VER_ALPHABETA 0x41

#define _STLSOFT_VER \
(0\
Expand Down
20 changes: 10 additions & 10 deletions include/stlsoft/string/charset_tokeniser.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
* Purpose: String token parsing class using char-sets.
*
* Created: 17th October 2005
* Updated: 20th March 2025
* Updated: 12th August 2026
*
* Home: http://stlsoft.org/
*
* Copyright (c) 2019-2025, Matthew Wilson and Synesis Information Systems
* Copyright (c) 2019-2026, Matthew Wilson and Synesis Information Systems
* Copyright (c) 2005-2019, Matthew Wilson and Synesis Software
* All rights reserved.
*
Expand Down Expand Up @@ -54,8 +54,8 @@
#ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
# define STLSOFT_VER_STLSOFT_STRING_HPP_CHARSET_TOKENISER_MAJOR 2
# define STLSOFT_VER_STLSOFT_STRING_HPP_CHARSET_TOKENISER_MINOR 0
# define STLSOFT_VER_STLSOFT_STRING_HPP_CHARSET_TOKENISER_REVISION 8
# define STLSOFT_VER_STLSOFT_STRING_HPP_CHARSET_TOKENISER_EDIT 40
# define STLSOFT_VER_STLSOFT_STRING_HPP_CHARSET_TOKENISER_REVISION 9
# define STLSOFT_VER_STLSOFT_STRING_HPP_CHARSET_TOKENISER_EDIT 41
#endif /* !STLSOFT_DOCUMENTATION_SKIP_SECTION */


Expand Down Expand Up @@ -117,7 +117,7 @@ struct charset_comparator
}

template <ss_typename_param_k const_iterator>
static const_iterator advance_(const_iterator it, delimiter_type const& delimiter)
static const_iterator advance_(const_iterator it, delimiter_type const& /* delimiter */)
{
return it + 1;
}
Expand All @@ -138,31 +138,31 @@ struct charset_comparator
}

template <ss_typename_param_k const_iterator>
static bool test_start_token_advance(const_iterator &it, const_iterator end, delimiter_type const& delimiter)
static bool test_start_token_advance(const_iterator &it, const_iterator /* end */, delimiter_type const& delimiter)
{
return equal_(delimiter, it) ? (it = advance_(it, delimiter), true) : false;
}

template <ss_typename_param_k const_iterator>
static bool test_end_token_advance(const_iterator &it, const_iterator end, delimiter_type const& delimiter)
static bool test_end_token_advance(const_iterator &it, const_iterator /* end */, delimiter_type const& delimiter)
{
return equal_(delimiter, it) ? (it = advance_(it, delimiter), true) : false;
}

template <ss_typename_param_k const_iterator>
static const_iterator nonskip_move_to_start(const_iterator it, const_iterator end, delimiter_type const& delimiter)
static const_iterator nonskip_move_to_start(const_iterator it, const_iterator /* end */, delimiter_type const& /* delimiter */)
{
return it;
}

template <ss_typename_param_k const_iterator>
static bool test_end_token(const_iterator it, const_iterator end, delimiter_type const& delimiter)
static bool test_end_token(const_iterator it, const_iterator /* end */, delimiter_type const& delimiter)
{
return equal_(delimiter, it);
}

template <ss_typename_param_k const_iterator>
static const_iterator find_next_start(const_iterator it, const_iterator end, delimiter_type const& delimiter)
static const_iterator find_next_start(const_iterator it, const_iterator /* end */, delimiter_type const& delimiter)
{
return advance_(it, delimiter);
}
Expand Down
23 changes: 15 additions & 8 deletions include/stlsoft/util/64bit_integers.hpp
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
/* /////////////////////////////////////////////////////////////////////////
* File: stlsoft/util/64bit_integers.hpp
* File: stlsoft/util/64bit_integers.hpp
*
* Purpose: Byte-order independent large integer (aggregate) classes.
* Purpose: Byte-order independent large integer (aggregate) classes.
*
* Created: 15th October 2000
* Updated: 20th March 2025
* Created: 15th October 2000
* Updated: 12th August 2026
*
* Home: http://stlsoft.org/
* Home: http://stlsoft.org/
*
* Copyright (c) 2019-2025, Matthew Wilson and Synesis Information Systems
* Copyright (c) 2019-2026, Matthew Wilson and Synesis Information Systems
* Copyright (c) 2000-2019, Matthew Wilson and Synesis Software
* All rights reserved.
*
Expand Down Expand Up @@ -53,8 +53,8 @@
#ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
# define STLSOFT_VER_STLSOFT_UTIL_HPP_64BIT_INTEGERS_MAJOR 5
# define STLSOFT_VER_STLSOFT_UTIL_HPP_64BIT_INTEGERS_MINOR 1
# define STLSOFT_VER_STLSOFT_UTIL_HPP_64BIT_INTEGERS_REVISION 5
# define STLSOFT_VER_STLSOFT_UTIL_HPP_64BIT_INTEGERS_EDIT 144
# define STLSOFT_VER_STLSOFT_UTIL_HPP_64BIT_INTEGERS_REVISION 6
# define STLSOFT_VER_STLSOFT_UTIL_HPP_64BIT_INTEGERS_EDIT 145
#endif /* !STLSOFT_DOCUMENTATION_SKIP_SECTION */


Expand Down Expand Up @@ -110,6 +110,8 @@ class sinteger64
sinteger64(long i);
#endif /* STLSOFT_CF_LONG_DISTINCT_INT_TYPE */

sinteger64(class_type const& rhs);

class_type& operator =(class_type const& rhs);
class_type& operator =(ss_sint8_t i);
class_type& operator =(ss_sint16_t i);
Expand Down Expand Up @@ -357,6 +359,11 @@ inline sinteger64::sinteger64(long i)
{}
#endif /* STLSOFT_CF_LONG_DISTINCT_INT_TYPE */

inline sinteger64::sinteger64(class_type const& rhs)
: m_low(rhs.m_low)
, m_high(rhs.m_high)
{}

inline sinteger64::class_type& sinteger64::operator =(class_type const& rhs)
{
m_high = rhs.m_high;
Expand Down
10 changes: 5 additions & 5 deletions include/stlsoft/util/bits/count_functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
* Purpose: Bit count functions.
*
* Created: 2nd June 2010
* Updated: 11th March 2024
* Updated: 12th August 2026
*
* Home: http://stlsoft.org/
*
* Copyright (c) 2019-2024, Matthew Wilson and Synesis Information Systems
* Copyright (c) 2019-2026, Matthew Wilson and Synesis Information Systems
* Copyright (c) 2010-2019, Matthew Wilson and Synesis Software
* All rights reserved.
*
Expand Down Expand Up @@ -53,8 +53,8 @@
#ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
# define STLSOFT_VER_STLSOFT_UTIL_BITS_H_COUNT_FUNCTIONS_MAJOR 1
# define STLSOFT_VER_STLSOFT_UTIL_BITS_H_COUNT_FUNCTIONS_MINOR 3
# define STLSOFT_VER_STLSOFT_UTIL_BITS_H_COUNT_FUNCTIONS_REVISION 1
# define STLSOFT_VER_STLSOFT_UTIL_BITS_H_COUNT_FUNCTIONS_EDIT 19
# define STLSOFT_VER_STLSOFT_UTIL_BITS_H_COUNT_FUNCTIONS_REVISION 2
# define STLSOFT_VER_STLSOFT_UTIL_BITS_H_COUNT_FUNCTIONS_EDIT 20
#endif /* !STLSOFT_DOCUMENTATION_SKIP_SECTION */


Expand Down Expand Up @@ -100,7 +100,7 @@ namespace ximpl_bit_functions

static
stlsoft_C_count_functions_table_ptr_type
stlsoft_C_count_functions_get_8bit_table()
stlsoft_C_count_functions_get_8bit_table(void)
{
static const ss_uint8_t s_table[256] =
{
Expand Down
10 changes: 5 additions & 5 deletions include/stlsoft/util/unused_return_value_monitor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
* Purpose: Basic functionals.
*
* Created: 8th June 2002
* Updated: 20th March 2025
* Updated: 12th August 2026
*
* Home: http://stlsoft.org/
*
* Copyright (c) 2019-2025, Matthew Wilson and Synesis Information Systems
* Copyright (c) 2019-2026, Matthew Wilson and Synesis Information Systems
* Copyright (c) 2002-2019, Matthew Wilson and Synesis Software
* All rights reserved.
*
Expand Down Expand Up @@ -54,8 +54,8 @@
#ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
# define STLSOFT_VER_STLSOFT_UTIL_HPP_UNUSED_RETURN_VALUE_MONITOR_MAJOR 4
# define STLSOFT_VER_STLSOFT_UTIL_HPP_UNUSED_RETURN_VALUE_MONITOR_MINOR 0
# define STLSOFT_VER_STLSOFT_UTIL_HPP_UNUSED_RETURN_VALUE_MONITOR_REVISION 8
# define STLSOFT_VER_STLSOFT_UTIL_HPP_UNUSED_RETURN_VALUE_MONITOR_EDIT 60
# define STLSOFT_VER_STLSOFT_UTIL_HPP_UNUSED_RETURN_VALUE_MONITOR_REVISION 9
# define STLSOFT_VER_STLSOFT_UTIL_HPP_UNUSED_RETURN_VALUE_MONITOR_EDIT 61
#endif /* !STLSOFT_DOCUMENTATION_SKIP_SECTION */


Expand Down Expand Up @@ -186,7 +186,7 @@ class unused_return_value_monitor
, m_monitorFn(rhs.m_monitorFn)
, m_bUsed(rhs.m_bUsed)
{
const_cast<class_type&>(rhs)->m_bUsed = false;
const_cast<class_type&>(rhs).m_bUsed = false;
}
/// Destructor
///
Expand Down
Loading
Loading