### JLS-01 | Reviewed: ⨯ | Score: 0.0 The CI pipeline in nlohmann/json executes the unit and integration test suites on each pull request (opened, reopened, synchronized). **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-VALIDATION](TA.md#ta-validation) | All specified tests are executed repeatedly, under defined conditions in controlled environments, according to specified objectives. (To revisit) | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/nlohmann/json/blob/develop/.github/workflows/ubuntu.yml#L9` `https://github.com/nlohmann/json/blob/develop/.github/workflows/ubuntu.yml#L9` - The trigger condition for the CI workflow that executes the test suites. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-01.svg) |date-time|JLS-01| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-02 | Reviewed: ⨯ | Score: 0.0 Fuzz testing is used in the original nlohmann/json repository (https://github.com/nlohmann/json) to uncover edge cases and failure modes throughout development. (https://github.com/nlohmann/json/blob/develop/tests/fuzzing.md) **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-MISBEHAVIOURS](TA.md#ta-misbehaviours) | Prohibited misbehaviours for the nlohmann/json library are identified, and mitigations are specified, verified and validated based on analysis. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://introspector.oss-fuzz.com/project-profile?project=json` `https://introspector.oss-fuzz.com/project-profile?project=json` - most recent report for fuzzing introspection of nlohmann/json with historical plots - `website: https://storage.googleapis.com/oss-fuzz-introspector/json/inspector-report/20250824/fuzz_report.html` `https://storage.googleapis.com/oss-fuzz-introspector/json/inspector-report/20250824/fuzz_report.html` - persistent storage of fuzz-testing-report for nlohmann/json version 3.12.0 on 24.08.2025 - `website: https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/.github/workflows/cifuzz.yml` `https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/.github/workflows/cifuzz.yml` - Configuration file for Fuzz-Testing pipeline in the original nlohmann/json repository - `website: https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` `https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` - OpenSSF Scorecard Report for nlohmann/json, where score for 'Fuzzing' supports this statement. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-02.svg) |date-time|JLS-02| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-03 | Reviewed: ⨯ | Score: 0.0 Automated tests within the TSF documentation are reviewed by a Subject Matter Expert to verify they test the properties they claim to. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-BEHAVIOURS](TA.md#ta-behaviours) | Expected or required behaviours for the nlohmann/json library are identified, specified, verified and validated based on analysis. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** _None_ **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-03.svg) |date-time|JLS-03| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-04 | Reviewed: ⨯ | Score: 0.0 External dependencies within nlohmann/json are checked for potential security vulnerabilities with each pull request to main. Merging is blocked until all warnings are resolved. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-FIXES](TA.md#ta-fixes) | In the nlohmann/json repository, known bugs or misbehaviours are analysed and triaged, and critical fixes or mitigations are implemented or applied. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | | [TA-INPUTS](TA.md#ta-inputs) | All inputs to the nlohmann/json library are assessed, to identify potential risks and issues. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `.github/workflows/dependency-review.yml` ````yaml # Dependency Review Action # # This Action will scan dependency manifest files that change as part of a Pull Request, # surfacing known-vulnerable versions of the packages declared or updated in the PR. # Once installed, if the workflow run is marked as required, # PRs introducing known-vulnerable packages will be blocked from merging. # # Source repository: https://github.com/actions/dependency-review-action name: 'Dependency Review' on: workflow_call: inputs: artifact_id: description: 'Unique identifier for artifacts' required: true type: string permissions: contents: read jobs: dependency-review: runs-on: ubuntu-latest steps: - name: Harden Runner uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - name: 'Checkout Repository' uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: 'Dependency Review' uses: actions/dependency-review-action@ce3cf9537a52e8119d91fd484ab5b8a807627bf8 # v4.6.0 - name: Generate dependency_review artifact run: | echo "Generating Dependency Review artifact..." mkdir -p dependency_review echo "dependency review processed for ${{ inputs.artifact_id }}" > dependency_review/dependency_review.txt - name: Upload dependency_review artifact uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ${{ inputs.artifact_id }} path: dependency_review/ ```` - Description: The workflow scans PRs for dependency changes and vulnerabilities. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-04.svg) |date-time|JLS-04| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-05 | Reviewed: ⨯ | Score: 0.0 The nlohmann/json library is widely used and actively maintained; bugs and misbehaviours are tracked publicly and transparently. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-FIXES](TA.md#ta-fixes) | In the nlohmann/json repository, known bugs or misbehaviours are analysed and triaged, and critical fixes or mitigations are implemented or applied. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/nlohmann/json/issues` `https://github.com/nlohmann/json/issues` - contains the collected github-issues for nlohmann/json - `website: https://github.com/nlohmann/json/graphs/commit-activity` `https://github.com/nlohmann/json/graphs/commit-activity` - presents the commit activity of the past year - `website: https://github.com/nlohmann/json/graphs/contributors` `https://github.com/nlohmann/json/graphs/contributors` - presents commits over time and per contributor - `website: https://github.com/nlohmann/json/forks?include=active&page=1&period=&sort_by=last_updated` `https://github.com/nlohmann/json/forks?include=active&page=1&period=&sort_by=last_updated` - lists all forks of nlohmann/json by last updated - `website: https://github.com/nlohmann/json/pulse` `https://github.com/nlohmann/json/pulse` - presents activity over the past week - `website: https://github.com/orgs/score-json/discussions/27#discussion-8594385` `https://github.com/orgs/score-json/discussions/27#discussion-8594385` - comparison between JSON libraries demonstrating the popularity of nlohmann/json - `website: https://json.nlohmann.me/home/customers/` `https://json.nlohmann.me/home/customers/` - presents a list of a subset of all customers who are using the nlohmann/json library - `website: https://github.com/nlohmann/json/releases/tag/v3.12.0` `https://github.com/nlohmann/json/releases/tag/v3.12.0` - release notes for v3.12.0, listing bugs, CVEs and warnings which were either fixed or mitigated since last release **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-05.svg) |date-time|JLS-05| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-06 | Reviewed: ⨯ | Score: 0.0 Pull requests in the nlohmann/json repository are merged only after code review. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-UPDATES](TA.md#ta-updates) | nlohmann/json library components, configurations and tools are updated under specified change and configuration management controls. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` `https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` - OpenSSF Scorecard Report for nlohmann/json, where score for 'Code-Review' reflects this statement. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-06.svg) |date-time|JLS-06| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-07 | Reviewed: ⨯ | Score: 0.0 The develop branch of nlohmann/json is protected, i.e. no direct commits are possible. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-UPDATES](TA.md#ta-updates) | nlohmann/json library components, configurations and tools are updated under specified change and configuration management controls. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/nlohmann/json/actions?query=event%3Apush+branch%3Adevelop` `https://github.com/nlohmann/json/actions?query=event%3Apush+branch%3Adevelop` - List of all pushes to the develop branch in nlohmann/json, showing that all commits are done by nlohmann and indicating that direct commits are not possible. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-07.svg) |date-time|JLS-07| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-08 | Reviewed: ⨯ | Score: 0.0 Each statement within the TSF documentation is scored based on SME reviews or automatic validation functions. (TODO) **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-CONFIDENCE](TA.md#ta-confidence) | Confidence in the nlohmann/json library is measured based on results of analysis. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** _None_ **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-08.svg) |date-time|JLS-08| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-09 | Reviewed: ⨯ | Score: 0.0 Scores within the TSF documentation are reasonably, systematically and repeatably accumulated. (TODO) **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-CONFIDENCE](TA.md#ta-confidence) | Confidence in the nlohmann/json library is measured based on results of analysis. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** _None_ **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-09.svg) |date-time|JLS-09| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-10 | Reviewed: ⨯ | Score: 0.0 Every release of nlohmann/json includes source code, build instructions, tests and attestations. (TODO: Test result summary) **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-ITERATIONS](TA.md#ta-iterations) | All constructed iterations of the nlohmann/json library include source code, build instructions, tests, results and attestations. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** _None_ **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-10.svg) |date-time|JLS-10| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-11 | Reviewed: ⨯ | Score: 0.0 Outstanding bugs or misbehaviours are analyzed within eclipse-score/inc_nlohmann_json to determine whether they are relevant for S-CORE's use cases of the nlohmann/json library. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-FIXES](TA.md#ta-fixes) | In the nlohmann/json repository, known bugs or misbehaviours are analysed and triaged, and critical fixes or mitigations are implemented or applied. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/eclipse-score/inc_nlohmann_json/blob/save_historical_data/TSF/misbehaviours.md` `https://github.com/eclipse-score/inc_nlohmann_json/blob/save_historical_data/TSF/misbehaviours.md` - List of outstanding bugs as well as fixes for developed code that are outstanding, not yet applied. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-11.svg) |date-time|JLS-11| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-12 | Reviewed: ⨯ | Score: 0.0 The nlohmann/json repository has well-defined community standards, including a contribution guideline and a security policy. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-UPDATES](TA.md#ta-updates) | nlohmann/json library components, configurations and tools are updated under specified change and configuration management controls. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/nlohmann/json/community` `https://github.com/nlohmann/json/community` - List of defined community standards in nlohmann/json **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-12.svg) |date-time|JLS-12| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-13 | Reviewed: ⨯ | Score: 0.0 The S-Core methodologies are followed in eclipse-score/inc_nlohmann_json. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-METHODOLOGIES](TA.md#ta-methodologies) | Manual methodologies applied for the nlohmann/json library by contributors, and their results, are managed according to specified objectives. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://eclipse-score.github.io/process_description/main/general_concepts/score_review_concept.html` `https://eclipse-score.github.io/process_description/main/general_concepts/score_review_concept.html` - Documentation of S-CORE methodologies **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-13.svg) |date-time|JLS-13| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-14 | Reviewed: ⨯ | Score: 0.0 The SHA value of the nlohmann/json library in use within eclipse-score/inc_nlohmann_json coincides with the SHA value provided by Niels Lohmann for that version. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-RELEASES](TA.md#ta-releases) | Construction of releases for the nlohmann/json library is fully repeatable and the results are fully reproducible, with any exceptions documented and justified. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/nlohmann/json/tree/v3.12.0` `https://github.com/nlohmann/json/tree/v3.12.0` - release site of nlohmann/json containing the sha values **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-14.svg) |date-time|JLS-14| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-16 | Reviewed: ⨯ | Score: 0.0 A list of tests, which is extracted from the test execution, is provided, along with a list of test environments. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-TESTS](TA.md#ta-tests) | All tests for the nlohmann/json library, and its build and test environments, are constructed from controlled/mirrored sources and are reproducible, with any exceptions documented. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `TSF/docs/list_of_test_environments.md` ````md ## List of all unit-tests with test environments This list contains all unit-tests possibly running in this project. These tests are compiled from the source-code, where the individual unit-tests are arranged in TEST_CASEs containing possibly nested SECTIONs. To reflect the structure of the nested sections, nested lists are utilised, where the top-level list represents the list of TEST_CASEs. It should be noted that not all unit-tests in a test-file are executed with every compiler-configuration. ### List of tests in file unit-32bit.cpp * value_in_range_of trait * 32bit * BJData * parse errors * array * optimized array: negative size * optimized array: integer value overflow All tests in this file were run in the following configurations: * Linux-g++ with standard gnu++11 ### List of tests in file unit-algorithms.cpp * algorithms * non-modifying sequence operations * std::all_of * std::any_of * std::none_of * std::for_each * reading * writing * std::count * std::count_if * std::mismatch * std::equal * using operator== * using user-defined comparison * std::find * std::find_if * std::find_if_not * std::adjacent_find * modifying sequence operations * std::reverse * std::rotate * std::partition * sorting operations * std::sort * with standard comparison * with user-defined comparison * sorting an object * std::partial_sort * set operations * std::merge * std::set_difference * std::set_intersection * std::set_union * std::set_symmetric_difference * heap operations * iota * int * double * char * copy * copy without if * copy if * copy n * copy n chars All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-allocator.cpp * bad_alloc * bad_alloc * controlled bad_alloc * class json_value * json_value(value_t) * object * array * string * json_value(const string_t&) * class basic_json * basic_json(const CompatibleObjectType&) * basic_json(const CompatibleArrayType&) * basic_json(const typename string_t::value_type*) * basic_json(const typename string_t::value_type*) * bad my_allocator::construct * my_allocator::construct doesn't forward All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-alt-string.cpp * alternative string type * dump * parse * items * equality * JSON pointer * patch * diff * flatten All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-arrays.cpp * accept * boundaries * parse * whitespace All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-assert_macro.cpp * JSON_ASSERT(x) * basic_json(first, second) All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-binary_formats.cpp * Binary Formats * canada.json * twitter.json * citm_catalog.json * jeopardy.json * sample.json All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using GNU 11.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 8.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.9.3 with standard gnu++11 * 1 test case was skipped when using Clang 18.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 12.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 10.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 9.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 6.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 19.1.7 with standard gnu++11 * 1 test case was skipped when using Clang 17.0.6 with standard gnu++11 * 1 test case was skipped when using Intel 2021.5.0.20211109 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 7.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 5.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.8.5 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-bjdata.cpp * value_in_range_of trait * BJData * binary_reader BJData LUT arrays are sorted * individual values * discarded * null * boolean * true * false * byte * 0..255 (uint8) * number * signed * -9223372036854775808..-2147483649 (int64) * -2147483648..-32769 (int32) * -32768..-129 (int16) * -9263 (int16) * -128..-1 (int8) * 0..127 (int8) * 128..255 (uint8) * 256..32767 (int16) * 32768..65535 (uint16) * 65536..2147483647 (int32) * 2147483648..4294967295 (uint32) * 4294967296..9223372036854775807 (int64) * 9223372036854775808..18446744073709551615 (uint64) * unsigned * 0..127 (int8) * 128..255 (uint8) * 256..32767 (int16) * 32768..65535 (uint16) * 65536..2147483647 (int32) * 2147483648..4294967295 (uint32) * 4294967296..9223372036854775807 (int64) * 9223372036854775808..18446744073709551615 (uint64) * float64 * 3.1415925 * half-precision float * simple half floats * errors * no byte follows * only one byte follows * half-precision float (edge cases) * exp = 0b00000 * 0 (0 00000 0000000000) * -0 (1 00000 0000000000) * 2**-24 (0 00000 0000000001) * exp = 0b11111 * infinity (0 11111 0000000000) * -infinity (1 11111 0000000000) * other values from https://en.wikipedia.org/wiki/Half-precision_floating-point_format * 1 (0 01111 0000000000) * -2 (1 10000 0000000000) * 65504 (0 11110 1111111111) * infinity * NaN * high-precision number * unsigned integer number * signed integer number * floating-point number * errors * string * N = 0..127 * N = 128..255 * N = 256..32767 * N = 32768..65535 * N = 65536..2147483647 * binary * N = 0..127 * N = 128..255 * N = 256..32767 * N = 32768..65535 * N = 65536..2147483647 * Other Serializations * No Count No Type * Yes Count No Type * array * empty * size=false type=false * size=true type=false * size=true type=true * [null] * size=false type=false * size=true type=false * size=true type=true * [1,2,3,4,5] * size=false type=false * size=true type=false * size=true type=true * [[[[]]]] * size=false type=false * size=true type=false * size=true type=true * array with int16_t elements * size=false type=false * size=true type=false * array with uint16_t elements * size=false type=false * size=true type=false * array with int32_t elements * size=false type=false * size=true type=false * object * empty * size=false type=false * size=true type=false * size=true type=true * {\ * size=false type=false * size=true type=false * {\ * size=false type=false * size=true type=false * size=true type=true ignore object type marker * errors * strict mode * non-strict mode * strict mode * SAX aborts * start_array() * start_object() * key() in object * start_array(len) * start_object(len) * key() in object with length * start_array() in ndarray _ArraySize_ * number_integer() in ndarray _ArraySize_ * key() in ndarray _ArrayType_ * string() in ndarray _ArrayType_ * key() in ndarray _ArrayData_ * string() in ndarray _ArrayData_ * string() in ndarray _ArrayType_ * start_array() in ndarray _ArrayData_ * parsing values * strings * number * float * array * optimized version (length only) * optimized version (type and length) * optimized ndarray (type and vector-size as optimized 1D array) * optimized ndarray (type and vector-size ndarray with JData annotations) * optimized ndarray (type and vector-size as 1D array) * optimized ndarray (type and vector-size as size-optimized array) * invalid ndarray annotations remains as object * parse errors * empty byte vector * char * eof after C byte * byte out of range * byte * parse bjdata markers in ubjson * strings * eof after S byte * invalid byte * parse bjdata markers in ubjson * array * optimized array: no size following type * optimized array: negative size * optimized array: integer value overflow * do not accept NTFZ markers in ndarray optimized type (with count) * do not accept NTFZ markers in ndarray optimized type (without count) * strings * sizes * parse bjdata markers as array size in ubjson * types * arrays * ndarrays * objects * writing optimized values * integer * array of i * array of U * array of I * array of u * array of l * array of m * array of L * unsigned integer * array of i * array of U * array of I * array of u * array of l * array of m * array of L * array of M * Universal Binary JSON Specification Examples 1 * Null Value * No-Op Value * Boolean Types * Numeric Types * Char Type * Byte Type * String Type * English * Russian * Russian * Array Type * size=false type=false * size=true type=false * size=true type=true * Object Type * size=false type=false * size=true type=false * size=true type=true * Optimized Format * Array Example * No Optimization * Optimized with count * Optimized with type & count * Object Example * No Optimization * Optimized with count * Optimized with type & count * Special Cases (Null, No-Op and Boolean) * Array * Object * all BJData first bytes * BJData roundtrips * input from self-generated BJData files All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using GNU 11.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 8.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.9.3 with standard gnu++11 * 1 test case was skipped when using Clang 18.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 12.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 10.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 9.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 6.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 19.1.7 with standard gnu++11 * 1 test case was skipped when using Clang 17.0.6 with standard gnu++11 * 1 test case was skipped when using Intel 2021.5.0.20211109 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 7.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 5.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.8.5 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-bson.cpp * BSON * individual values not supported * null * boolean * true * false * number * float * string * array * keys containing code-point U+0000 cannot be serialized to BSON * string length must be at least 1 * objects * empty object * non-empty object with bool * non-empty object with bool * non-empty object with double * non-empty object with string * non-empty object with null member * non-empty object with integer (32-bit) member * non-empty object with integer (64-bit) member * non-empty object with negative integer (32-bit) member * non-empty object with negative integer (64-bit) member * non-empty object with unsigned integer (64-bit) member * non-empty object with small unsigned integer member * non-empty object with object member * non-empty object with array member * non-empty object with non-empty array member * non-empty object with binary member * non-empty object with binary member with subtype * Some more complex document * Examples from https://bsonspec.org/faq.html * Example 1 * Example 2 * BSON input/output_adapters * roundtrips * std::ostringstream * std::string * std::vector * Incomplete BSON Input * Incomplete BSON Input 1 * Incomplete BSON Input 2 * Incomplete BSON Input 3 * Incomplete BSON Input 4 * Improve coverage * key * array * Negative size of binary value * Unsupported BSON input * BSON numerical data * number * signed * std::int64_t: INT64_MIN .. INT32_MIN-1 * signed std::int32_t: INT32_MIN .. INT32_MAX * signed std::int64_t: INT32_MAX+1 .. INT64_MAX * unsigned * unsigned std::uint64_t: 0 .. INT32_MAX * unsigned std::uint64_t: INT32_MAX+1 .. INT64_MAX * unsigned std::uint64_t: INT64_MAX+1 .. UINT64_MAX * BSON roundtrips * reference files All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using GNU 11.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 8.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.9.3 with standard gnu++11 * 1 test case was skipped when using Clang 18.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 12.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 10.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 9.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 6.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 19.1.7 with standard gnu++11 * 1 test case was skipped when using Clang 17.0.6 with standard gnu++11 * 1 test case was skipped when using Intel 2021.5.0.20211109 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 7.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 5.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.8.5 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-byte_container_with_subtype.cpp * byte_container_with_subtype * empty container * subtyped container * comparisons All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-byte_order_mark.cpp * accept * UTF-8 * single BOM * multiple BOM * unexpected BOM * Other byte-order marks * UTF-16 * UTF-32 * parse * UTF-8 * multiple BOM * unexpected BOM * other BOM * UTF-16 * UTF-32 All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-capacity.cpp * capacity * empty() * boolean * result of empty * definition of empty * string * result of empty * definition of empty * array * empty array * result of empty * definition of empty * filled array * result of empty * definition of empty * object * empty object * result of empty * definition of empty * filled object * result of empty * definition of empty * number (integer) * result of empty * definition of empty * number (unsigned) * result of empty * definition of empty * number (float) * result of empty * definition of empty * null * result of empty * definition of empty * size() * boolean * result of size * definition of size * string * result of size * definition of size * array * empty array * result of size * definition of size * filled array * result of size * definition of size * object * empty object * result of size * definition of size * filled object * result of size * definition of size * number (integer) * result of size * definition of size * number (unsigned) * result of size * definition of size * number (float) * result of size * definition of size * null * result of size * definition of size * max_size() * boolean * result of max_size * string * result of max_size * array * empty array * result of max_size * filled array * result of max_size * object * empty object * result of max_size * filled object * result of max_size * number (integer) * result of max_size * number (unsigned) * result of max_size * number (float) * result of max_size * null * result of max_size All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-cbor.cpp * CBOR * individual values * discarded * NaN * Infinity * null * boolean * true * false * number * signed * -9223372036854775808..-4294967297 * -4294967296..-65537 * -65536..-257 * -9263 (int 16) * -256..-24 * -24..-1 * 0..23 * 24..255 * 256..65535 * 65536..4294967295 * 4294967296..4611686018427387903 * -32768..-129 (int 16) * unsigned * 0..23 (Integer) * 24..255 (one-byte uint8_t) * 256..65535 (two-byte uint16_t) * 65536..4294967295 (four-byte uint32_t) * 4294967296..4611686018427387903 (eight-byte uint64_t) * double-precision float * 3.1415925 * single-precision float * 0.5 * 0.0 * -0.0 * 100.0 * 200.0 * 3.40282e+38(max float) * -3.40282e+38(lowest float) * 1 + 3.40282e+38(more than max float) * -1 - 3.40282e+38(less than lowest float) * half-precision float (edge cases) * errors * no byte follows * only one byte follows * exp = 0b00000 * 0 (0 00000 0000000000) * -0 (1 00000 0000000000) * 2**-24 (0 00000 0000000001) * exp = 0b11111 * infinity (0 11111 0000000000) * -infinity (1 11111 0000000000) * other values from https://en.wikipedia.org/wiki/Half-precision_floating-point_format * 1 (0 01111 0000000000) * -2 (1 10000 0000000000) * 65504 (0 11110 1111111111) * infinity * NaN * string * N = 0..23 * N = 24..255 * N = 256..65535 * N = 65536..4294967295 * array * empty * [null] * [1,2,3,4,5] * [[[[]]]] * array with uint16_t elements * array with uint32_t elements * object * empty * {\ * {\ * object with uint8_t elements * object with uint16_t elements * object with uint32_t elements * binary * N = 0..23 * N = 24..255 * N = 256..65535 * N = 65536..4294967295 * indefinite size * binary in array * binary in object * SAX callback with binary * additional deserialization * 0x5b (byte array) * 0x7b (string) * 0x9b (array) * 0xbb (map) * errors * empty byte vector * too short byte vector * unsupported bytes * concrete examples * all unsupported bytes * invalid string in map * strict mode * non-strict mode * strict mode * SAX aborts * start_array(len) * start_object(len) * key() * single CBOR roundtrip * sample.json * roundtrips * std::ostringstream * std::string * CBOR regressions * fuzz test results * CBOR roundtrips * input from flynn * all CBOR first bytes * examples from RFC 7049 Appendix A * numbers * simple values * strings * byte arrays * arrays * objects * Tagged values * 0xC6..0xD4 * 0xD8 - 1 byte follows * success * missing byte after tag * 0xD9 - 2 byte follow * success * missing byte after tag * 0xDA - 4 bytes follow * success * missing bytes after tag * 0xDB - 8 bytes follow * success * missing byte after tag * tagged binary All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using GNU 11.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 8.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.9.3 with standard gnu++11 * 1 test case was skipped when using Clang 18.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 12.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 10.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 9.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 6.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 19.1.7 with standard gnu++11 * 1 test case was skipped when using Clang 17.0.6 with standard gnu++11 * 1 test case was skipped when using Intel 2021.5.0.20211109 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 7.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 5.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.8.5 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-class_const_iterator.cpp * const_iterator class * construction * constructor * null * object * array * copy assignment * copy constructor from non-const iterator * create from uninitialized iterator * create from initialized iterator * initialization * set_begin * null * object * array * set_end * null * object * array * element access * operator* * null * number * object * array * operator-> * null * number * object * array * increment/decrement * post-increment * null * number * object * array * pre-increment * null * number * object * array * post-decrement * null * number * object * array * pre-decrement * null * number * object * array All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-class_iterator.cpp * iterator class * construction * constructor * null * object * array * copy assignment * initialization * set_begin * null * object * array * set_end * null * object * array * element access * operator* * null * number * object * array * operator-> * null * number * object * array * increment/decrement * post-increment * null * number * object * array * pre-increment * null * number * object * array * post-decrement * null * number * object * array * pre-decrement * null * number * object * array * equality-preserving * post-increment * primitive_iterator_t * iter_impl * json_reverse_iterator * post-decrement * primitive_iterator_t * iter_impl * json_reverse_iterator * cert-dcl21-cpp * post-increment * primitive_iterator_t * iter_impl * json_reverse_iterator * post-decrement * primitive_iterator_t * iter_impl * json_reverse_iterator All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-class_lexer.cpp * lexer class * scan * structural characters * literal names * numbers * whitespace * token_type_name * parse errors on first character * very large string * fail on comments * ignore comments All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-class_parser.cpp * parser class * parse * null * true * false * array * empty array * nonempty array * object * empty object * nonempty object * string * errors * additional test for null byte * escaped * number * integers * without exponent * with exponent * edge cases * over the edge cases * floating-point * without exponent * with exponent * overflow * invalid numbers * accept * null * true * false * array * empty array * nonempty array * object * empty object * nonempty object * string * errors * escaped * number * integers * without exponent * with exponent * edge cases * over the edge cases * floating-point * without exponent * with exponent * overflow * invalid numbers * parse errors * parse errors (accept) * tests found by mutate++ * callback function * filter nothing * filter everything * filter specific element * filter object in array * filter specific events * first closing event * special cases * constructing from contiguous containers * from std::vector * from std::array * from array * from char literal * from std::string * from std::initializer_list * from std::valarray * improve test coverage * parser with callback * SAX parser * } without value * } with value * second key * ] without value * ] with value * float * false * null * true * unsigned * integer * string * error messages for comments All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-class_parser_core.cpp * parser class - core * parse * null * true * false * array * empty array * nonempty array * object * empty object * nonempty object * string * errors * additional test for null byte * escaped * number * integers * without exponent * with exponent * edge cases * over the edge cases * floating-point * without exponent * with exponent * overflow * invalid numbers * accept * null * true * false * array * empty array * nonempty array * object * empty object * nonempty object * string * errors * escaped * number * integers * without exponent * with exponent * edge cases * over the edge cases * floating-point * without exponent * with exponent * overflow * invalid numbers * parse errors * parse errors (accept) * tests found by mutate++ All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-class_parser_diagnostic_positions.cpp * parser class * parse * null * true * false * array * empty array * nonempty array * object * empty object * nonempty object * string * errors * additional test for null byte * escaped * number * integers * without exponent * with exponent * edge cases * over the edge cases * floating-point * without exponent * with exponent * overflow * invalid numbers * accept * null * true * false * array * empty array * nonempty array * object * empty object * nonempty object * string * errors * escaped * number * integers * without exponent * with exponent * edge cases * over the edge cases * floating-point * without exponent * with exponent * overflow * invalid numbers * parse errors * parse errors (accept) * tests found by mutate++ * callback function * filter nothing * filter everything * filter specific element * filter object in array * filter specific events * first closing event * special cases * constructing from contiguous containers * from std::vector * from std::array * from array * from char literal * from std::string * from std::initializer_list * from std::valarray * improve test coverage * parser with callback * SAX parser * } without value * } with value * second key * ] without value * ] with value * float * false * null * true * unsigned * integer * string * error messages for comments * with callback * filter nothing * filter element * without callback * retrieve start position and end position * for object * for array * for array with objects * for two levels of nesting objects * for simple types * no nested * with callback * without callback * string type * number type * boolean type * null type * with leading whitespace and newlines around root JSON All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-comparison.cpp * lexicographical comparison operators * types * comparison: less * comparison: 3-way * values * compares unordered * compares unordered (inverse) * comparison: equal * comparison: not equal * comparison: less * comparison: less than or equal equal * comparison: greater than * comparison: greater than or equal * comparison: 3-way * parser callback regression * filter specific element All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 11.5.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++20 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * Clang 18.1.8 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 12.5.0 with standard gnu++20 * GNU 10.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 9.5.0 with standard gnu++11 * GNU 9.5.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 19.1.7 with standard gnu++20 * Clang 17.0.6 with standard gnu++11 * Clang 17.0.6 with standard gnu++20 * Intel 2021.5.0.20211109 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++20 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++20 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * Linux-c++ with standard gnu++11 * Linux-c++ with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 ### List of tests in file unit-concepts.cpp * concepts * container requirements for json * class json * DefaultConstructible * MoveConstructible * CopyConstructible * MoveAssignable * CopyAssignable * Destructible * StandardLayoutType * class iterator * CopyConstructible * CopyAssignable * Destructible * Swappable All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-constructor1.cpp * constructors * create an empty value with a given type * null * discarded * object * array * boolean * string * number_integer * number_unsigned * number_float * binary * create a null object (implicitly) * no parameter * create a null object (explicitly) * parameter * create an object (explicit) * empty object * filled object * create an object (implicit) * std::map<json::string_t, json> * std::map<std::string, std::string> #600 * std::map<const char*, json> * std::multimap<json::string_t, json> * std::unordered_map<json::string_t, json> * std::unordered_multimap<json::string_t, json> * associative container literal * create an array (explicit) * empty array * filled array * create an array (implicit) * std::list<json> * std::pair * std::pair with discarded values * std::tuple * std::tuple with discarded values * std::pair/tuple/array failures * std::forward_list<json> * std::array<json, 6> * std::valarray<int> * std::valarray<double> * std::vector<json> * std::deque<json> * std::set<json> * std::unordered_set<json> * sequence container literal * create a string (explicit) * empty string * filled string * create a string (implicit) * std::string * char[] * const char* * string literal * create a boolean (explicit) * empty boolean * filled boolean (true) * filled boolean (false) * from std::vector<bool>::reference * from std::vector<bool>::const_reference * create a binary (explicit) * empty binary * filled binary * create an integer number (explicit) * uninitialized value * initialized value * create an integer number (implicit) * short * unsigned short * int * unsigned int * long * unsigned long * long long * unsigned long long * int8_t * int16_t * int32_t * int64_t * int_fast8_t * int_fast16_t * int_fast32_t * int_fast64_t * int_least8_t * int_least16_t * int_least32_t * int_least64_t * uint8_t * uint16_t * uint32_t * uint64_t * uint_fast8_t * uint_fast16_t * uint_fast32_t * uint_fast64_t * uint_least8_t * uint_least16_t * uint_least32_t * uint_least64_t * integer literal without suffix * integer literal with u suffix * integer literal with l suffix * integer literal with ul suffix * integer literal with ll suffix * integer literal with ull suffix * create a floating-point number (explicit) * uninitialized value * initialized value * NaN * infinity * create a floating-point number (implicit) * float * double * long double * floating-point literal without suffix * integer literal with f suffix * integer literal with l suffix * create a container (array or object) from an initializer list * empty initializer list * explicit * implicit * one element * array * explicit * implicit * object * explicit * implicit * string * explicit * implicit * boolean * explicit * implicit * number (integer) * explicit * implicit * number (unsigned) * explicit * implicit * number (floating-point) * explicit * implicit * more elements * explicit * implicit * implicit type deduction * object * array * explicit type deduction * empty object * object * object with error * empty array * array * move from initializer_list * string * constructor with implicit types (array) * constructor with implicit types (object) * constructor with implicit types (object key) * array * constructor with implicit types (array) * constructor with implicit types (object) * assignment with implicit types (array) * assignment with implicit types (object) * object * constructor with implicit types (array) * constructor with implicit types (object) * assignment with implicit types (array) * assignment with implicit types (object) * json * constructor with implicit types (array) * constructor with implicit types (object) * assignment with implicit types (array) * assignment with implicit types (object) * create an array of n copies of a given value * cnt = 0 * cnt = 1 * cnt = 3 * create a JSON container from an iterator range * object * json(begin(), end()) * json(begin(), begin()) * construct from subrange * incompatible iterators * array * json(begin(), end()) * json(begin(), begin()) * construct from subrange * incompatible iterators * other values * construct with two valid iterators * null * string * number (boolean) * number (integer) * number (unsigned) * number (floating point) * binary * construct with two invalid iterators * string * number (boolean) * number (integer) * number (integer) * number (floating point) All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-constructor2.cpp * other constructors and destructor * copy constructor * object * array * null * boolean * string * number (integer) * number (unsigned) * number (floating-point) * binary * move constructor * copy assignment * object * array * null * boolean * string * number (integer) * number (unsigned) * number (floating-point) * binary * destructor * object * array * string All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-convenience.cpp * convenience functions * type name as string * string escape * string concat * std::string * alt_string_iter * alt_string_data All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-conversions.cpp * value conversion * get an object (explicit) * json::object_t * std::map<json::string_t, json> * std::multimap<json::string_t, json> * std::unordered_map<json::string_t, json> * std::unordered_multimap<json::string_t, json> * exception in case of a non-object type * get an object (explicit, get_to) * json::object_t * std::map<json::string_t, json> * std::multimap<json::string_t, json> * std::unordered_map<json::string_t, json> * std::unordered_multimap<json::string_t, json> * get an object (implicit) * json::object_t * std::map<json::string_t, json> * std::multimap<json::string_t, json> * std::unordered_map<json::string_t, json> * std::unordered_multimap<json::string_t, json> * get an array (explicit) * json::array_t * std::list<json> * std::forward_list<json> * std::vector<json> * reserve is called on containers that supports it * built-in arrays * std::deque<json> * exception in case of a non-array type * get an array (explicit, get_to) * json::array_t * std::valarray<json> * std::list<json> * std::forward_list<json> * std::vector<json> * built-in arrays * built-in arrays: 2D * built-in arrays: 3D * built-in arrays: 4D * std::deque<json> * get an array (implicit) * json::array_t * std::list<json> * std::forward_list<json> * std::vector<json> * std::deque<json> * get a string (explicit) * string_t * std::string * std::string_view * exception in case of a non-string type * exception in case of a non-string type using string_view * get a string (explicit, get_to) * string_t * std::string * std::string_view * get null (explicit) * get a string (implicit) * string_t * std::string_view * std::string * get a boolean (explicit) * boolean_t * uint8_t * bool * exception in case of a non-number type * get a boolean (implicit) * boolean_t * bool * get an integer number (explicit) * number_integer_t * number_unsigned_t * short * unsigned short * int * unsigned int * long * unsigned long * long long * unsigned long long * int8_t * int16_t * int32_t * int64_t * int8_fast_t * int16_fast_t * int32_fast_t * int64_fast_t * int8_least_t * int16_least_t * int32_least_t * int64_least_t * uint8_t * uint16_t * uint32_t * uint64_t * uint8_fast_t * uint16_fast_t * uint32_fast_t * uint64_fast_t * uint8_least_t * uint16_least_t * uint32_least_t * uint64_least_t * exception in case of a non-number type * get an integer number (implicit) * number_integer_t * number_unsigned_t * short * unsigned short * int * unsigned int * long * unsigned long * long long * unsigned long long * int8_t * int16_t * int32_t * int64_t * int8_fast_t * int16_fast_t * int32_fast_t * int64_fast_t * int8_least_t * int16_least_t * int32_least_t * int64_least_t * uint8_t * uint16_t * uint32_t * uint64_t * uint8_fast_t * uint16_fast_t * uint32_fast_t * uint64_fast_t * uint8_least_t * uint16_least_t * uint32_least_t * uint64_least_t * get a floating-point number (explicit) * number_float_t * float * double * exception in case of a non-string type * get a floating-point number (implicit) * number_float_t * float * double * get a binary value (explicit) * binary_t * get_binary() * non-const * non-const * exception in case of a non-string type * get a binary value (implicit) * binary_t * get an enum * more involved conversions * object-like STL containers * std::map * std::unordered_map * std::multimap * std::unordered_multimap * exception in case of a non-object type * array-like STL containers * std::list * std::forward_list * std::array * std::array is larger than JSON * std::array is smaller than JSON * std::valarray * std::vector * std::deque * std::set * std::unordered_set * std::map (array of pairs) * superfluous entries * std::unordered_map (array of pairs) * superfluous entries * exception in case of a non-object type * JSON to enum mapping * enum class * traditional enum * std::filesystem::path * ascii * utf-8 * std::optional * null * string * bool * number * array * object All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * GNU 11.5.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++14 * GNU 11.5.0 with standard gnu++17 * GNU 8.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++14 * GNU 8.5.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * Clang 20.1.8 with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * GNU 13.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * GNU 4.9.3 with standard gnu++11 * GNU 4.9.3 with standard gnu++14 * Clang 18.1.8 with standard gnu++11 * Clang 18.1.8 with standard gnu++14 * Clang 18.1.8 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * GNU 14.3.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * GNU 13.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * Clang 20.1.8 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 12.5.0 with standard gnu++14 * GNU 12.5.0 with standard gnu++17 * GNU 10.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++14 * GNU 10.5.0 with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * GNU 13.3.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * Clang 20.1.8 with standard gnu++17 * GNU 9.5.0 with standard gnu++11 * GNU 9.5.0 with standard gnu++14 * GNU 9.5.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 6.4.0 with standard gnu++14 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 19.1.7 with standard gnu++14 * Clang 19.1.7 with standard gnu++17 * Clang 17.0.6 with standard gnu++11 * Clang 17.0.6 with standard gnu++14 * Clang 17.0.6 with standard gnu++17 * Intel 2021.5.0.20211109 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++14 * Intel 2021.5.0.20211109 with standard gnu++17 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 7.5.0 with standard gnu++14 * GNU 7.5.0 with standard gnu++17 * GNU 13.4.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++14 * GNU 13.4.0 with standard gnu++17 * GNU 5.5.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * GNU 4.8.5 with standard gnu++14 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * Linux-c++ with standard gnu++11 * Linux-c++ with standard gnu++14 * Linux-c++ with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * GNU 13.3.0 with standard gnu++17 ### List of tests in file unit-custom-base-class.cpp * JSON Node Metadata * type int * type vector<int> * copy ctor * move ctor * move assign * copy assign * type unique_ptr<int> * type vector<int> in json array * JSON Visit Node All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-deserialization.cpp * deserialization * successful deserialization * stream * string literal * string_t * operator<< * operator>> * user-defined string literal * unsuccessful deserialization * stream * string * operator<< * operator>> * user-defined string literal * contiguous containers * directly * from std::vector * from std::array * from array * from chars * from std::string * from std::initializer_list * empty container * via iterator range * from std::vector * from std::array * from array * from std::string * from std::initializer_list * from std::valarray * with empty range * iterator_input_adapter advances iterators correctly * error cases * case 1 * case 2 * case 3 * case 4 * case 5 * case 6 * case 7 * case 8 * case 9 * case 10 * case 11 * case 12 * case 13 * case 14 * case 15 * case 16 * ignoring byte-order marks * BOM only * BOM and content * 2 byte of BOM * 1 byte of BOM * variations * preserve state after parsing * SAX and early abort * JSON Lines * Example file * Example file without trailing newline * deserialization of different character types (ASCII) * deserialization of different character types (UTF-8) * deserialization of different character types (UTF-16) * deserialization of different character types (UTF-32) All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 11.5.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++20 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * Clang 18.1.8 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 12.5.0 with standard gnu++20 * GNU 10.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 9.5.0 with standard gnu++11 * GNU 9.5.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 19.1.7 with standard gnu++20 * Clang 17.0.6 with standard gnu++11 * Clang 17.0.6 with standard gnu++20 * Intel 2021.5.0.20211109 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++20 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++20 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * Linux-c++ with standard gnu++11 * Linux-c++ with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 ### List of tests in file unit-diagnostic-positions-only.cpp * Better diagnostics with positions only * invalid type * invalid type without positions All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-diagnostic-positions.cpp * Better diagnostics with positions * invalid type * invalid type without positions All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-diagnostics.cpp * Better diagnostics * empty JSON Pointer * invalid type * missing key * array index out of range * array index at wrong type * wrong iterator * JSON Pointer escaping * Parse error * Wrong type in update() * Regression tests for extended diagnostics * Regression test for https://github.com/nlohmann/json/pull/2562#pullrequestreview-574858448 * Regression test for https://github.com/nlohmann/json/pull/2562/files/380a613f2b5d32425021129cd1f371ddcfd54ddf#r563259793 * Regression test for issue #2838 - Assertion failure when inserting into arrays with JSON_DIAGNOSTICS set * Regression test for issue #2962 - JSON_DIAGNOSTICS assertion for ordered_json * Regression test for issue #3007 - Parent pointers properly set when using update() * Regression test for issue #3032 - Yet another assertion failure when inserting into arrays with JSON_DIAGNOSTICS set * Regression test for issue #3915 - JSON_DIAGNOSTICS trigger assertion All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-disabled_exceptions.cpp * Tests with disabled exceptions * issue #2824 - encoding of json::exception::what() All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-element_access1.cpp * element access 1 * array * access specified element with bounds checking * access within bounds * access outside bounds * access on non-array type * null * boolean * string * object * number (integer) * number (unsigned) * number (floating-point) * front and back * access specified element * access within bounds * access on non-array type * null * standard tests * implicit transformation to properly filled array * boolean * string * object * number (integer) * number (unsigned) * number (floating-point) * remove specified element * remove element by index * remove element by iterator * erase(begin()) * erase(begin(), end()) * erase(begin(), begin()) * erase at offset * erase subrange * different arrays * remove element by index in non-array type * null * boolean * string * object * number (integer) * number (unsigned) * number (floating-point) * other values * front and back * null * string * number (boolean) * number (integer) * number (unsigned) * number (floating point) * erase with one valid iterator * null * string * number (boolean) * number (integer) * number (unsigned) * number (floating point) * binary * erase with one invalid iterator * string * number (boolean) * number (integer) * number (unsigned) * number (floating point) * erase with two valid iterators * null * string * number (boolean) * number (integer) * number (unsigned) * number (floating point) * binary * erase with two invalid iterators * string * number (boolean) * number (integer) * number (unsigned) * number (floating point) All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-element_access2.cpp * element access 2 * object * access specified element with bounds checking * access within bounds * access outside bounds * access on non-object type * null * boolean * string * array * number (integer) * number (unsigned) * number (floating-point) * access specified element with default value * given a key * access existing value * access non-existing value * access on non-object type * null * boolean * string * array * number (integer) * number (unsigned) * number (floating-point) * given a JSON pointer * access existing value * access on non-object type * null * boolean * string * array * number (integer) * number (unsigned) * number (floating-point) * non-const operator[] * front and back * access specified element * access within bounds * access within bounds (string_view) * access on non-object type * null * boolean * string * array * number (integer) * number (unsigned) * number (floating-point) * remove specified element * remove element by key * remove element by key (string_view) * remove element by iterator * erase(begin()) * erase(begin(), end()) * erase(begin(), begin()) * erase at offset * erase subrange * different objects * remove element by key in non-object type * null * boolean * string * array * number (integer) * number (floating-point) * find an element in an object * existing element * nonexisting element * all types * null * string * object * array * boolean * number (integer) * number (unsigned) * number (floating-point) * count keys in an object * existing element * nonexisting element * all types * null * string * object * array * boolean * number (integer) * number (unsigned) * number (floating-point) * check existence of key in an object * existing element * nonexisting element * all types * null * string * object * array * boolean * number (integer) * number (unsigned) * number (floating-point) * element access 2 (throwing tests) * object * access specified element with default value * given a JSON pointer * access non-existing value * element access 2 (additional value() tests) * deduced ValueType * literal key * const char * key * const char(&)[] key * string_t/object_t::key_type key * std::string_view key * explicit ValueType * literal key * const char * key * const char(&)[] key * string_t/object_t::key_type key * std::string_view key All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * GNU 11.5.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++14 * GNU 11.5.0 with standard gnu++17 * GNU 8.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++14 * GNU 8.5.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * Clang 20.1.8 with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * GNU 13.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * GNU 4.9.3 with standard gnu++11 * GNU 4.9.3 with standard gnu++14 * Clang 18.1.8 with standard gnu++11 * Clang 18.1.8 with standard gnu++14 * Clang 18.1.8 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * GNU 14.3.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * GNU 13.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * Clang 20.1.8 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 12.5.0 with standard gnu++14 * GNU 12.5.0 with standard gnu++17 * GNU 10.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++14 * GNU 10.5.0 with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * GNU 13.3.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * Clang 20.1.8 with standard gnu++17 * GNU 9.5.0 with standard gnu++11 * GNU 9.5.0 with standard gnu++14 * GNU 9.5.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 6.4.0 with standard gnu++14 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 19.1.7 with standard gnu++14 * Clang 19.1.7 with standard gnu++17 * Clang 17.0.6 with standard gnu++11 * Clang 17.0.6 with standard gnu++14 * Clang 17.0.6 with standard gnu++17 * Intel 2021.5.0.20211109 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++14 * Intel 2021.5.0.20211109 with standard gnu++17 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 7.5.0 with standard gnu++14 * GNU 7.5.0 with standard gnu++17 * GNU 13.4.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++14 * GNU 13.4.0 with standard gnu++17 * GNU 5.5.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * GNU 4.8.5 with standard gnu++14 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++17 * Linux-c++ with standard gnu++11 * Linux-c++ with standard gnu++14 * Linux-c++ with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * GNU 13.3.0 with standard gnu++17 ### List of tests in file unit-hash.cpp * hash<nlohmann::json> * hash<nlohmann::ordered_json> All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-inspection.cpp * object inspection * convenience type checker * object * array * null * boolean * string * number (integer) * number (unsigned) * number (floating-point) * binary * discarded * serialization * no indent / indent=-1 * indent=0 * indent=1, space='\t' * indent=4 * indent=x * dump and floating-point numbers * dump and small floating-point numbers * dump and non-ASCII characters * dump with ensure_ascii and non-ASCII characters * full Unicode escaping to ASCII * parsing yields the same JSON value * dumping yields the same JSON text * serialization of discarded element * check that precision is reset after serialization * round trips * return the type of the object (explicit) * null * object * array * boolean * string * number (integer) * number (unsigned) * number (floating-point) * return the type of the object (implicit) * null * object * array * boolean * string * number (integer) * number (unsigned) * number (floating-point) * binary All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-items.cpp * iterator_wrapper * object * value * reference * const value * const reference * const object * value * reference * const value * const reference * array * value * reference * const value * const reference * const array * value * reference * const value * const reference * primitive * value * reference * const value * const reference * const primitive * value * reference * const value * const reference * items() * object * value * reference * const value * const reference * structured bindings * const object * value * reference * const value * const reference * array * value * reference * const value * const reference * const array * value * reference * const value * const reference * primitive * value * reference * const value * const reference * const primitive * value * reference * const value * const reference All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 11.5.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++17 * GNU 8.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * Clang 18.1.8 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 12.5.0 with standard gnu++17 * GNU 10.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++17 * GNU 9.5.0 with standard gnu++11 * GNU 9.5.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 19.1.7 with standard gnu++17 * Clang 17.0.6 with standard gnu++11 * Clang 17.0.6 with standard gnu++17 * Intel 2021.5.0.20211109 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++17 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 7.5.0 with standard gnu++17 * GNU 13.4.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++17 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * Linux-c++ with standard gnu++11 * Linux-c++ with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 ### List of tests in file unit-iterators1.cpp * iterators 1 * basic behavior * uninitialized * boolean * json + begin/end * const json + begin/end * json + cbegin/cend * const json + cbegin/cend * json + rbegin/rend * json + crbegin/crend * const json + crbegin/crend * additional tests * !(begin != begin) * !(end != end) * begin < end * begin <= end * end > begin * end >= begin * end == end * end <= end * begin == begin * begin <= begin * begin >= begin * !(begin == end) * begin != end * begin+1 == end * begin == end-1 * begin != end+1 * end != end+1 * begin+1 != begin+2 * begin+1 < begin+2 * begin+1 <= begin+2 * end+1 != end+2 * key/value * string * json + begin/end * const json + begin/end * json + cbegin/cend * const json + cbegin/cend * json + rbegin/rend * json + crbegin/crend * const json + crbegin/crend * key/value * array * json + begin/end * const json + begin/end * json + cbegin/cend * const json + cbegin/cend * json + rbegin/rend * json + crbegin/crend * const json + crbegin/crend * key/value * object * json + begin/end * const json + begin/end * json + cbegin/cend * const json + cbegin/cend * json + rbegin/rend * json + crbegin/crend * const json + crbegin/crend * key/value * number (integer) * json + begin/end * const json + begin/end * json + cbegin/cend * const json + cbegin/cend * json + rbegin/rend * json + crbegin/crend * const json + crbegin/crend * key/value * number (unsigned) * json + begin/end * const json + begin/end * json + cbegin/cend * const json + cbegin/cend * json + rbegin/rend * json + crbegin/crend * const json + crbegin/crend * key/value * number (float) * json + begin/end * const json + begin/end * json + cbegin/cend * const json + cbegin/cend * json + rbegin/rend * json + crbegin/crend * const json + crbegin/crend * key/value * null * json + begin/end * const json + begin/end * json + cbegin/cend * const json + cbegin/cend * json + rbegin/rend * json + crbegin/crend * const json + crbegin/crend * key/value * conversion from iterator to const iterator * boolean * string * array * object * number (integer) * number (unsigned) * number (float) * null All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-iterators2.cpp * iterators 2 * iterator comparisons * iterator arithmetic * addition and subtraction * object * array * null * value * subscript operator * object * array * null * value * reverse iterator comparisons * reverse iterator arithmetic * addition and subtraction * object * array * null * value * subscript operator * object * array * null * value * ranges * concepts * algorithms * copy * find_if * views * reverse * transform All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 11.5.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++20 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * Clang 18.1.8 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 12.5.0 with standard gnu++20 * GNU 10.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 9.5.0 with standard gnu++11 * GNU 9.5.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 19.1.7 with standard gnu++20 * Clang 17.0.6 with standard gnu++11 * Clang 17.0.6 with standard gnu++20 * Intel 2021.5.0.20211109 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++20 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++20 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * Linux-c++ with standard gnu++11 * Linux-c++ with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 ### List of tests in file unit-iterators3.cpp * checking forward-iterators All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 11.5.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++14 * GNU 8.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 4.9.3 with standard gnu++11 * GNU 4.9.3 with standard gnu++14 * Clang 18.1.8 with standard gnu++11 * Clang 18.1.8 with standard gnu++14 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 12.5.0 with standard gnu++14 * GNU 10.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++14 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.5.0 with standard gnu++11 * GNU 9.5.0 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 6.4.0 with standard gnu++14 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 19.1.7 with standard gnu++14 * Clang 17.0.6 with standard gnu++11 * Clang 17.0.6 with standard gnu++14 * Intel 2021.5.0.20211109 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++14 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 7.5.0 with standard gnu++14 * GNU 13.4.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++14 * GNU 5.5.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * GNU 4.8.5 with standard gnu++14 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++14 * Linux-c++ with standard gnu++11 * Linux-c++ with standard gnu++14 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++14 ### List of tests in file unit-json_patch.cpp * JSON patch * examples from RFC 6902 * 4. Operations * 4.1 add * 4.2 remove * A.1. Adding an Object Member * A.2. Adding an Array Element * A.3. Removing an Object Member * A.4. Removing an Array Element * A.5. Replacing a Value * A.6. Moving a Value * A.7. Moving a Value * A.8. Testing a Value: Success * A.9. Testing a Value: Error * A.10. Adding a Nested Member Object * A.11. Ignoring Unrecognized Elements * A.12. Adding to a Nonexistent Target * A.14. Escape Ordering * A.15. Comparing Strings and Numbers * A.16. Adding an Array Value * own examples * add * add to the root element * add to end of the array * copy * replace * documentation GIF * errors * unknown operation * not an array * not an array of objects * missing 'op' * non-string 'op' * invalid operation * add * missing 'path' * non-string 'path' * missing 'value' * invalid array index * remove * missing 'path' * non-string 'path' * nonexisting target location (array) * nonexisting target location (object) * root element as target location * replace * missing 'path' * non-string 'path' * missing 'value' * nonexisting target location (array) * nonexisting target location (object) * move * missing 'path' * non-string 'path' * missing 'from' * non-string 'from' * nonexisting from location (array) * nonexisting from location (object) * copy * missing 'path' * non-string 'path' * missing 'from' * non-string 'from' * nonexisting from location (array) * nonexisting from location (object) * test * missing 'path' * non-string 'path' * missing 'value' * Examples from jsonpatch.com * Simple Example * Operations * add * remove * replace * copy * move * test * Examples from bruth.github.io/jsonpatch-js * add * remove * replace * move * copy * copy * Tests from github.com/json-patch/json-patch-tests All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-json_pointer.cpp * JSON pointers * errors * array index error * examples from RFC 6901 * nonconst access * const access * user-defined string literal * array access * nonconst access * const access * flatten * string representation * conversion * array * object * empty, push, pop and parent * operators * equality comparison * exceptions * less-than comparison * usable as map key * backwards compatibility and mixing * equality comparison All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 11.5.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++20 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * Clang 18.1.8 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 12.5.0 with standard gnu++20 * GNU 10.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * GNU 9.5.0 with standard gnu++11 * GNU 9.5.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 19.1.7 with standard gnu++20 * Clang 17.0.6 with standard gnu++11 * Clang 17.0.6 with standard gnu++20 * Intel 2021.5.0.20211109 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++20 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++20 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++20 * Linux-c++ with standard gnu++11 * Linux-c++ with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++20 ### List of tests in file unit-large_json.cpp * tests on very large JSONs * issue #1419 - Segmentation fault (stack overflow) due to unbounded recursion All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-literals.cpp * accept * unicode * capitalisation * true * null * false * illegal literals * nil * truth * const * none * self * super * this * undefined * illegal literal numbers * inf * infinity * NaN * parse * values * whitespace * capitalisation * true * null * false * illegal literals * nil * truth * const * none * self * super * this * undefined * illegal literal numbers * inf * infinity * NaN All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-locale-cpp.cpp * locale-dependent test (LC_NUMERIC=C) * check if locale is properly set * parsing * SAX parsing * locale-dependent test (LC_NUMERIC=de_DE) * check if locale is properly set * parsing * SAX parsing All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-merge_patch.cpp * JSON Merge Patch * examples from RFC 7396 * Section 1 * Section 3 * Appendix A * Example 1 * Example 2 * Example 3 * Example 4 * Example 5 * Example 6 * Example 7 * Example 8 * Example 9 * Example 10 * Example 11 * Example 12 * Example 13 * Example 14 * Example 15 All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-meta.cpp * version information * meta() All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-modifiers.cpp * modifiers * clear() * boolean * string * array * empty array * filled array * object * empty object * filled object * binary * empty binary * filled binary * number (integer) * number (unsigned) * number (float) * null * push_back() * to array * json&& * null * array * other type * const json& * null * array * other type * to object * null * object * other type * with initializer_list * null * array * object * emplace_back() * to array * null * array * multiple values * other type * emplace() * to object * null * object * other type * operator+= * to array * json&& * null * array * other type * const json& * null * array * other type * to object * null * object * other type * with initializer_list * null * array * object * insert() * value at position * insert before begin() * insert in the middle * insert before end() * rvalue at position * insert before begin() * insert in the middle * insert before end() * copies at position * insert before begin() * insert in the middle * insert before end() * insert nothing (count = 0) * range for array * proper usage * empty range * invalid iterators * range for object * proper usage * empty range * invalid iterators * initializer list at position * insert before begin() * insert in the middle * insert before end() * invalid iterator * non-array type * update() * non-recursive (default) * const reference * proper usage * wrong types * iterator range * proper usage * empty range * invalid iterators * recursive * const reference * extend object * replace object * swap() * json * member swap * nonmember swap * array_t * array_t type * non-array_t type * object_t * object_t type * non-object_t type * string_t * string_t type * non-string_t type * binary_t * binary_t type * binary_t::container_type type * non-binary_t type All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-msgpack.cpp * MessagePack * individual values * discarded * null * boolean * true * false * number * signed * -32..-1 (negative fixnum) * 0..127 (positive fixnum) * 128..255 (int 8) * 256..65535 (int 16) * 65536..4294967295 (int 32) * 4294967296..9223372036854775807 (int 64) * -128..-33 (int 8) * -9263 (int 16) * -32768..-129 (int 16) * -32769..-2147483648 * -9223372036854775808..-2147483649 (int 64) * unsigned * 0..127 (positive fixnum) * 128..255 (uint 8) * 256..65535 (uint 16) * 65536..4294967295 (uint 32) * 4294967296..18446744073709551615 (uint 64) * float * 3.1415925 * 1.0 * 128.128 * string * N = 0..31 * N = 32..255 * N = 256..65535 * N = 65536..4294967295 * array * empty * [null] * [1,2,3,4,5] * [[[[]]]] * array 16 * array 32 * object * empty * {\ * {\ * map 16 * map 32 * extension * N = 0..255 * N = 256..65535 * N = 65536..4294967295 * binary * N = 0..255 * N = 256..65535 * N = 65536..4294967295 * from float32 * errors * empty byte vector * too short byte vector * unexpected end inside int with stream * misuse wchar for binary * unsupported bytes * concrete examples * all unsupported bytes * invalid string in map * strict mode * non-strict mode * strict mode * SAX aborts * start_array(len) * start_object(len) * key() * single MessagePack roundtrip * sample.json * roundtrips * std::ostringstream * std::string * MessagePack roundtrips * input from msgpack-python All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using GNU 11.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 8.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.9.3 with standard gnu++11 * 1 test case was skipped when using Clang 18.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 12.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 10.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 9.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 6.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 19.1.7 with standard gnu++11 * 1 test case was skipped when using Clang 17.0.6 with standard gnu++11 * 1 test case was skipped when using Intel 2021.5.0.20211109 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 7.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 5.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.8.5 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-no-mem-leak-on-adl-serialize.cpp * check_for_mem_leak_on_adl_to_json-1 * check_for_mem_leak_on_adl_to_json-2 * check_for_mem_leak_on_adl_to_json-2 All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-noexcept.cpp * noexcept * nothrow-copy-constructible exceptions All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-numbers.cpp * accept * exponents * U+0425 * U+0436 * leading zeroes * operators * plus * minus * brackets * factorial * multiplication * division * comma * whitespace * space * tab * new line * Carriage return * Leading and tailing * space * tab * newline * Carriage return * Mixed * Leading zeroes * bases * Octal * Hexadecimal * parse * exponents * U+0425 * U+0436 * leading zeroes * leading plus * Capitalisation * operators * plus * minus * brackets * factorial * multiplication * division * comma * trailing zeroes * whitespace * invalid whitespace * space * tab * new line * Carriage return * Leading zeroes * Precision All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-objects.cpp * accept * names * numbers * arrays * objects * literals * strings * control characters * unicode * escaped UTF-16 surrogates * whitespace * empty object * non-empty object * member separator * parse * whitespace * empty object * non-empty object * member separator * names * numbers * arrays * objects * literals * duplicate names * 100,000 identical keys * first and last key duplicate All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-ordered_json.cpp * ordered_json All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-ordered_map.cpp * ordered_map * constructor * constructor from iterator range * copy assignment * at * with Key&& * with const Key&& * with string literal * operator[] * with Key&& * with const Key&& * with string literal * erase * with Key&& * with const Key&& * with string literal * with iterator * with iterator pair * range in the middle * range at the beginning * range at the end * count * find * insert * const value_type& * value_type&& All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-pointer_access.cpp * pointer access * pointer access to object_t * pointer access to const object_t * pointer access to array_t * pointer access to const array_t * pointer access to string_t * pointer access to const string_t * pointer access to boolean_t * pointer access to const boolean_t * pointer access to number_integer_t * pointer access to const number_integer_t * pointer access to number_unsigned_t * pointer access to const number_unsigned_t * pointer access to number_float_t * pointer access to const number_float_t * pointer access to const binary_t * pointer access to const binary_t All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-readme.cpp * README All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using GNU 11.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 8.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.9.3 with standard gnu++11 * 1 test case was skipped when using Clang 18.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 12.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 10.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 9.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 6.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 19.1.7 with standard gnu++11 * 1 test case was skipped when using Clang 17.0.6 with standard gnu++11 * 1 test case was skipped when using Intel 2021.5.0.20211109 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 7.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 5.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.8.5 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-reference_access.cpp * reference access * reference access to object_t * const reference access to const object_t * reference access to array_t * reference access to string_t * reference access to boolean_t * reference access to number_integer_t * reference access to number_unsigned_t * reference access to number_float_t All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-regression1.cpp * regression tests 1 * issue #60 - Double quotation mark is not parsed correctly * escape_doublequote * issue #70 - Handle infinity and NaN cases * NAN value * infinity * NAN value * infinity * pull request #71 - handle enum type * issue #76 - dump() / parse() not idempotent * issue #82 - lexer::get_number return NAN * issue #89 - nonstandard integer type * issue #93 reverse_iterator operator inheritance problem * issue #100 - failed to iterator json object with reverse_iterator * issue #101 - binary string causes numbers to be dumped as hex * issue #111 - subsequent unicode chars * issue #144 - implicit assignment to std::string fails * issue #146 - character following a surrogate pair is skipped * issue #171 - Cannot index by key of type static constexpr const char* * issue #186 miloyip/nativejson-benchmark: floating-point parsing * issue #228 - double values are serialized with commas as decimal points * issue #378 - locale-independent num-to-str * issue #379 - locale-independent str-to-num * issue #233 - Can't use basic_json::iterator as a base iterator for std::move_iterator * issue #235 - ambiguous overload for 'push_back' and 'operator+=' * issue #269 - diff generates incorrect patch when removing multiple array elements * issue #283 - value() does not work with _json_pointer types * issue #304 - Unused variable warning * issue #306 - Parsing fails without space at end of file * issue #310 - make json_benchmarks no longer working in 2.0.4 * issue #323 - add nested object capabilities to pointers * issue #329 - serialized value not always can be parsed * issue #360 - Loss of precision when serializing <double> * issue #366 - json::parse on failed stream gets stuck * issue #367 - calling stream at EOF * issue #367 - behavior of operator>> should more closely resemble that of built-in overloads * (empty) * (whitespace) * one value * one value + whitespace * whitespace + one value * three values * literals without whitespace * example from #529 * second example from #529 * issue #389 - Integer-overflow (OSS-Fuzz issue 267) * issue #380 - bug in overflow detection when parsing integers * issue #405 - Heap-buffer-overflow (OSS-Fuzz issue 342) * issue #407 - Heap-buffer-overflow (OSS-Fuzz issue 343) * issue #408 - Heap-buffer-overflow (OSS-Fuzz issue 344) * issue #411 - Heap-buffer-overflow (OSS-Fuzz issue 366) * issue #412 - Heap-buffer-overflow (OSS-Fuzz issue 367) * issue #414 - compare with literal 0) * issue #416 - Use-of-uninitialized-value (OSS-Fuzz issue 377) * issue #452 - Heap-buffer-overflow (OSS-Fuzz issue 585) * issue #454 - doubles are printed as integers * issue #464 - VS2017 implicit to std::string conversion fix * issue #465 - roundtrip error while parsing 1000000000000000010E5 * issue #473 - inconsistent behavior in conversion to array type * std::vector * std::list * std::forward_list * issue #486 - json::value_t can't be a map's key type in VC++ 2015 * issue #494 - conversion from vector<bool> to json fails to build * issue #504 - assertion error (OSS-Fuzz 856) * issue #512 - use of overloaded operator '<=' is ambiguous * issue #575 - heap-buffer-overflow (OSS-Fuzz 1400) * issue #600 - how does one convert a map in Json back to std::map? * example 1 * example 2 * issue #602 - BOM not skipped when using json:parse(iterator) * issue #702 - conversion from valarray<double> to json fails to build * original example * full example * issue #367 - Behavior of operator>> should more closely resemble that of built-in overloads. * example 1 * issue #714 - throw std::ios_base::failure exception when failbit set to true * issue #805 - copy constructor is used with std::initializer_list constructor. * issue #838 - incorrect parse error with binary data in keys * issue #843 - converting to array not working * issue #894 - invalid RFC6902 copy operation succeeds * issue #961 - incorrect parsing of indefinite length CBOR strings * issue #962 - Timeout (OSS-Fuzz 6034) * issue #971 - Add a SAX parser - late bug * issue #972 - Segmentation fault on G++ when trying to assign json string literal to custom json type * issue #977 - Assigning between different json types * regression tests, exceptions dependent * issue #1340 - eof not set on exhausted input stream All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 11.5.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++17 * GNU 8.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * Clang 18.1.8 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++17 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 12.5.0 with standard gnu++17 * GNU 10.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++17 * GNU 9.5.0 with standard gnu++11 * GNU 9.5.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 19.1.7 with standard gnu++17 * Clang 17.0.6 with standard gnu++11 * Clang 17.0.6 with standard gnu++17 * Intel 2021.5.0.20211109 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++17 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 7.5.0 with standard gnu++17 * GNU 13.4.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++17 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * Linux-c++ with standard gnu++11 * Linux-c++ with standard gnu++17 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 ### List of tests in file unit-regression2.cpp * regression tests 2 * issue #1001 - Fix memory leak during parser callback * issue #1021 - to/from_msgpack only works with standard typization * issue #1045 - Using STL algorithms with JSON containers with expected results? * issue #1292 - Serializing std::variant causes stack overflow * issue #1299 - compile error in from_json converting to container * issue #1445 - buffer overflow in dumping invalid utf-8 strings * a bunch of -1, ensure_ascii=true * a bunch of -2, ensure_ascii=false * test case in issue #1445 * issue #1447 - Integer Overflow (OSS-Fuzz 12506) * issue #1708 - minimum value of int64_t can be outputted * issue #1727 - Contains with non-const lvalue json_pointer picks the wrong overload * issue #1647 - compile error when deserializing enum if both non-default from_json and non-member operator== exists for other type * issue #1715 - json::from_cbor does not respect allow_exceptions = false when input is string literal * string literal * string array * std::string * issue #1805 - A pair<T1, T2> is json constructible only if T1 and T2 are json constructible * issue #1825 - A tuple<Args..> is json constructible only if all T in Args are json constructible * issue #1983 - JSON patch diff for op=add formation is not as per standard (RFC 6902) * issue #2067 - cannot serialize binary data to text JSON * PR #2181 - regression bug with lvalue * issue #2293 - eof doesn't cause parsing to stop * issue #2315 - json.update and vector<pair>does not work with ordered_json * issue #2330 - ignore_comment=true fails on multiple consecutive lines starting with comments * issue #2546 - parsing containers of std::byte * issue #2574 - Deserialization to std::array, std::pair, and std::tuple with non-default constructable types fails * std::array * std::pair * std::tuple * issue #4530 - Serialization of empty tuple * issue #2865 - ASAN detects memory leaks * issue #2824 - encoding of json::exception::what() * issue #2825 - Properly constrain the basic_json conversion operator * issue #2958 - Inserting in unordered json using a pointer retains the leading slash * issue #2982 - to_{binary format} does not provide a mechanism for specifying a custom allocator for the returned type * issue #3070 - Version 3.10.3 breaks backward-compatibility with 3.10.2 * issue #3077 - explicit constructor with default does not compile * issue #3108 - ordered_json doesn't support range based erase * issue #3343 - json and ordered_json are not interchangeable * issue #3171 - if class is_constructible from std::string wrong from_json overload is being selected, compilation failed * issue #3312 - Parse to custom class from unordered_json breaks on G++11.2.0 with C++20 * issue #3428 - Error occurred when converting nlohmann::json to std::any * issue #3204 - ambiguous regression * issue #3333 - Ambiguous conversion from nlohmann::basic_json<> to custom class * issue #3810 - ordered_json doesn't support construction from C array of custom type All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++20 * GNU 11.5.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++17 * GNU 11.5.0 with standard gnu++20 * GNU 8.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 * GNU 13.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++20 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * Clang 18.1.8 with standard gnu++17 * Clang 18.1.8 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 * GNU 13.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * GNU 14.3.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 12.5.0 with standard gnu++17 * GNU 12.5.0 with standard gnu++20 * GNU 10.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++17 * GNU 10.5.0 with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 * GNU 13.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * Clang 20.1.8 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * GNU 9.5.0 with standard gnu++11 * GNU 9.5.0 with standard gnu++17 * GNU 9.5.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++20 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 19.1.7 with standard gnu++17 * Clang 19.1.7 with standard gnu++20 * Clang 17.0.6 with standard gnu++11 * Clang 17.0.6 with standard gnu++17 * Clang 17.0.6 with standard gnu++20 * Intel 2021.5.0.20211109 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++17 * Intel 2021.5.0.20211109 with standard gnu++20 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 7.5.0 with standard gnu++17 * GNU 13.4.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++17 * GNU 13.4.0 with standard gnu++20 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++17 * GNU 9.4.0 with standard gnu++20 * Linux-c++ with standard gnu++11 * Linux-c++ with standard gnu++17 * Linux-c++ with standard gnu++20 * GNU 13.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++17 * GNU 13.3.0 with standard gnu++20 ### List of tests in file unit-serialization.cpp * serialization * operator<< * no given width * given width * given fill * operator>> * no given width * given width * given fill * dump * invalid character * ending with incomplete character * unexpected character * U+FFFD Substitution of Maximal Subparts * to_string * serialization for extreme integer values * minimum * maximum * dump with binary values * normal * pretty-printed All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-strings.cpp * accept * noncharacter code positions * overlong sequences * Examples of an overlong ASCII character * Maximum overlong sequences * Overlong representation of the NUL character * malformed sequences * Unexpected continuation bytes * Lonely start characters * Sequences with last continuation byte missing * Concatenation of incomplete sequences * Impossible bytes * Unicode * escaped unicode * unescaped unicode * escaped utf-16 surrogates * well-formed * ill-formed * parse * whitespace All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using GNU 11.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 8.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.9.3 with standard gnu++11 * 1 test case was skipped when using Clang 18.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 12.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 10.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 9.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 6.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 19.1.7 with standard gnu++11 * 1 test case was skipped when using Clang 17.0.6 with standard gnu++11 * 1 test case was skipped when using Intel 2021.5.0.20211109 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 7.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 5.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.8.5 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-testsuites.cpp * compliance tests from json.org * expected failures * no failures with trailing literals (relaxed) * expected passes * compliance tests from nativejson-benchmark * doubles * strings * roundtrip * test suite from json-test-suite * read all sample.json * json.org examples * 1.json * 2.json * 3.json * 4.json * 5.json * FILE 1.json * FILE 2.json * FILE 3.json * FILE 4.json * FILE 5.json * RFC 8259 examples * 7. Strings * 8.3 String Comparison * 13 Examples * nst's JSONTestSuite * test_parsing * y * n * n -> y (relaxed) * i -> y * i/y -> n (out of range) * i -> n * nst's JSONTestSuite (2) * test_parsing * y * n * n (previously overflowed) * i -> y * i -> n * Big List of Naughty Strings * parsing blns.json * roundtripping All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-to_chars.cpp * digit gen * single precision * double precision * formatting * single precision * double precision * integer All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-type_traits.cpp * type traits * is_c_string * char * * char[] All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-ubjson.cpp * UBJSON * individual values * discarded * null * boolean * true * false * number * signed * -9223372036854775808..-2147483649 (int64) * -2147483648..-32769 (int32) * -32768..-129 (int16) * -9263 (int16) * -128..-1 (int8) * 0..127 (int8) * 128..255 (uint8) * 256..32767 (int16) * 65536..2147483647 (int32) * 2147483648..9223372036854775807 (int64) * unsigned * 0..127 (int8) * 128..255 (uint8) * 256..32767 (int16) * 65536..2147483647 (int32) * 2147483648..9223372036854775807 (int64) * float64 * 3.1415925 * high-precision number * unsigned integer number * signed integer number * floating-point number * errors * serialization * string * N = 0..127 * N = 128..255 * N = 256..32767 * N = 65536..2147483647 * binary * N = 0..127 * N = 128..255 * N = 256..32767 * N = 32768..2147483647 * Other Serializations * No Count No Type * Yes Count No Type * array * empty * size=false type=false * size=true type=false * size=true type=true * [null] * size=false type=false * size=true type=false * size=true type=true * [1,2,3,4,5] * size=false type=false * size=true type=false * size=true type=true * [[[[]]]] * size=false type=false * size=true type=false * size=true type=true * array with uint16_t elements * size=false type=false * size=true type=false * size=true type=true * array with uint32_t elements * size=false type=false * size=true type=false * size=true type=true * object * empty * size=false type=false * size=true type=false * size=true type=true * {\ * size=false type=false * size=true type=false * size=true type=true * {\ * size=false type=false * size=true type=false * size=true type=true * errors * strict mode * non-strict mode * strict mode * excessive size * array * object * SAX aborts * start_array() * start_object() * key() in object * start_array(len) * start_object(len) * key() in object with length * parsing values * strings * number * float * array * optimized version (length only) * optimized version (type and length) * parse errors * empty byte vector * char * eof after C byte * byte out of range * strings * eof after S byte * invalid byte * array * optimized array: no size following type * strings * sizes * types * arrays * objects * writing optimized values * integer * array of i * array of U * array of I * array of l * array of L * unsigned integer * array of i * array of U * array of I * array of l * array of L * discarded * Universal Binary JSON Specification Examples 1 * Null Value * No-Op Value * Boolean Types * Numeric Types * Char Type * String Type * English * Russian * Russian * Array Type * size=false type=false * size=true type=false * size=true type=true * Object Type * size=false type=false * size=true type=false * size=true type=true * Optimized Format * Array Example * No Optimization * Optimized with count * Optimized with type & count * Object Example * No Optimization * Optimized with count * Optimized with type & count * Special Cases (Null, No-Op and Boolean) * Array * Object * all UBJSON first bytes * UBJSON roundtrips * input from self-generated UBJSON files All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using GNU 11.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 8.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.9.3 with standard gnu++11 * 1 test case was skipped when using Clang 18.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 12.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 10.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 9.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 6.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 19.1.7 with standard gnu++11 * 1 test case was skipped when using Clang 17.0.6 with standard gnu++11 * 1 test case was skipped when using Intel 2021.5.0.20211109 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 7.5.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.4.0 with standard gnu++11 * 1 test case was skipped when using GNU 5.5.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 4.8.5 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-udl.cpp * user-defined string literals * using namespace nlohmann::literals::json_literals * using namespace nlohmann::json_literals * using namespace nlohmann::literals * using namespace nlohmann * global namespace All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-udt.cpp * basic usage * conversion to json via free-functions * conversion from json via free-functions * via explicit calls to get * via explicit calls to get_to * implicit conversions * adl_serializer specialization * partial specialization * to_json * from_json * total specialization * to_json * from_json * even supported types can be specialized * Non-copyable types * to_json * from_json * custom serializer for pods * custom serializer that does adl by default * different basic_json types conversions * null * boolean * discarded * array * integer * float * unsigned * string * binary * object * get<custom_json> * an incomplete type does not trigger a compiler error in non-evaluated context * Issue #924 * Issue #1237 * compatible array type, without iterator type alias All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-udt_macro.cpp * Serialization/deserialization via NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE * person * Serialization/deserialization via NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE and NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE * person * Serialization/deserialization via NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT * person with default values * Serialization/deserialization via NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT * derived person with default values * Serialization/deserialization of classes with 26 public/private member variables via NLOHMANN_DEFINE_TYPE_INTRUSIVE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE * alphabet * Serialization of non-default-constructible classes via NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE * person * Serialization of non-default-constructible classes via NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE and NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE * derived person only serialize All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-unicode1.cpp * Unicode (1/5) * \\uxxxx sequences * correct sequences * incorrect sequences * incorrect surrogate values * incorrect sequences * high surrogate without low surrogate * high surrogate with wrong low surrogate * low surrogate without high surrogate * read all unicode characters * check JSON Pointers * ignore byte-order-mark * in a stream * with an iterator * error for incomplete/wrong BOM * Markus Kuhn's UTF-8 decoder capability and stress test * 1 Some correct UTF-8 text * 2 Boundary condition test cases * 2.1 First possible sequence of a certain length * 2.2 Last possible sequence of a certain length * 2.3 Other boundary conditions * 3 Malformed sequences * 3.1 Unexpected continuation bytes * 3.2 Lonely start characters * 3.3 Sequences with last continuation byte missing * 3.4 Concatenation of incomplete sequences * 3.5 Impossible bytes * 4 Overlong sequences * 4.1 Examples of an overlong ASCII character * 4.2 Maximum overlong sequences * 4.3 Overlong representation of the NUL character * 5 Illegal code positions * 5.1 Single UTF-16 surrogates * 5.2 Paired UTF-16 surrogates * 5.3 Noncharacter code positions All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-unicode2.cpp * Unicode (2/5) * RFC 3629 * ill-formed first byte * UTF8-1 (x00-x7F) * well-formed * UTF8-2 (xC2-xDF UTF8-tail) * well-formed * ill-formed: missing second byte * ill-formed: wrong second byte * UTF8-3 (xE0 xA0-BF UTF8-tail) * well-formed * ill-formed: missing second byte * ill-formed: missing third byte * ill-formed: wrong second byte * ill-formed: wrong third byte * UTF8-3 (xE1-xEC UTF8-tail UTF8-tail) * well-formed * ill-formed: missing second byte * ill-formed: missing third byte * ill-formed: wrong second byte * ill-formed: wrong third byte * UTF8-3 (xED x80-9F UTF8-tail) * well-formed * ill-formed: missing second byte * ill-formed: missing third byte * ill-formed: wrong second byte * ill-formed: wrong third byte * UTF8-3 (xEE-xEF UTF8-tail UTF8-tail) * well-formed * ill-formed: missing second byte * ill-formed: missing third byte * ill-formed: wrong second byte * ill-formed: wrong third byte All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-unicode3.cpp * Unicode (3/5) * RFC 3629 * UTF8-4 (xF0 x90-BF UTF8-tail UTF8-tail) * well-formed * ill-formed: missing second byte * ill-formed: missing third byte * ill-formed: missing fourth byte * ill-formed: wrong second byte * ill-formed: wrong third byte * ill-formed: wrong fourth byte All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-unicode4.cpp * Unicode (4/5) * RFC 3629 * UTF8-4 (xF1-F3 UTF8-tail UTF8-tail UTF8-tail) * well-formed * ill-formed: missing second byte * ill-formed: missing third byte * ill-formed: missing fourth byte * ill-formed: wrong second byte * ill-formed: wrong third byte * ill-formed: wrong fourth byte All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-unicode5.cpp * Unicode (5/5) * RFC 3629 * UTF8-4 (xF4 x80-8F UTF8-tail UTF8-tail) * well-formed * ill-formed: missing second byte * ill-formed: missing third byte * ill-formed: missing fourth byte * ill-formed: wrong second byte * ill-formed: wrong third byte * ill-formed: wrong fourth byte All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 In the following configuration, however, some test-cases were skipped: * 1 test case was skipped when using GNU 14.3.0 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using GNU 14.3.0 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++17 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++23 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++14 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++20 * 1 test case was skipped when using Clang 20.1.8 with standard gnu++11 * 1 test case was skipped when using GNU 9.4.0 with standard gnu++11 * 1 test case was skipped when using Linux-c++ with standard gnu++11 * 1 test case was skipped when using GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-user_defined_input.cpp * Use arbitrary stdlib container * Custom container non-member begin/end * Custom container member begin/end * Custom iterator All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-windows_h.cpp * include windows.h All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ### List of tests in file unit-wstring.cpp * wide strings * std::wstring * invalid std::wstring * std::u16string * invalid std::u16string * std::u32string * invalid std::u32string All tests in this file were run in the following configurations: * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++20 * GNU 9.4.0 with standard gnu++11 * GNU 11.5.0 with standard gnu++11 * GNU 8.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++14 * GNU 9.4.0 with standard gnu++11 * GNU 4.9.3 with standard gnu++11 * Clang 18.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 14.3.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 12.5.0 with standard gnu++11 * GNU 10.5.0 with standard gnu++11 * GNU 13.3.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++11 * GNU 9.5.0 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++14 * Clang 20.1.8 with standard gnu++23 * GNU 6.4.0 with standard gnu++11 * GNU 14.3.0 with standard gnu++17 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++17 * Clang 19.1.7 with standard gnu++11 * Clang 17.0.6 with standard gnu++11 * Intel 2021.5.0.20211109 with standard gnu++11 * GNU 14.3.0 with standard gnu++23 * Clang 20.1.8 with standard gnu++17 * GNU 7.5.0 with standard gnu++11 * GNU 13.4.0 with standard gnu++11 * GNU 5.5.0 with standard gnu++11 * Clang 20.1.8 with standard gnu++23 * Clang 20.1.8 with standard gnu++14 * GNU 4.8.5 with standard gnu++11 * Clang 20.1.8 with standard gnu++20 * Clang 20.1.8 with standard gnu++11 * GNU 9.4.0 with standard gnu++11 * Linux-c++ with standard gnu++11 * GNU 13.3.0 with standard gnu++11 ```` **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-16.svg) |date-time|JLS-16| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-17 | Reviewed: ⨯ | Score: 0.0 A github workflow calculates the fraction of expectations covered by tests in eclipse-score/inc_nlohmann_json (TODO). **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-ANALYSIS](TA.md#ta-analysis) | Collected data from tests and monitoring of deployed software in eclipse-score/inc_nlohmann_json is analysed according to specified objectives. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** _None_ **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-17.svg) |date-time|JLS-17| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-18 | Reviewed: ⨯ | Score: 0.0 Results from tests are accurately captured. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-DATA](TA.md#ta-data) | Data in eclipse-score/inc_nlohmann_json is collected from tests, and from monitoring of deployed software, according to specified objectives. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `TSF/scripts/capture_test_data_memory_sensitive.py` ````py import sys import sqlite3 import os import xml.etree.ElementTree as ET import re from datetime import datetime, timezone def setup_environment_variables() -> dict[str, str]: # Retrieves and validates the necessary environment variables for GitHub workflows. # Raises a RuntimeError if any required variables are missing. required_vars = ["GITHUB_RUN_ID", "GITHUB_REPOSITORY", "GITHUB_RUN_ATTEMPT"] environment = {var: os.getenv(var) for var in required_vars} missing_vars = [var for var, value in environment.items() if not value] if missing_vars: raise RuntimeError(f"Missing required environment variables: {', '.join(missing_vars)}") return environment def clean_test_case(testcase: str) -> tuple[str,str]: # This function expects a testcase of the form "testcase_name_cppxx". # It returns the tuple ["testcase_name","gnu++xx"]. name, appendix = testcase.rsplit('_',1) return [name, "gnu++"+appendix.replace('cpp','')] def read_result_table(input: list[str]) -> dict: """ This function expects console output <system-out> of doctest. It is assumed that this has the following form <system-out>[doctest] doctest version is "2.4.11" [doctest] run with "--help" for options =============================================================================== [doctest] test cases: 1 | 1 passed | 0 failed | 0 skipped [doctest] assertions: 45 | 45 passed | 0 failed | [doctest] Status: SUCCESS! </system-out> It extracts the number of passed/failed/skipped test cases, and passed/skipped assertions. """ metadata = dict() raw_data = input[0] data = re.findall(r'(\d+)\s+(passed|failed|skipped)\b', raw_data) if len(data) < 5: raise RuntimeError("Fatal Error: Received incomplete or wrong result table.") metadata["passed test cases"] = int(data[0][0]) metadata["failed test cases"] = int(data[1][0]) metadata["skipped test cases"] = int(data[2][0]) metadata["passed assertions"] = int(data[3][0]) metadata["failed assertions"] = int(data[4][0]) return metadata def get_metadata(testcase: ET.Element) -> dict: # expects testcase extracted from a junit xml-file as input # extracts the data interesting to us # Assumption of Use: before execution, it is checked if is_unit_test(testcase)==True metadata = dict() # from name both name of the test and C++ standard can be extracted unsplit_name = testcase.get("name", None) if unsplit_name is None: raise RuntimeError("Fatal error: Can not read name of test-case!") name, standard = clean_test_case(unsplit_name) metadata["name"] = name metadata["standard"] = standard metadata["execution time"] = float(testcase.get("time")) # results are not as easily extracted but must be processed further metadata = metadata | read_result_table(list(testcase.find("system-out").itertext())) return metadata def is_unit_test(testcase: ET.Element) -> bool: # crude test if the element belongs to a unit-test return "_cpp" in testcase.get('name') def get_all_xml_files(directory: str = '.') -> list[str]: # search the folder containing all the artifacts and list the paths of expected test-reports result = [] try: content = os.listdir(directory) except FileNotFoundError as e: print(e) return result for entry in content: if os.path.isdir(directory+'/'+entry): result = result + get_all_xml_files(directory+'/'+entry) if entry.endswith('.xml'): file = directory+'/'+entry if directory != '.' else entry result.append(file) return result def get_ctest_target(log_name: str) -> str: # extracts name of ctest target from junit log # log_name has the form "path/to/log/file/target_junit.xml", and target is expected log = log_name.split('/')[-1] return log.removesuffix("_junit.xml") def find_most_recent_results(target: str, name: str, compiler: str, cpp_standard: str, database: sqlite3.Connection) -> list[int]: cursor = database.cursor() cursor.execute(""" WITH combination AS ( SELECT workflow_info.repo, workflow_info.run_id, workflow_info.run_attempt, workflow_info.time FROM test_results INNER JOIN workflow_info ON workflow_info.repo = test_results.repo AND workflow_info.run_id = test_results.run_id AND workflow_info.run_attempt = test_results.run_attempt WHERE test_results.ctest_target = ? AND test_results.name = ? AND test_results.compiler = ? AND test_results.cpp_standard = ? ) SELECT repo, run_id, run_attempt FROM combination ORDER BY time DESC, run_id DESC, run_attempt DESC LIMIT 1; """,(target,name,compiler,cpp_standard)) result = cursor.fetchone() if result is None: # if no recent run is found, data need to be stored return [] repo, run_id, run_attempt = result cursor.execute(""" SELECT passed_cases, failed_cases, skipped_cases, passed_assertions, failed_assertions FROM test_results WHERE ctest_target = ? AND name = ? AND compiler = ? AND cpp_standard = ? AND repo = ? AND run_id = ? AND run_attempt = ? """, (target,name,compiler,cpp_standard,repo,run_id,run_attempt)) result = cursor.fetchone() return [] if result is None else list(result) ########################## # Below starts the script. ########################## if __name__ == "__main__": # check if argument was delivered if len(sys.argv) != 2: raise RuntimeError("Expected status of workflow as argument. Aborting!") # expected argument: status of workflow # check if the argument has the expected form status = sys.argv[1] if status not in ["successful", "failed", "cancelled"]: raise RuntimeError("The input does not match the expected format! Permissible are 'successful', 'failed' and 'cancelled'. Aborting!") # get environment variables try: environment = setup_environment_variables() except RuntimeError as e: raise RuntimeError("Critical error: Can not uniquely identify environment data! Aborting recording of data.") # Step 1: store metadata of workflow run persistently # initiate connection to database connector = sqlite3.connect("TSF/MemoryEfficientTestResultData.db") connector.execute("PRAGMA foreign_keys = ON") # load expected tables # table workflow_info contains metadata of workflow and is updated every time command = ( "CREATE TABLE IF NOT EXISTS workflow_info(", "repo TEXT, ", # repository "run_id INT, ", # ID of workflow run "run_attempt INT, ", # Attempt-number of workflow run "status TEXT ", # Termination-status of workflow "CHECK(status IN ('successful', 'failed', 'cancelled')) DEFAULT 'failed', ", "time INT, ", # the time that is associated to this workflow run "PRIMARY KEY(repo, run_id, run_attempt))" ) connector.execute(''.join(command)) # table test_results contains detailed results for each individual test command = ( "CREATE TABLE IF NOT EXISTS test_results(", "ctest_target TEXT, ", # name of the ctest target located in ci.cmake "name TEXT, ", # name of the test "execution_time REAL, ", # execution time in seconds "compiler TEXT, ", # compiler information "cpp_standard TEXT, ", # cpp-standard "passed_cases INT, ", # number of passed test-cases "failed_cases INT, ", # number of failed test-cases "skipped_cases INT, ", # number of skipped test-cases "passed_assertions INT, ", # number of passed assertions "failed_assertions INT, ", # number of failed assertions "repo TEXT, ", # repository "run_id INT, ", # ID of workflow run "run_attempt INT, ", # Attempt-number of workflow run "FOREIGN KEY(repo, run_id, run_attempt) REFERENCES workflow_info);" ) connector.execute(''.join(command)) cursor = connector.cursor() # Count number of rows as heuristic size-checker. # In case that the update-check fails, and every result is stored, allow for approximately 26 complete results to be stored cursor.execute("SELECT MAX(COALESCE((SELECT MAX(rowid) FROM workflow_info),0),COALESCE((SELECT MAX(rowid) FROM test_results),0));") if cursor.fetchone()[0] > 1e5: connector.close() raise RuntimeError("The persistent data storage is too large! Please move persistent data to external storage.") # fill in metadata # OBSERVE: This script expects the status of the github workflow as argument repo = environment.get('GITHUB_REPOSITORY') run_id = environment.get('GITHUB_RUN_ID') run_attempt = environment.get('GITHUB_RUN_ATTEMPT') time = int(datetime.now(timezone.utc).timestamp()) command = "INSERT INTO workflow_info VALUES(?,?,?,?,?)" cursor.execute(command,(repo, run_id, run_attempt, status, time)) # Don't forget to save! connector.commit() # Step 2: generate report of most recent test run and update persistent storage if necessary # initialise database connection conn = sqlite3.connect("MemoryEfficientTestResults.db") cur = conn.cursor() # add the expected table # the table TestResults.test_results differs from TestResultData.test_results in that the metadata of the commit are not saved. command = ( "CREATE TABLE IF NOT EXISTS test_results(", "ctest_target TEXT, ", # name of the ctest target located in ci.cmake "name TEXT, ", # name of the test "execution_time REAL, ", # execution time in seconds "compiler TEXT, ", # compiler information "cpp_standard TEXT, ", # cpp-standard "passed_cases INT, ", # number of passed test-cases "failed_cases INT, ", # number of failed test-cases "skipped_cases INT, ", # number of skipped test-cases "passed_assertions INT, ", # number of passed assertions "failed_assertions INT", # number of failed assertions ")" ) conn.execute(''.join(command)) # Load my artifacts junit_logs = get_all_xml_files("./my_artifacts/") #extract data for junit_log in junit_logs: tree = ET.parse(junit_log) file_root = tree.getroot() testsuite = next(file_root.iter('testsuite'), None) if testsuite is None: print(f"Error: Could not find testsuite data in {junit_log}.") continue for testcase in (case for case in file_root.iter('testcase') if is_unit_test(case)): metadata = get_metadata(testcase) target = get_ctest_target(junit_log) compiler = testsuite.get('name') more_compiler_info = [case for case in file_root.iter('testcase') if case.get("name") == "cmake_target_include_directories_configure"] if len(more_compiler_info) != 0: compiler_information = more_compiler_info[0] information = list(compiler_information.find("system-out").itertext())[0].split('\n')[0] compiler = information.replace("-- The CXX compiler identification is ","") name = metadata.get('name') cpp_standard = metadata.get('standard') data = ( target, name, metadata.get('execution time'), compiler, cpp_standard, metadata.get('passed test cases'), metadata.get('failed test cases'), metadata.get('skipped test cases'), metadata.get('passed assertions'), metadata.get('failed assertions') ) command ="INSERT INTO test_results VALUES(?,?,?,?,?,?,?,?,?,?);" cur.execute(command, data) conn.commit() most_recently_stored_results = find_most_recent_results(target,name,compiler,cpp_standard,connector) current_results = [metadata.get('passed test cases'),metadata.get('failed test cases'),metadata.get('skipped test cases'),metadata.get('passed assertions'),metadata.get('failed assertions')] if (len(most_recently_stored_results) != 5) or any(most_recently_stored_results[i]!=current_results[i] for i in range(0,5)): data = data + (repo, run_id, run_attempt) command ="INSERT INTO test_results VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?);" cursor.execute(command,data) # terminate connection to temporary database # don't forget to commit the changes conn.commit() conn.close() # terminate connection to persistent database # don't forget to commit the changes again, for good measure connector.commit() connector.close() ```` - Description: This script extracts the test-results from the junit-files generated by ctest and writes these into a data-base. - `.github/workflows/ubuntu.yml` ````yaml name: Ubuntu on: workflow_call: inputs: artifact_id: description: 'Unique identifier for artifacts' required: true type: string permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref || github.run_id }} cancel-in-progress: true jobs: ci_test_gcc: runs-on: ubuntu-latest container: gcc:14 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_gcc - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_gcc_artefact path: build/my_logs/ ci_infer: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.4.0 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_infer ci_static_analysis_ubuntu: runs-on: ubuntu-latest strategy: matrix: target: [ci_test_amalgamation, ci_test_single_header, ci_cppcheck, ci_cpplint, ci_reproducible_tests, ci_non_git_tests, ci_offline_testdata, ci_reuse_compliance, ci_test_valgrind] steps: - name: Harden Runner uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - name: Install Valgrind run: sudo apt-get update ; sudo apt-get install -y valgrind - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} - name: Upload test report if: ${{ matrix.target != 'ci_reuse_compliance' && matrix.target != 'ci_cpplint' && matrix.target != 'ci_test_amalgamation' && matrix.target != 'ci_cppcheck' }} uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_static_analysis_ubuntu_artefact_${{ matrix.target }} path: build/my_logs/ ci_static_analysis_clang: runs-on: ubuntu-latest container: silkeh/clang:20 strategy: matrix: target: [ci_test_clang, ci_clang_tidy, ci_test_clang_sanitizer, ci_clang_analyze, ci_single_binaries] steps: - name: Install git, clang-tools, iwyu (ci_single_binaries), and unzip run: apt-get update ; apt-get install -y git clang-tools iwyu unzip - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake # The default C++ compiler in the docker image is clang++-14 which does not support all compiler flags run: cmake -S . -B build -DJSON_CI=On -DCLANG_TOOL=clang++-20 - name: Build run: cmake --build build --target ${{ matrix.target }} - name: Upload test report if: ${{ matrix.target != 'ci_clang_analyze' && matrix.target != 'ci_single_binaries' && matrix.target != 'ci_clang_tidy' }} uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_static_analysis_clang_artefact_${{ matrix.target }} path: build/my_logs/ ci_cmake_options: runs-on: ubuntu-latest container: ubuntu:focal strategy: matrix: target: [ci_cmake_flags, ci_test_diagnostics, ci_test_diagnostic_positions, ci_test_noexceptions, ci_test_noimplicitconversions, ci_test_legacycomparison, ci_test_noglobaludls] steps: - name: Install build-essential run: apt-get update ; apt-get install -y build-essential unzip wget git libssl-dev - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} - name: Upload test report if: ${{ matrix.target != 'ci_cmake_flags' }} uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_cmake_options_artefact_${{ matrix.target }} path: build/my_logs/ ci_test_coverage: runs-on: ubuntu-latest steps: - name: Harden Runner uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Install dependencies and de_DE locale run: | sudo apt-get clean sudo apt-get update sudo apt-get install -y build-essential cmake lcov ninja-build make locales gcc-multilib g++-multilib sudo locale-gen de_DE sudo update-locale - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_coverage - name: Archive coverage report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: code-coverage-report path: ${{ github.workspace }}/build/html - name: Publish report to Coveralls uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b # v2.3.6 with: github-token: ${{ secrets.GITHUB_TOKEN }} path-to-lcov: ${{ github.workspace }}/build/json.info.filtered.noexcept fail-on-error: false # Do not fail the workflow if Coveralls fails - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_coverage_artefact path: build/my_logs/ ci_test_compilers_gcc_old: runs-on: ubuntu-latest strategy: matrix: compiler: ['4.8', '4.9', '5', '6'] container: ghcr.io/nlohmann/json-ci:v2.4.0 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run CMake run: CXX=g++-${{ matrix.compiler }} cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_compiler_g++-${{ matrix.compiler }} - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_compilers_gcc_old_artefact_${{ matrix.compiler }} path: build/my_logs/ ci_test_compilers_gcc: runs-on: ubuntu-latest strategy: matrix: # older GCC docker images (4, 5, 6) fail to check out code compiler: ['7', '8', '9', '10', '11', '12', '13', '14'] container: gcc:${{ matrix.compiler }} steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_compiler_default - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_compilers_gcc_clang_artefact_${{ matrix.compiler }} path: build/my_logs/ ci_test_compilers_clang: runs-on: ubuntu-latest strategy: matrix: compiler: ['17', '18', '19', '20'] container: silkeh/clang:${{ matrix.compiler }} steps: - name: Install unzip and git run: apt-get update ; apt-get install -y unzip git - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Set env FORCE_STDCPPFS_FLAG for clang 7 / 8 / 9 / 10 run: echo "JSON_FORCED_GLOBAL_COMPILE_OPTIONS=-DJSON_HAS_FILESYSTEM=0;-DJSON_HAS_EXPERIMENTAL_FILESYSTEM=0" >> "$GITHUB_ENV" if: ${{ matrix.compiler == '7' || matrix.compiler == '8' || matrix.compiler == '9' || matrix.compiler == '10' }} - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_compiler_default - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_compilers_clang_artefact_${{ matrix.compiler }} path: build/my_logs/ ci_test_standards_gcc: runs-on: ubuntu-latest container: gcc:14.3 strategy: matrix: standard: [11, 14, 17, 20, 23, 26] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_gcc_cxx${{ matrix.standard }} - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_standards_gcc_artefact_${{ matrix.standard }} path: build/my_logs/ ci_test_standards_clang: runs-on: ubuntu-latest container: silkeh/clang:20 strategy: matrix: standard: [11, 14, 17, 20, 23, 26] stdlib: [libcxx, libstdcxx] steps: - name: Install git and unzip run: apt-get update ; apt-get install -y git unzip - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build with libc++ run: cmake --build build --target ci_test_clang_libcxx_cxx${{ matrix.standard }} if: ${{ matrix.stdlib == 'libcxx' }} - name: Build with libstdc++ run: cmake --build build --target ci_test_clang_cxx${{ matrix.standard }} if: ${{ matrix.stdlib == 'libstdcxx' }} - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_standards_clang_artefact_${{ matrix.stdlib }}_${{ matrix.standard }} path: build/my_logs/ ci_cuda_example: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.4.0 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_cuda_example ci_icpc: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.2.0 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: | . /opt/intel/oneapi/setvars.sh cmake --build build --target ci_icpc - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_icpc_artefact path: build/my_logs/ ci_test_documentation: runs-on: ubuntu-latest strategy: matrix: target: [ci_test_examples, ci_test_build_documentation] steps: - name: Harden Runner uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} publish_test_data_success: runs-on: ubuntu-latest permissions: contents: write needs: [ci_test_gcc, ci_infer, ci_static_analysis_ubuntu, ci_static_analysis_clang, ci_cmake_options, ci_test_coverage, ci_test_compilers_gcc_old, ci_test_compilers_gcc, ci_test_compilers_clang, ci_test_standards_gcc, ci_test_standards_clang, ci_cuda_example, ci_icpc, ci_test_documentation] if: success() steps: - name: Check out code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Download all workflow artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: path: my_artifacts - name: Get current branch name id: get_branch env: GITHUB_EVENT_NAME: ${{ github.event_name }} PR_BRANCH_NAME: ${{ github.event.pull_request.head.ref }} GITHUB_REF_SAFE: ${{ github.ref }} run: | if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # Use the branch from the pull request safely via environment variable current_branch="$PR_BRANCH_NAME" else # Remove the "refs/heads/" prefix from GITHUB_REF safely current_branch="${GITHUB_REF_SAFE#refs/heads/}" fi # Write the branch name to $GITHUB_ENV securely echo "branch_name=${current_branch}" >> "$GITHUB_ENV" - name: Fetch data storage branch run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git fetch --all git checkout save_historical_data && git pull || git checkout -b save_historical_data - name: Load persistent data run: | if ! git ls-tree --name-only origin/save_historical_data TSF/MemoryEfficientTestResultData.db | grep TSF/MemoryEfficientTestResultData.db; then touch TSF/MemoryEfficientTestResultData.db git add TSF/MemoryEfficientTestResultData.db git commit -m "Create persistent storage" git push origin save_historical_data fi # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right commit from actions/checkout # Just get the file from save_historical_data branch git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db else # For push events, switch to the branch and get the file git checkout $branch_name git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db fi - name: append test data run: | python3 TSF/scripts/capture_test_data_memory_sensitive.py successful - name: Checkout data storage branch if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git stash push --include-untracked -- $(git status --porcelain | awk '{print $2}' | grep -v TSF/MemoryEfficientTestResultData.db) git checkout save_historical_data - name: Commit and Push persistent data if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git add TSF/MemoryEfficientTestResultData.db git commit -m "Save test data" || echo "No test data to be saved" git push origin save_historical_data - name: Recover stash if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right branch/commit git stash apply else # For push events, switch back to the working branch git checkout $branch_name git stash apply fi - name: Move test report run: | mkdir test_report mv MemoryEfficientTestResults.db test_report/MemoryEfficientTestResults.db - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: publish_data_artifact path: test_report/ publish_test_data_failure: runs-on: ubuntu-latest permissions: contents: write needs: [ci_test_gcc, ci_infer, ci_static_analysis_ubuntu, ci_static_analysis_clang, ci_cmake_options, ci_test_coverage, ci_test_compilers_gcc_old, ci_test_compilers_gcc, ci_test_compilers_clang, ci_test_standards_gcc, ci_test_standards_clang, ci_cuda_example, ci_icpc, ci_test_documentation] if: failure() steps: - name: Check out code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Download all workflow artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: path: my_artifacts - name: Get current branch name id: get_branch env: GITHUB_EVENT_NAME: ${{ github.event_name }} PR_BRANCH_NAME: ${{ github.event.pull_request.head.ref }} GITHUB_REF_SAFE: ${{ github.ref }} run: | if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # Use the branch from the pull request safely via environment variable current_branch="$PR_BRANCH_NAME" else # Remove the "refs/heads/" prefix from GITHUB_REF safely current_branch="${GITHUB_REF_SAFE#refs/heads/}" fi # Write the branch name to $GITHUB_ENV securely echo "branch_name=${current_branch}" >> "$GITHUB_ENV" - name: Fetch data storage branch run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git fetch --all git checkout save_historical_data && git pull || git checkout -b save_historical_data - name: Load persistent data run: | if ! git ls-tree --name-only origin/save_historical_data TSF/MemoryEfficientTestResultData.db | grep TSF/MemoryEfficientTestResultData.db; then touch TSF/MemoryEfficientTestResultData.db git add TSF/MemoryEfficientTestResultData.db git commit -m "Create persistent storage" git push origin save_historical_data fi # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right commit from actions/checkout # Just get the file from save_historical_data branch git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db else # For push events, switch to the branch and get the file git checkout $branch_name git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db fi - name: append test data run: | python3 TSF/scripts/capture_test_data_memory_sensitive.py failed - name: Checkout data storage branch if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git stash push --include-untracked -- $(git status --porcelain | awk '{print $2}' | grep -v TSF/MemoryEfficientTestResultData.db) git checkout save_historical_data - name: Commit and Push persistent data if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git add TSF/MemoryEfficientTestResultData.db git commit -m "Save test data" || echo "No test data to be saved" git push origin save_historical_data - name: Recover stash if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right branch/commit git stash apply else # For push events, switch back to the working branch git checkout $branch_name git stash apply fi - name: Move test report run: | mkdir test_report mv MemoryEfficientTestResults.db test_report/MemoryEfficientTestResults.db - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: publish_data_artifact path: test_report/ publish_test_data_cancellation: runs-on: ubuntu-latest permissions: contents: write needs: [ci_test_gcc, ci_infer, ci_static_analysis_ubuntu, ci_static_analysis_clang, ci_cmake_options, ci_test_coverage, ci_test_compilers_gcc_old, ci_test_compilers_gcc, ci_test_compilers_clang, ci_test_standards_gcc, ci_test_standards_clang, ci_cuda_example, ci_icpc, ci_test_documentation] if: cancelled() steps: - name: Check out code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Download all workflow artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: path: my_artifacts - name: Get current branch name id: get_branch env: GITHUB_EVENT_NAME: ${{ github.event_name }} PR_BRANCH_NAME: ${{ github.event.pull_request.head.ref }} GITHUB_REF_SAFE: ${{ github.ref }} run: | if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # Use the branch from the pull request safely via environment variable current_branch="$PR_BRANCH_NAME" else # Remove the "refs/heads/" prefix from GITHUB_REF safely current_branch="${GITHUB_REF_SAFE#refs/heads/}" fi # Write the branch name to $GITHUB_ENV securely echo "branch_name=${current_branch}" >> "$GITHUB_ENV" - name: Fetch data storage branch run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git fetch --all git checkout save_historical_data && git pull || git checkout -b save_historical_data - name: Load persistent data run: | if ! git ls-tree --name-only origin/save_historical_data TSF/MemoryEfficientTestResultData.db | grep TSF/MemoryEfficientTestResultData.db; then touch TSF/MemoryEfficientTestResultData.db git add TSF/MemoryEfficientTestResultData.db git commit -m "Create persistent storage" git push origin save_historical_data fi # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right commit from actions/checkout # Just get the file from save_historical_data branch git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db else # For push events, switch to the branch and get the file git checkout $branch_name git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db fi - name: append test data run: | python3 TSF/scripts/capture_test_data_memory_sensitive.py cancelled - name: Checkout data storage branch if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git stash push --include-untracked -- $(git status --porcelain | awk '{print $2}' | grep -v TSF/MemoryEfficientTestResultData.db) git checkout save_historical_data - name: Commit and Push persistent data if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git add TSF/MemoryEfficientTestResultData.db git commit -m "Save test data" || echo "No test data to be saved" git push origin save_historical_data - name: Recover stash if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right branch/commit git stash apply else # For push events, switch back to the working branch git checkout $branch_name git stash apply fi - name: Move test report run: | mkdir test_report mv MemoryEfficientTestResults.db test_report/MemoryEfficientTestResults.db - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: publish_data_artifact path: test_report/ ubuntu_artifact: runs-on: ubuntu-latest needs: [publish_test_data_success, publish_test_data_failure, publish_test_data_cancellation, ci_test_gcc, ci_infer, ci_static_analysis_ubuntu, ci_static_analysis_clang, ci_cmake_options, ci_test_coverage, ci_test_compilers_gcc_old, ci_test_compilers_gcc, ci_test_compilers_clang, ci_test_standards_gcc, ci_test_standards_clang, ci_cuda_example, ci_icpc, ci_test_documentation] if: ${{ always() && (needs.publish_test_data_success.result == 'success' || needs.publish_test_data_failure.result == 'success' || needs.publish_test_data_cancellation.result == 'success') }} steps: - name: Download test report uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: name: publish_data_artifact - name: Generate ubuntu artifact run: | echo "Generating ubuntu artifact..." mkdir -p ubuntu if [ -f MemoryEfficientTestResults.db ]; then mv MemoryEfficientTestResults.db ubuntu/MemoryEfficientTestResults.db else echo "No test-results were captured." fi echo "ubuntu processed for ${{ inputs.artifact_id }}" > ubuntu/ubuntu.txt - name: Upload ubuntu artifact uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ${{ inputs.artifact_id }} path: ubuntu/ ```` - Description: This workflow runs the tests and generates test-reports as junit-files, which are given to the script capture_test_data.py. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-18.svg) |date-time|JLS-18| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-19 | Reviewed: ⨯ | Score: 0.0 All library components, build dependencies, and build tools in the nlohmann/json repository are declared in build system manifests. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-ITERATIONS](TA.md#ta-iterations) | All constructed iterations of the nlohmann/json library include source code, build instructions, tests, results and attestations. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/CMakeLists.txt` `https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/CMakeLists.txt` - CMake build manifest file - `website: https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/BUILD.bazel` `https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/BUILD.bazel` - Bazel build manifest file - `website: https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/meson.build` `https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/meson.build` - Meson build manifest file - `website: https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/Package.swift` `https://raw.githubusercontent.com/nlohmann/json/refs/heads/develop/Package.swift` - Swift Package Manager manifest file **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-19.svg) |date-time|JLS-19| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-20 | Reviewed: ⨯ | Score: 0.0 A github workflow of eclipse-score/inc_nlohmann_json saves the history of scores in the trustable graph to derive trends. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-CONFIDENCE](TA.md#ta-confidence) | Confidence in the nlohmann/json library is measured based on results of analysis. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `.github/workflows/parent-workflow.yml` ````yaml name: Parent Workflow on: pull_request: push: branches: - main schedule: - cron: '0 0 * * *' # Runs daily at midnight UTC permissions: contents: read jobs: labeler: permissions: contents: read pages: write pull-requests: write name: Run Labeler Workflow uses: ./.github/workflows/labeler.yml with: artifact_id: "labeler-${{ github.sha }}" SME_review_checker: permissions: contents: read pull-requests: read name: Run SME_review_checker Workflow if: ${{ github.event_name == 'pull_request' }} # only run SME_review_checker for PRs uses: ./.github/workflows/SME_review_checker.yml with: artifact_id: "SME_review_checker-${{ github.sha }}" check_amalgamation: name: Run Amalgamation Workflow if: ${{ github.event_name == 'pull_request' }} # only run check_amalgamation for PRs uses: ./.github/workflows/check_amalgamation.yml with: artifact_id: "check_amalgamation-${{ github.sha }}" test_trudag_extensions: name: Run Test Trudag Extensions Workflow uses: ./.github/workflows/test_trudag_extensions.yml with: artifact_id: "test_trudag_extensions-${{ github.sha }}" codeql: permissions: contents: read security-events: write name: Run Codeql analysis Workflow uses: ./.github/workflows/codeql-analysis.yml with: artifact_id: "codeql-${{ github.sha }}" ubuntu: name: Run Ubuntu Workflow permissions: contents: write needs: [codeql] # Error if CodeQL and Ubuntu triggered at the same time due to conflicting priorities uses: ./.github/workflows/ubuntu.yml with: artifact_id: "ubuntu-${{ github.sha }}" dependency_review: name: Run dependency_review Workflow if: ${{ github.event_name == 'pull_request' }} # only run dependency_review for PRs uses: ./.github/workflows/dependency-review.yml with: artifact_id: "dependency_review-${{ github.sha }}" collect_artifacts_pr: name: "Collect Results & Deploy (PR)" if: github.event_name == 'pull_request' needs: [labeler, SME_review_checker, check_amalgamation, test_trudag_extensions, dependency_review, codeql, ubuntu] runs-on: ubuntu-latest strategy: matrix: target: [labeler, SME_review_checker, check_amalgamation, test_trudag_extensions, dependency_review, codeql, ubuntu] steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Check child workflow results run: | echo "=== Checking Child Workflow Results ===" result="${{ needs[matrix.target].result }}" echo "${{ matrix.target }} workflow result: $result" if [[ "$result" != "success" ]]; then echo "❌ ${{ matrix.target }} workflow failed! Exiting..." exit 1 fi echo "✅ Child workflows completed successfully!" env: current_workflow: ${{ matrix.target }} - name: Download artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: name: "${{ matrix.target }}-${{ github.sha }}" path: artifacts/ collect_artifacts_non_pr: name: "Collect Results & Deploy (Non-PR)" if: github.event_name != 'pull_request' needs: [labeler, test_trudag_extensions, codeql, ubuntu] # no check_amalgamation, dependency_review or SME_review_checker if non PR runs-on: ubuntu-latest strategy: matrix: target: [labeler, test_trudag_extensions, codeql, ubuntu] steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Check child workflow results run: | echo "=== Checking Child Workflow Results ===" result="${{ needs[matrix.target].result }}" echo "${{ matrix.target }} workflow result: $result" if [[ "$result" != "success" ]]; then echo "❌ ${{ matrix.target }} workflow failed! Exiting..." exit 1 fi echo "✅ Child workflows completed successfully!" env: current_workflow: ${{ matrix.target }} - name: Download artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: name: "${{ matrix.target }}-${{ github.sha }}" path: artifacts/ test_publish_documentation: permissions: contents: write pages: write pull-requests: write id-token: write security-events: read name: Test publish_documentation Workflow if: github.event_name == 'pull_request' # Whenever on Pull-request, test publication needs: [collect_artifacts_pr] uses: ./.github/workflows/test_publication.yml with: artifact_id: "ubuntu-${{ github.sha }}" publish_documentation: permissions: contents: write pages: write pull-requests: write id-token: write security-events: read name: Run publish_documentation Workflow if: github.event_name == 'push' # Publish documentation should only run on push to main needs: [collect_artifacts_non_pr] uses: ./.github/workflows/publish_documentation.yml with: artifact_id: "ubuntu-${{ github.sha }}" ```` - Description: github workflow running on push to main and triggering the workflow publish_documentation - `.github/workflows/publish_documentation.yml` ````yaml # ******************************************************************************* # Copyright (c) 2025 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. # # This program and the accompanying materials are made available under the # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* name: Documentation on: workflow_call: inputs: artifact_id: description: 'Unique identifier for artifacts to be loaded' required: true type: string permissions: contents: read jobs: run-trudag: runs-on: ubuntu-latest permissions: contents: write pages: write pull-requests: write id-token: write steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Load ubuntu-artifact uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: name: ${{ inputs.artifact_id }} path: artifacts/ - name: Set up Python uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: '3.11.2' # trudag version v2025.10.22 - name: Install trudag and dependencies run: | sudo apt-get update sudo apt-get install -y graphviz pip install --upgrade pip pip install PyYAML requests pip install git+https://gitlab.com/CodethinkLabs/trustable/trustable@v2025.10.22 - name: Install tools run: | sudo apt-get update sudo apt-get install -y jq sudo apt install gh -y - name: Authenticate with GitHub CLI run: | echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token - name: Get current branch name id: get_branch env: GITHUB_EVENT_NAME: ${{ github.event_name }} PR_BRANCH_NAME: ${{ github.event.pull_request.head.ref }} GITHUB_REF_SAFE: ${{ github.ref }} run: | if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # Use the branch from the pull request safely via environment variable current_branch="$PR_BRANCH_NAME" else # Remove the "refs/heads/" prefix from GITHUB_REF safely current_branch="${GITHUB_REF_SAFE#refs/heads/}" fi # Write the branch name to $GITHUB_ENV securely echo "branch_name=${current_branch}" >> "$GITHUB_ENV" - name: Fetch data storage branch run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git fetch --all git checkout save_historical_data && git pull || git checkout -b save_historical_data - name: Fetch open issues labelled as bug from nlohmann/json id: fetch_issues run: | echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token # Define variables REPO="nlohmann/json" # Target repository OUTPUT_FILE="TSF/misbehaviours.md" # Check if the target repository is reachable if ! gh repo view "$REPO" --json name -q .name; then echo "Could not reach the target repository ($REPO). Aborting workflow." exit 1 fi # Fetch open issues from the nlohmann/json repository gh issue list --repo "$REPO" --state open --limit 10000 --json number,title,state,createdAt,url,labels > raw_open_issues.json # Fetch closed issues from the nlohmann/json repository gh issue list --repo "$REPO" --state closed --limit 10000 --json number,title,state,createdAt,url,labels > raw_closed_issues.json # print the list of misbehaviours python3 TSF/scripts/generate_list_of_misbehaviours.py > $OUTPUT_FILE # Push misbehaviours file to save_historical_data branch git add TSF/misbehaviours.md git commit -m "Updated issues list" || echo "No changes to commit" git push origin save_historical_data && git pull - name: Load persistent data run: | if ! git ls-tree --name-only origin/save_historical_data TSF/TrustableScoring.db | grep TSF/TrustableScoring.db; then mkdir -p TSF touch TSF/TrustableScoring.db git add TSF/TrustableScoring.db git commit -m "Initialise persistent data storage" git push origin save_historical_data fi git checkout $branch_name git checkout save_historical_data -- TSF/TrustableScoring.db - name: Generate trudag report run: | REPO_FULL="${{ github.repository }}" REPO_NAME="${REPO_FULL#*/}" OWNER_NAME="${REPO_FULL%%/*}" TSF/scripts/generate_report.sh "https://${OWNER_NAME}.github.io/${REPO_NAME}/main" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Checkout data storage branch run: | git stash push --include-untracked -- $(git status --porcelain | awk '{print $2}' | grep -v TSF/TrustableScoring.db) git checkout save_historical_data git pull - name: Store persistent data run: | git add TSF/TrustableScoring.db git commit -m "Append data storage" || echo "Historical data already up to date." git push origin save_historical_data - name: Recover stash run: | git checkout $branch_name git stash apply - name: Upload trudag artifact uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: trudag-report-${{ github.sha }} path: TSF/docs/generated/ if-no-files-found: error build-docs: needs: run-trudag # the eclipse-score/cicd-workflow docs.yml is adjusted to download the trudag report artifact before building the documentation uses: ./.github/workflows/docs.yml permissions: contents: write pages: write pull-requests: write id-token: write with: # the bazel-target depends on your repo specific docs_targets configuration (e.g. "suffix")Add commentMore actions bazel-target: "//:docs -- --github_user=${{ github.repository_owner }} --github_repo=${{ github.event.repository.name }}" retention-days: 3 ```` - Description: github workflow executing calculation and storage of trustable scores - `website: https://github.com/eclipse-score/inc_nlohmann_json/blob/save_historical_data/TSF/TrustableScoring.db` `https://github.com/eclipse-score/inc_nlohmann_json/blob/save_historical_data/TSF/TrustableScoring.db` - the database containing the trustable scores **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-20.svg) |date-time|JLS-20| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-21 | Reviewed: ⨯ | Score: 0.0 A score is calculated based on the number of mirrored and unmirrored things. (TODO) **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-RELEASES](TA.md#ta-releases) | Construction of releases for the nlohmann/json library is fully repeatable and the results are fully reproducible, with any exceptions documented and justified. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** _None_ **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-21.svg) |date-time|JLS-21| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-22 | Reviewed: ⨯ | Score: 0.0 A github workflow of eclipse-score/inc_nlohmann_json executes the unit tests daily and saves the results as time-series data. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-VALIDATION](TA.md#ta-validation) | All specified tests are executed repeatedly, under defined conditions in controlled environments, according to specified objectives. (To revisit) | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `.github/workflows/parent-workflow.yml` ````yaml name: Parent Workflow on: pull_request: push: branches: - main schedule: - cron: '0 0 * * *' # Runs daily at midnight UTC permissions: contents: read jobs: labeler: permissions: contents: read pages: write pull-requests: write name: Run Labeler Workflow uses: ./.github/workflows/labeler.yml with: artifact_id: "labeler-${{ github.sha }}" SME_review_checker: permissions: contents: read pull-requests: read name: Run SME_review_checker Workflow if: ${{ github.event_name == 'pull_request' }} # only run SME_review_checker for PRs uses: ./.github/workflows/SME_review_checker.yml with: artifact_id: "SME_review_checker-${{ github.sha }}" check_amalgamation: name: Run Amalgamation Workflow if: ${{ github.event_name == 'pull_request' }} # only run check_amalgamation for PRs uses: ./.github/workflows/check_amalgamation.yml with: artifact_id: "check_amalgamation-${{ github.sha }}" test_trudag_extensions: name: Run Test Trudag Extensions Workflow uses: ./.github/workflows/test_trudag_extensions.yml with: artifact_id: "test_trudag_extensions-${{ github.sha }}" codeql: permissions: contents: read security-events: write name: Run Codeql analysis Workflow uses: ./.github/workflows/codeql-analysis.yml with: artifact_id: "codeql-${{ github.sha }}" ubuntu: name: Run Ubuntu Workflow permissions: contents: write needs: [codeql] # Error if CodeQL and Ubuntu triggered at the same time due to conflicting priorities uses: ./.github/workflows/ubuntu.yml with: artifact_id: "ubuntu-${{ github.sha }}" dependency_review: name: Run dependency_review Workflow if: ${{ github.event_name == 'pull_request' }} # only run dependency_review for PRs uses: ./.github/workflows/dependency-review.yml with: artifact_id: "dependency_review-${{ github.sha }}" collect_artifacts_pr: name: "Collect Results & Deploy (PR)" if: github.event_name == 'pull_request' needs: [labeler, SME_review_checker, check_amalgamation, test_trudag_extensions, dependency_review, codeql, ubuntu] runs-on: ubuntu-latest strategy: matrix: target: [labeler, SME_review_checker, check_amalgamation, test_trudag_extensions, dependency_review, codeql, ubuntu] steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Check child workflow results run: | echo "=== Checking Child Workflow Results ===" result="${{ needs[matrix.target].result }}" echo "${{ matrix.target }} workflow result: $result" if [[ "$result" != "success" ]]; then echo "❌ ${{ matrix.target }} workflow failed! Exiting..." exit 1 fi echo "✅ Child workflows completed successfully!" env: current_workflow: ${{ matrix.target }} - name: Download artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: name: "${{ matrix.target }}-${{ github.sha }}" path: artifacts/ collect_artifacts_non_pr: name: "Collect Results & Deploy (Non-PR)" if: github.event_name != 'pull_request' needs: [labeler, test_trudag_extensions, codeql, ubuntu] # no check_amalgamation, dependency_review or SME_review_checker if non PR runs-on: ubuntu-latest strategy: matrix: target: [labeler, test_trudag_extensions, codeql, ubuntu] steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Check child workflow results run: | echo "=== Checking Child Workflow Results ===" result="${{ needs[matrix.target].result }}" echo "${{ matrix.target }} workflow result: $result" if [[ "$result" != "success" ]]; then echo "❌ ${{ matrix.target }} workflow failed! Exiting..." exit 1 fi echo "✅ Child workflows completed successfully!" env: current_workflow: ${{ matrix.target }} - name: Download artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: name: "${{ matrix.target }}-${{ github.sha }}" path: artifacts/ test_publish_documentation: permissions: contents: write pages: write pull-requests: write id-token: write security-events: read name: Test publish_documentation Workflow if: github.event_name == 'pull_request' # Whenever on Pull-request, test publication needs: [collect_artifacts_pr] uses: ./.github/workflows/test_publication.yml with: artifact_id: "ubuntu-${{ github.sha }}" publish_documentation: permissions: contents: write pages: write pull-requests: write id-token: write security-events: read name: Run publish_documentation Workflow if: github.event_name == 'push' # Publish documentation should only run on push to main needs: [collect_artifacts_non_pr] uses: ./.github/workflows/publish_documentation.yml with: artifact_id: "ubuntu-${{ github.sha }}" ```` - Description: github workflow running daily and triggering the workflow ubuntu - `.github/workflows/ubuntu.yml` ````yaml name: Ubuntu on: workflow_call: inputs: artifact_id: description: 'Unique identifier for artifacts' required: true type: string permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref || github.run_id }} cancel-in-progress: true jobs: ci_test_gcc: runs-on: ubuntu-latest container: gcc:14 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_gcc - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_gcc_artefact path: build/my_logs/ ci_infer: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.4.0 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_infer ci_static_analysis_ubuntu: runs-on: ubuntu-latest strategy: matrix: target: [ci_test_amalgamation, ci_test_single_header, ci_cppcheck, ci_cpplint, ci_reproducible_tests, ci_non_git_tests, ci_offline_testdata, ci_reuse_compliance, ci_test_valgrind] steps: - name: Harden Runner uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - name: Install Valgrind run: sudo apt-get update ; sudo apt-get install -y valgrind - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} - name: Upload test report if: ${{ matrix.target != 'ci_reuse_compliance' && matrix.target != 'ci_cpplint' && matrix.target != 'ci_test_amalgamation' && matrix.target != 'ci_cppcheck' }} uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_static_analysis_ubuntu_artefact_${{ matrix.target }} path: build/my_logs/ ci_static_analysis_clang: runs-on: ubuntu-latest container: silkeh/clang:20 strategy: matrix: target: [ci_test_clang, ci_clang_tidy, ci_test_clang_sanitizer, ci_clang_analyze, ci_single_binaries] steps: - name: Install git, clang-tools, iwyu (ci_single_binaries), and unzip run: apt-get update ; apt-get install -y git clang-tools iwyu unzip - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake # The default C++ compiler in the docker image is clang++-14 which does not support all compiler flags run: cmake -S . -B build -DJSON_CI=On -DCLANG_TOOL=clang++-20 - name: Build run: cmake --build build --target ${{ matrix.target }} - name: Upload test report if: ${{ matrix.target != 'ci_clang_analyze' && matrix.target != 'ci_single_binaries' && matrix.target != 'ci_clang_tidy' }} uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_static_analysis_clang_artefact_${{ matrix.target }} path: build/my_logs/ ci_cmake_options: runs-on: ubuntu-latest container: ubuntu:focal strategy: matrix: target: [ci_cmake_flags, ci_test_diagnostics, ci_test_diagnostic_positions, ci_test_noexceptions, ci_test_noimplicitconversions, ci_test_legacycomparison, ci_test_noglobaludls] steps: - name: Install build-essential run: apt-get update ; apt-get install -y build-essential unzip wget git libssl-dev - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} - name: Upload test report if: ${{ matrix.target != 'ci_cmake_flags' }} uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_cmake_options_artefact_${{ matrix.target }} path: build/my_logs/ ci_test_coverage: runs-on: ubuntu-latest steps: - name: Harden Runner uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Install dependencies and de_DE locale run: | sudo apt-get clean sudo apt-get update sudo apt-get install -y build-essential cmake lcov ninja-build make locales gcc-multilib g++-multilib sudo locale-gen de_DE sudo update-locale - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_coverage - name: Archive coverage report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: code-coverage-report path: ${{ github.workspace }}/build/html - name: Publish report to Coveralls uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b # v2.3.6 with: github-token: ${{ secrets.GITHUB_TOKEN }} path-to-lcov: ${{ github.workspace }}/build/json.info.filtered.noexcept fail-on-error: false # Do not fail the workflow if Coveralls fails - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_coverage_artefact path: build/my_logs/ ci_test_compilers_gcc_old: runs-on: ubuntu-latest strategy: matrix: compiler: ['4.8', '4.9', '5', '6'] container: ghcr.io/nlohmann/json-ci:v2.4.0 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run CMake run: CXX=g++-${{ matrix.compiler }} cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_compiler_g++-${{ matrix.compiler }} - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_compilers_gcc_old_artefact_${{ matrix.compiler }} path: build/my_logs/ ci_test_compilers_gcc: runs-on: ubuntu-latest strategy: matrix: # older GCC docker images (4, 5, 6) fail to check out code compiler: ['7', '8', '9', '10', '11', '12', '13', '14'] container: gcc:${{ matrix.compiler }} steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_compiler_default - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_compilers_gcc_clang_artefact_${{ matrix.compiler }} path: build/my_logs/ ci_test_compilers_clang: runs-on: ubuntu-latest strategy: matrix: compiler: ['17', '18', '19', '20'] container: silkeh/clang:${{ matrix.compiler }} steps: - name: Install unzip and git run: apt-get update ; apt-get install -y unzip git - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Set env FORCE_STDCPPFS_FLAG for clang 7 / 8 / 9 / 10 run: echo "JSON_FORCED_GLOBAL_COMPILE_OPTIONS=-DJSON_HAS_FILESYSTEM=0;-DJSON_HAS_EXPERIMENTAL_FILESYSTEM=0" >> "$GITHUB_ENV" if: ${{ matrix.compiler == '7' || matrix.compiler == '8' || matrix.compiler == '9' || matrix.compiler == '10' }} - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_compiler_default - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_compilers_clang_artefact_${{ matrix.compiler }} path: build/my_logs/ ci_test_standards_gcc: runs-on: ubuntu-latest container: gcc:14.3 strategy: matrix: standard: [11, 14, 17, 20, 23, 26] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_gcc_cxx${{ matrix.standard }} - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_standards_gcc_artefact_${{ matrix.standard }} path: build/my_logs/ ci_test_standards_clang: runs-on: ubuntu-latest container: silkeh/clang:20 strategy: matrix: standard: [11, 14, 17, 20, 23, 26] stdlib: [libcxx, libstdcxx] steps: - name: Install git and unzip run: apt-get update ; apt-get install -y git unzip - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get latest CMake and ninja uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build with libc++ run: cmake --build build --target ci_test_clang_libcxx_cxx${{ matrix.standard }} if: ${{ matrix.stdlib == 'libcxx' }} - name: Build with libstdc++ run: cmake --build build --target ci_test_clang_cxx${{ matrix.standard }} if: ${{ matrix.stdlib == 'libstdcxx' }} - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_test_standards_clang_artefact_${{ matrix.stdlib }}_${{ matrix.standard }} path: build/my_logs/ ci_cuda_example: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.4.0 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_cuda_example ci_icpc: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.2.0 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: | . /opt/intel/oneapi/setvars.sh cmake --build build --target ci_icpc - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ci_icpc_artefact path: build/my_logs/ ci_test_documentation: runs-on: ubuntu-latest strategy: matrix: target: [ci_test_examples, ci_test_build_documentation] steps: - name: Harden Runner uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} publish_test_data_success: runs-on: ubuntu-latest permissions: contents: write needs: [ci_test_gcc, ci_infer, ci_static_analysis_ubuntu, ci_static_analysis_clang, ci_cmake_options, ci_test_coverage, ci_test_compilers_gcc_old, ci_test_compilers_gcc, ci_test_compilers_clang, ci_test_standards_gcc, ci_test_standards_clang, ci_cuda_example, ci_icpc, ci_test_documentation] if: success() steps: - name: Check out code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Download all workflow artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: path: my_artifacts - name: Get current branch name id: get_branch env: GITHUB_EVENT_NAME: ${{ github.event_name }} PR_BRANCH_NAME: ${{ github.event.pull_request.head.ref }} GITHUB_REF_SAFE: ${{ github.ref }} run: | if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # Use the branch from the pull request safely via environment variable current_branch="$PR_BRANCH_NAME" else # Remove the "refs/heads/" prefix from GITHUB_REF safely current_branch="${GITHUB_REF_SAFE#refs/heads/}" fi # Write the branch name to $GITHUB_ENV securely echo "branch_name=${current_branch}" >> "$GITHUB_ENV" - name: Fetch data storage branch run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git fetch --all git checkout save_historical_data && git pull || git checkout -b save_historical_data - name: Load persistent data run: | if ! git ls-tree --name-only origin/save_historical_data TSF/MemoryEfficientTestResultData.db | grep TSF/MemoryEfficientTestResultData.db; then touch TSF/MemoryEfficientTestResultData.db git add TSF/MemoryEfficientTestResultData.db git commit -m "Create persistent storage" git push origin save_historical_data fi # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right commit from actions/checkout # Just get the file from save_historical_data branch git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db else # For push events, switch to the branch and get the file git checkout $branch_name git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db fi - name: append test data run: | python3 TSF/scripts/capture_test_data_memory_sensitive.py successful - name: Checkout data storage branch if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git stash push --include-untracked -- $(git status --porcelain | awk '{print $2}' | grep -v TSF/MemoryEfficientTestResultData.db) git checkout save_historical_data - name: Commit and Push persistent data if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git add TSF/MemoryEfficientTestResultData.db git commit -m "Save test data" || echo "No test data to be saved" git push origin save_historical_data - name: Recover stash if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right branch/commit git stash apply else # For push events, switch back to the working branch git checkout $branch_name git stash apply fi - name: Move test report run: | mkdir test_report mv MemoryEfficientTestResults.db test_report/MemoryEfficientTestResults.db - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: publish_data_artifact path: test_report/ publish_test_data_failure: runs-on: ubuntu-latest permissions: contents: write needs: [ci_test_gcc, ci_infer, ci_static_analysis_ubuntu, ci_static_analysis_clang, ci_cmake_options, ci_test_coverage, ci_test_compilers_gcc_old, ci_test_compilers_gcc, ci_test_compilers_clang, ci_test_standards_gcc, ci_test_standards_clang, ci_cuda_example, ci_icpc, ci_test_documentation] if: failure() steps: - name: Check out code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Download all workflow artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: path: my_artifacts - name: Get current branch name id: get_branch env: GITHUB_EVENT_NAME: ${{ github.event_name }} PR_BRANCH_NAME: ${{ github.event.pull_request.head.ref }} GITHUB_REF_SAFE: ${{ github.ref }} run: | if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # Use the branch from the pull request safely via environment variable current_branch="$PR_BRANCH_NAME" else # Remove the "refs/heads/" prefix from GITHUB_REF safely current_branch="${GITHUB_REF_SAFE#refs/heads/}" fi # Write the branch name to $GITHUB_ENV securely echo "branch_name=${current_branch}" >> "$GITHUB_ENV" - name: Fetch data storage branch run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git fetch --all git checkout save_historical_data && git pull || git checkout -b save_historical_data - name: Load persistent data run: | if ! git ls-tree --name-only origin/save_historical_data TSF/MemoryEfficientTestResultData.db | grep TSF/MemoryEfficientTestResultData.db; then touch TSF/MemoryEfficientTestResultData.db git add TSF/MemoryEfficientTestResultData.db git commit -m "Create persistent storage" git push origin save_historical_data fi # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right commit from actions/checkout # Just get the file from save_historical_data branch git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db else # For push events, switch to the branch and get the file git checkout $branch_name git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db fi - name: append test data run: | python3 TSF/scripts/capture_test_data_memory_sensitive.py failed - name: Checkout data storage branch if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git stash push --include-untracked -- $(git status --porcelain | awk '{print $2}' | grep -v TSF/MemoryEfficientTestResultData.db) git checkout save_historical_data - name: Commit and Push persistent data if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git add TSF/MemoryEfficientTestResultData.db git commit -m "Save test data" || echo "No test data to be saved" git push origin save_historical_data - name: Recover stash if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right branch/commit git stash apply else # For push events, switch back to the working branch git checkout $branch_name git stash apply fi - name: Move test report run: | mkdir test_report mv MemoryEfficientTestResults.db test_report/MemoryEfficientTestResults.db - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: publish_data_artifact path: test_report/ publish_test_data_cancellation: runs-on: ubuntu-latest permissions: contents: write needs: [ci_test_gcc, ci_infer, ci_static_analysis_ubuntu, ci_static_analysis_clang, ci_cmake_options, ci_test_coverage, ci_test_compilers_gcc_old, ci_test_compilers_gcc, ci_test_compilers_clang, ci_test_standards_gcc, ci_test_standards_clang, ci_cuda_example, ci_icpc, ci_test_documentation] if: cancelled() steps: - name: Check out code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Download all workflow artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: path: my_artifacts - name: Get current branch name id: get_branch env: GITHUB_EVENT_NAME: ${{ github.event_name }} PR_BRANCH_NAME: ${{ github.event.pull_request.head.ref }} GITHUB_REF_SAFE: ${{ github.ref }} run: | if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # Use the branch from the pull request safely via environment variable current_branch="$PR_BRANCH_NAME" else # Remove the "refs/heads/" prefix from GITHUB_REF safely current_branch="${GITHUB_REF_SAFE#refs/heads/}" fi # Write the branch name to $GITHUB_ENV securely echo "branch_name=${current_branch}" >> "$GITHUB_ENV" - name: Fetch data storage branch run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git fetch --all git checkout save_historical_data && git pull || git checkout -b save_historical_data - name: Load persistent data run: | if ! git ls-tree --name-only origin/save_historical_data TSF/MemoryEfficientTestResultData.db | grep TSF/MemoryEfficientTestResultData.db; then touch TSF/MemoryEfficientTestResultData.db git add TSF/MemoryEfficientTestResultData.db git commit -m "Create persistent storage" git push origin save_historical_data fi # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right commit from actions/checkout # Just get the file from save_historical_data branch git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db else # For push events, switch to the branch and get the file git checkout $branch_name git checkout save_historical_data -- TSF/MemoryEfficientTestResultData.db fi - name: append test data run: | python3 TSF/scripts/capture_test_data_memory_sensitive.py cancelled - name: Checkout data storage branch if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git stash push --include-untracked -- $(git status --porcelain | awk '{print $2}' | grep -v TSF/MemoryEfficientTestResultData.db) git checkout save_historical_data - name: Commit and Push persistent data if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | git add TSF/MemoryEfficientTestResultData.db git commit -m "Save test data" || echo "No test data to be saved" git push origin save_historical_data - name: Recover stash if: github.event_name == 'schedule' || (github.event_name == 'push' && github.ref_name == 'main') run: | # Handle fork PRs by staying on current working branch instead of switching if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then # For PRs, we're already on the right branch/commit git stash apply else # For push events, switch back to the working branch git checkout $branch_name git stash apply fi - name: Move test report run: | mkdir test_report mv MemoryEfficientTestResults.db test_report/MemoryEfficientTestResults.db - name: Upload test report uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: publish_data_artifact path: test_report/ ubuntu_artifact: runs-on: ubuntu-latest needs: [publish_test_data_success, publish_test_data_failure, publish_test_data_cancellation, ci_test_gcc, ci_infer, ci_static_analysis_ubuntu, ci_static_analysis_clang, ci_cmake_options, ci_test_coverage, ci_test_compilers_gcc_old, ci_test_compilers_gcc, ci_test_compilers_clang, ci_test_standards_gcc, ci_test_standards_clang, ci_cuda_example, ci_icpc, ci_test_documentation] if: ${{ always() && (needs.publish_test_data_success.result == 'success' || needs.publish_test_data_failure.result == 'success' || needs.publish_test_data_cancellation.result == 'success') }} steps: - name: Download test report uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: name: publish_data_artifact - name: Generate ubuntu artifact run: | echo "Generating ubuntu artifact..." mkdir -p ubuntu if [ -f MemoryEfficientTestResults.db ]; then mv MemoryEfficientTestResults.db ubuntu/MemoryEfficientTestResults.db else echo "No test-results were captured." fi echo "ubuntu processed for ${{ inputs.artifact_id }}" > ubuntu/ubuntu.txt - name: Upload ubuntu artifact uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: ${{ inputs.artifact_id }} path: ubuntu/ ```` - Description: workflow, in which unit tests are executed with a myriad of test environments and test results are captured. - `TSF/scripts/capture_test_data.py` ````py import sys import sqlite3 import os import xml.etree.ElementTree as ET import re from datetime import datetime, timezone def setup_environment_variables() -> dict[str, str]: # Retrieves and validates the necessary environment variables for GitHub workflows. # Raises a RuntimeError if any required variables are missing. required_vars = ["GITHUB_RUN_ID", "GITHUB_REPOSITORY", "GITHUB_RUN_ATTEMPT"] environment = {var: os.getenv(var) for var in required_vars} missing_vars = [var for var, value in environment.items() if not value] if missing_vars: raise RuntimeError(f"Missing required environment variables: {', '.join(missing_vars)}") return environment def clean_test_case(testcase: str) -> tuple[str,str]: # This function expects a testcase of the form "testcase_name_cppxx". # It returns the tuple ["testcase_name","gnu++xx"]. name, appendix = testcase.rsplit('_',1) return [name, "gnu++"+appendix.replace('cpp','')] def read_result_table(input: list[str]) -> dict: """ This function expects console output <system-out> of doctest. It is assumed that this has the following form <system-out>[doctest] doctest version is "2.4.11" [doctest] run with "--help" for options =============================================================================== [doctest] test cases: 1 | 1 passed | 0 failed | 0 skipped [doctest] assertions: 45 | 45 passed | 0 failed | [doctest] Status: SUCCESS! </system-out> It extracts the number of passed/failed/skipped test cases, and passed/skipped assertions. """ metadata = dict() raw_data = input[0] data = re.findall(r'(\d+)\s+(passed|failed|skipped)\b', raw_data) if len(data) < 5: raise RuntimeError("Fatal Error: Received incomplete or wrong result table.") metadata["passed test cases"] = int(data[0][0]) metadata["failed test cases"] = int(data[1][0]) metadata["skipped test cases"] = int(data[2][0]) metadata["passed assertions"] = int(data[3][0]) metadata["failed assertions"] = int(data[4][0]) return metadata def get_metadata(testcase: ET.Element) -> dict: # expects testcase extracted from a junit xml-file as input # extracts the data interesting to us # Assumption of Use: before execution, it is checked if is_unit_test(testcase)==True metadata = dict() # from name both name of the test and C++ standard can be extracted unsplit_name = testcase.get("name", None) if unsplit_name is None: raise RuntimeError("Fatal error: Can not read name of test-case!") name, standard = clean_test_case(unsplit_name) metadata["name"] = name metadata["standard"] = standard metadata["execution time"] = float(testcase.get("time")) # results are not as easily extracted but must be processed further metadata = metadata | read_result_table(list(testcase.find("system-out").itertext())) return metadata def is_unit_test(testcase: ET.Element) -> bool: # crude test if the element belongs to a unit-test return "_cpp" in testcase.get('name') def get_all_xml_files(directory: str = '.') -> list[str]: # search the folder containing all the artifacts and list the paths of expected test-reports result = [] try: content = os.listdir(directory) except FileNotFoundError as e: print(e) return result for entry in content: if os.path.isdir(directory+'/'+entry): result = result + get_all_xml_files(directory+'/'+entry) if entry.endswith('.xml'): file = directory+'/'+entry if directory != '.' else entry result.append(file) return result ########################## # Below starts the script. ########################## if __name__ == "__main__": # check if argument was delivered if len(sys.argv) != 2: raise RuntimeError("Expected status of workflow as argument. Aborting!") # expected argument: status of workflow # check if the argument has the expected form status = sys.argv[1] if status not in ["successful", "failed", "cancelled"]: raise RuntimeError("The input does not match the expected format! Permissible are 'successful', 'failed' and 'cancelled'. Aborting!") # get environment variables try: environment = setup_environment_variables() except RuntimeError as e: raise RuntimeError("Critical error: Can not uniquely identify environment data! Aborting recording of data.") # initiate connection to database connector = sqlite3.connect("TSF/TestResultData.db") connector.execute("PRAGMA foreign_keys = ON") cursor = connector.cursor() # load expected tables command = ( "CREATE TABLE IF NOT EXISTS workflow_info(", "repo TEXT, ", # repository "run_id INT, ", # ID of workflow run "run_attempt INT, ", # Attempt-number of workflow run "status TEXT ", # Termination-status of workflow "CHECK(status IN ('successful', 'failed', 'cancelled')) DEFAULT 'failed', ", "time INT, ", # the time that is associated to this workflow run "PRIMARY KEY(repo, run_id, run_attempt))" ) cursor.execute(''.join(command)) command = ( "CREATE TABLE IF NOT EXISTS test_results(", "timestamp INT, " # when the test-run was started "name TEXT, ", # name of the test "execution_time REAL, ", # execution time in seconds "compiler TEXT, ", # compiler information "cpp_standard TEXT, ", # cpp-standard "passed_cases INT, ", # number of passed test-cases "failed_cases INT, ", # number of failed test-cases "skipped_cases INT, ", # number of skipped test-cases "passed_assertions INT, ", # number of passed assertions "failed_assertions INT, ", # number of failed assertions "repo TEXT, ", # repository "run_id INT, ", # ID of workflow run "run_attempt INT, ", # Attempt-number of workflow run "FOREIGN KEY(repo, run_id, run_attempt) REFERENCES workflow_info)" ) cursor.execute(''.join(command)) # Due to storage space constraints, only most recent 100 test-results are stored. # Heuristic calculations have demonstrated that this should ensure that # the TestResultData.db is below 100MiB, which is github's hard file size limit. cursor.execute("SELECT COUNT(*) FROM workflow_info") saved_test_data = int(cursor.fetchone()[0]) while saved_test_data>=100: # delete oldest saved data cursor.execute("SELECT MIN(time) FROM workflow_info") oldest_time = int(cursor.fetchone()[0]) cursor.execute("SELECT repo, run_id, run_attempt FROM workflow_info WHERE \"time\" = ?", (oldest_time,)) results = cursor.fetchall() # Delete all data associated to all the oldest workflow runs for result in results: # it is expected that there is only one result cursor.execute("DELETE FROM test_results WHERE repo = \"?\" AND run_id = ? AND run_attempt = ?", (result[0],result[1],result[2])) cursor.execute("DELETE FROM workflow_info WHERE repo = \"?\" AND run_id = ? AND run_attempt = ?", (result[0],result[1],result[2])) connector.commit() # don't forget to update! cursor.execute("SELECT COUNT(*) FROM workflow_info") saved_test_data = int(cursor.fetchone()[0]) # fill in metadata # OBSERVE: This script expects the status of the github workflow as argument repo = environment.get('GITHUB_REPOSITORY') run_id = environment.get('GITHUB_RUN_ID') run_attempt = environment.get('GITHUB_RUN_ATTEMPT') time = int(datetime.now(timezone.utc).timestamp()) command = f"INSERT INTO workflow_info VALUES(?,?,?,?,?)" cursor.execute(command,(repo, run_id, run_attempt, status, time)) # Don't forget to save! connector.commit() # Load my artifacts failed_data = [] junit_logs = get_all_xml_files("./my_artifacts/") #extract data for junit_log in junit_logs: tree = ET.parse(junit_log) file_root = tree.getroot() testsuite = next(file_root.iter('testsuite'), None) if testsuite is None: print(f"Error: Could not find testsuite data in {junit_log}.") failed_data.append(junit_log) continue for testcase in (case for case in file_root.iter('testcase') if is_unit_test(case)): metadata = get_metadata(testcase) command = ( "INSERT INTO test_results VALUES(", f"{int(datetime.fromisoformat(testsuite.get('timestamp')).timestamp())}, ", f"'{metadata.get('name')}', ", f"{metadata.get('execution time')}, ", f"'{testsuite.get('name')}', ", f"'{metadata.get('standard')}', ", f"{metadata.get('passed test cases')}, ", f"{metadata.get('failed test cases')}, ", f"{metadata.get('skipped test cases')}, ", f"{metadata.get('passed assertions')}, ", f"{metadata.get('failed assertions')}, ", f"'{repo}', ", f"{run_id}, ", f"{run_attempt}" ")" ) command = ''.join(command) cursor.execute(command) connector.commit() # storage space on the github is limited. # finally, most recent test data are stored separately # initialise database connection conn = sqlite3.connect("TestResults.db") cur = conn.cursor() # add the expected table command = ( "CREATE TABLE IF NOT EXISTS test_results(", "name TEXT, ", # name of the test "execution_time REAL, ", # execution time in seconds "compiler TEXT, ", # compiler information "cpp_standard TEXT, ", # cpp-standard "passed_cases INT, ", # number of passed test-cases "failed_cases INT, ", # number of failed test-cases "skipped_cases INT, ", # number of skipped test-cases "passed_assertions INT, ", # number of passed assertions "failed_assertions INT", # number of failed assertions ")" ) cur.execute(''.join(command)) # copy most recent data from persistent data storage cur.execute("ATTACH DATABASE 'TSF/TestResultData.db' AS source") command = """ INSERT INTO test_results ( name, execution_time, compiler, cpp_standard, passed_cases, failed_cases, skipped_cases, passed_assertions, failed_assertions ) SELECT name, execution_time, compiler, cpp_standard, passed_cases, failed_cases, skipped_cases, passed_assertions, failed_assertions FROM source.test_results WHERE repo = ? AND run_id = ? AND run_attempt = ? """ cur.execute(command, (repo, run_id, run_attempt)) conn.commit() # detach persistent database cur.execute("DETACH DATABASE source") # terminate connection to temporary database # don't forget to commit the changes conn.commit() conn.close() # terminate connection to persistent database # don't forget to commit the changes again, for good measure connector.commit() connector.close() ```` - Description: script, which collects the data produced by ctest in a database - `website: https://github.com/eclipse-score/inc_nlohmann_json/blob/save_historical_data/TSF/MemoryEfficientTestResultData.db` `https://github.com/eclipse-score/inc_nlohmann_json/blob/save_historical_data/TSF/MemoryEfficientTestResultData.db` - the database containing the test results **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-22.svg) |date-time|JLS-22| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-23 | Reviewed: ⨯ | Score: 0.0 The Eclipse S-CORE organization mirrors the nlohmann/json project in a github fork. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-SUPPLY_CHAIN](TA.md#ta-supply_chain) | All sources and tools for the nlohmann/json library are mirrored in our controlled environment. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/nlohmann/json` `https://github.com/nlohmann/json` - Start-page of the original nlohmann/json project - `website: https://github.com/eclipse-score/inc_nlohmann_json` `https://github.com/eclipse-score/inc_nlohmann_json` - Start-page of the mirror of nlohmann/json within Eclipse S-CORE **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-23.svg) |date-time|JLS-23| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-24 | Reviewed: ⨯ | Score: 0.0 The nlohmann/json library recognizes malformed JSON and returns an exception. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-MISBEHAVIOURS](TA.md#ta-misbehaviours) | Prohibited misbehaviours for the nlohmann/json library are identified, and mitigations are specified, verified and validated based on analysis. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [NPF-07.2](NPF.md#npf-07.2) | The service provided by the nlohmann/json library throws an exception on ill-formed UTF-8 data. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | | [TIJ-01](TIJ.md#tij-01) | The parsing service provided by the nlohmann/json library throws an exception on ill-formed literal names. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | | [TIJ-02](TIJ.md#tij-02) | The parsing service provided by the nlohmann/json library throws an exception on ill-formed numbers. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | | [TIJ-03](TIJ.md#tij-03) | The parsing service provided by the nlohmann/json library throws an exception on ill-formed strings. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | | [TIJ-04](TIJ.md#tij-04) | The parsing service provided by the nlohmann/json library throws an exception on ill-formed arrays. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | | [TIJ-05](TIJ.md#tij-05) | The parsing service provided by the nlohmann/json library throws an exception on ill-formed objects. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | | [TIJ-06](TIJ.md#tij-06) | The service provided by the nlohmann/json library recognises ill-formed byte-order marks and throws an exception. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **References:** _None_ **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-24.svg) |date-time|JLS-24|NPF-07.2|TIJ-01|TIJ-02|TIJ-03|TIJ-04|TIJ-05|TIJ-06| |-|-|-|-|-|-|-|-|-| |2025-11-26 12:04:09|0.00 |0.00 |0.00 |0.00 |0.00 |0.00 |0.00 |0.00 | |2025-11-26 12:52:19.093864|0.00 |0.00 |0.00 |0.00 |0.00 |0.00 |0.00 |0.00 | --- ### JLS-25 | Reviewed: ⨯ | Score: 0.0 Malicious code changes in nlohmann/json are mitigated by code reviews, adhering to the contribution guidelines and security policy specified by nlohmann/json. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-MISBEHAVIOURS](TA.md#ta-misbehaviours) | Prohibited misbehaviours for the nlohmann/json library are identified, and mitigations are specified, verified and validated based on analysis. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` `https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` - OpenSSF Scorecard Report for nlohmann/json, where scores for 'Security-Policy' and 'Code-Review' reflect this statement. - `website: https://github.com/nlohmann/json?tab=contributing-ov-file#readme` `https://github.com/nlohmann/json?tab=contributing-ov-file#readme` - Contribution Guidelines for nlohmann/json, where it is indirectly indicated that all changes are reviewed. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-25.svg) |date-time|JLS-25| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-26 | Reviewed: ⨯ | Score: 0.0 Any failed CI pipeline executions in the master branch of the nlohmann/json repository are analyzed and fixed. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-ANALYSIS](TA.md#ta-analysis) | Collected data from tests and monitoring of deployed software in eclipse-score/inc_nlohmann_json is analysed according to specified objectives. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `failures on branch master of nlohmann/json` 0 workflows failed on branch master of nlohmann/json **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-26.svg) |date-time|JLS-26| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-27 | Reviewed: ⨯ | Score: 0.0 The test coverage for this version of nlohmann/json is monitored using Coveralls and is not decreasing over time, unless reasonably justified. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-BEHAVIOURS](TA.md#ta-behaviours) | Expected or required behaviours for the nlohmann/json library are identified, specified, verified and validated based on analysis. | 0.00 | ⨯ Item Reviewed
✔ Link Reviewed | **Supporting Items:** _None_ **References:** _None_ **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-27.svg) |date-time|JLS-27| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-28 | Reviewed: ⨯ | Score: 0.0 Outstanding bugs and misbehaviours are triaged in the nlohmann/json repository. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-FIXES](TA.md#ta-fixes) | In the nlohmann/json repository, known bugs or misbehaviours are analysed and triaged, and critical fixes or mitigations are implemented or applied. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/nlohmann/json/discussions/4967` `https://github.com/nlohmann/json/discussions/4967` - Discussion in nlohmann/json showing that no triage processes for bugs are currently in place **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-28.svg) |date-time|JLS-28| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-29 | Reviewed: ⨯ | Score: 0.0 Known bugs, misbehaviours and CVEs are analyzed and either fixed or mitigated in the nlohmann/json repository. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-FIXES](TA.md#ta-fixes) | In the nlohmann/json repository, known bugs or misbehaviours are analysed and triaged, and critical fixes or mitigations are implemented or applied. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/nlohmann/json/releases/tag/v3.12.0` `https://github.com/nlohmann/json/releases/tag/v3.12.0` - release notes for v3.12.0, listing bugs, CVEs and warnings which were either fixed or mitigated since last release - `website: https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` `https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` - OpenSSF Scorecard Report for nlohmann/json, where scores for 'Vulnerabilities', 'Pinned-Dependencies' and 'Dangerous-Workflow' support this statement. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-29.svg) |date-time|JLS-29| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-30 | Reviewed: ⨯ | Score: 0.0 Outstanding CVEs are analyzed within eclipse-score/inc_nlohmann_json to determine whether they can be dismissed, and/or are relevant for S-CORE's use cases of the nlohmann/json library. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-FIXES](TA.md#ta-fixes) | In the nlohmann/json repository, known bugs or misbehaviours are analysed and triaged, and critical fixes or mitigations are implemented or applied. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` `https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` - OpenSSF Scorecard Report for nlohmann/json, where score for 'Vulnerabilities' shows that there are no outstanding CVEs. - `website: https://github.com/nlohmann/json/discussions/4975` `https://github.com/nlohmann/json/discussions/4975` - Screenshot of dismissed code scanning alerts, which can also be dismissed in S-CORE. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-30.svg) |date-time|JLS-30| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-31 | Reviewed: ⨯ | Score: 0.0 The nlohmann/json repository uses a static code analysis tool. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-MISBEHAVIOURS](TA.md#ta-misbehaviours) | Prohibited misbehaviours for the nlohmann/json library are identified, and mitigations are specified, verified and validated based on analysis. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` `https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` - OpenSSF Scorecard Report for nlohmann/json, where score for 'SAST' supports this statement. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-31.svg) |date-time|JLS-31| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-32 | Reviewed: ⨯ | Score: 0.0 All pull requests to the develop branch in the nlohmann/json repository trigger a request for review from Niels Lohmann (@nlohmann). **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-UPDATES](TA.md#ta-updates) | nlohmann/json library components, configurations and tools are updated under specified change and configuration management controls. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/nlohmann/json/blob/develop/.github/CODEOWNERS` `https://github.com/nlohmann/json/blob/develop/.github/CODEOWNERS` - CODEOWNERS file specifying that changes to any file requests @nlohmann for code review in case of a pull request **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-32.svg) |date-time|JLS-32| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-33 | Reviewed: ⨯ | Score: 0.0 Outstanding CVEs are triaged in the nlohmann/json repository. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-FIXES](TA.md#ta-fixes) | In the nlohmann/json repository, known bugs or misbehaviours are analysed and triaged, and critical fixes or mitigations are implemented or applied. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://github.com/nlohmann/json/security/advisories/new` `https://github.com/nlohmann/json/security/advisories/new` - the vulnerability reporting template used in nlohmann/json, which includes a severity section and CVSS scoring **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-33.svg) |date-time|JLS-33| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-34 | Reviewed: ⨯ | Score: 0.0 The nlohmann/json library has no external components or dependencies besides the C++ standard components. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-UPDATES](TA.md#ta-updates) | nlohmann/json library components, configurations and tools are updated under specified change and configuration management controls. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `List of included libraries for: single_include/nlohmann/json.hpp` - Description: file containing all include occurrences of the score-project. ```cpp #include <algorithm> #include <cstddef> #include <functional> #include <initializer_list> #include <iosfwd> #include <iterator> #include <memory> #include <string> #include <utility> #include <vector> #include <utility> #include <algorithm> #include <array> #include <forward_list> #include <iterator> #include <map> #include <optional> #include <string> #include <tuple> #include <type_traits> #include <unordered_map> #include <utility> #include <valarray> #include <cstddef> #include <exception> #include <numeric> #include <stdexcept> #include <string> #include <vector> #include <array> #include <cstddef> #include <cstdint> #include <string> #include <utility> #include <type_traits> #include <stdint.h> #include <stdint.h> #include <version> #include <cstdlib> #include <cassert> #include <compare> #include <cstddef> #include <array> #include <cstddef> #include <type_traits> #include <utility> #include <limits> #include <string> #include <tuple> #include <type_traits> #include <utility> #include <iterator> #include <cstdint> #include <map> #include <memory> #include <string> #include <vector> #include <cstring> #include <string> #include <utility> #include <experimental/filesystem> #include <filesystem> #include <optional> #include <algorithm> #include <iterator> #include <string> #include <tuple> #include <type_traits> #include <utility> #include <valarray> #include <vector> #include <cstddef> #include <iterator> #include <tuple> #include <utility> #include <ranges> #include <cstddef> #include <string> #include <cstdint> #include <tuple> #include <utility> #include <cstdint> #include <cstddef> #include <functional> #include <algorithm> #include <array> #include <cmath> #include <cstddef> #include <cstdint> #include <cstdio> #include <cstring> #include <iterator> #include <limits> #include <string> #include <utility> #include <vector> #include <bit> #include <array> #include <cstddef> #include <cstring> #include <iterator> #include <memory> #include <numeric> #include <string> #include <type_traits> #include <utility> #include <cstdio> #include <istream> #include <cstddef> #include <string> #include <type_traits> #include <utility> #include <vector> #include <array> #include <clocale> #include <cstddef> #include <cstdio> #include <cstdlib> #include <initializer_list> #include <string> #include <utility> #include <vector> #include <cstdint> #include <utility> #include <string> #include <cmath> #include <cstdint> #include <functional> #include <string> #include <utility> #include <vector> #include <cstddef> #include <limits> #include <iterator> #include <type_traits> #include <cstddef> #include <iterator> #include <utility> #include <type_traits> #include <algorithm> #include <cctype> #include <cerrno> #include <cstdlib> #include <iosfwd> #include <limits> #include <numeric> #include <string> #include <utility> #include <vector> #include <initializer_list> #include <utility> #include <algorithm> #include <array> #include <map> #include <cmath> #include <cstdint> #include <cstring> #include <limits> #include <string> #include <utility> #include <vector> #include <algorithm> #include <cstddef> #include <iterator> #include <memory> #include <string> #include <vector> #include <ios> #include <ostream> #include <algorithm> #include <array> #include <clocale> #include <cmath> #include <cstddef> #include <cstdint> #include <cstdio> #include <limits> #include <string> #include <iomanip> #include <type_traits> #include <utility> #include <array> #include <cmath> #include <cstdint> #include <cstring> #include <limits> #include <type_traits> #include <functional> #include <initializer_list> #include <iterator> #include <memory> #include <stdexcept> #include <type_traits> #include <utility> #include <vector> #include <any> #include <string_view> ``` **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-34.svg) |date-time|JLS-34| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 | --- ### JLS-35 | Reviewed: ⨯ | Score: 0.0 Pull requests in the nlohmann/json repository are merged only after running CI-tests and successfully passing the pipeline. **Supported Requests:** | Item | Summary | Score | Status | | --- | --- | --- | --- | | [TA-UPDATES](TA.md#ta-updates) | nlohmann/json library components, configurations and tools are updated under specified change and configuration management controls. | 0.00 | ⨯ Item Reviewed
⨯ Link Reviewed | **Supporting Items:** _None_ **References:** - `website: https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` `https://scorecard.dev/viewer/?uri=github.com%2Fnlohmann%2Fjson` - OpenSSF Scorecard Report for nlohmann/json, where score for 'CI-Tests' supports this statement - `website: https://github.com/nlohmann/json/pulls?q=is%3Apr+is%3Aclosed+review%3Aapproved` `https://github.com/nlohmann/json/pulls?q=is%3Apr+is%3Aclosed+review%3Aapproved` - All approved pull requests in the nlohmann/json repository, with the results of the CI pipeline executions. **Fallacies:** _None_ **Graph:** ![No Image](figs/JLS-35.svg) |date-time|JLS-35| |-|-| |2025-11-26 12:04:09|0.00 | |2025-11-26 12:52:19.093864|0.00 |