Skip to content

Consolidate Data Element templates#3

Merged
xqgex merged 2 commits intomainfrom
de_bitstring
Feb 2, 2026
Merged

Consolidate Data Element templates#3
xqgex merged 2 commits intomainfrom
de_bitstring

Conversation

@xqgex
Copy link
Owner

@xqgex xqgex commented Feb 2, 2026

Pull Request

Description

Consolidate Data Element templates into type-specific architecture

  • Rename assemble_de.j2 to assemble_de_bitstring.j2 (BIT STRING specific)
  • Merge file_header_de.j2 content inline into assemble_de_bitstring.j2
  • Refactor j2735_c_generator_data_element.py:
    • Add module docstring with usage examples
    • Dispatch generate_data_element() by ASN1TypeClass
    • Extract _generate_bitstring() as internal helper
    • Improve error messages for unsupported types
  • Update template to derive data_type from typedef.type_class.name
  • Prepares for future DE types

Related Issue

N/A

Additional Notes

This is a template architecture refactor, not a behavioral change. Generated C code remains identical. The consolidation removes indirection and positions the codebase to add new Data Element type generators cleanly.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Performance improvement

Checklist

  • My code follows the project's zero-copy coding style
  • I have read the CONTRIBUTING.md guidelines
  • I have added/updated documentation as needed
  • I have added tests that prove my fix/feature works
  • I have run make pre-push and all checks pass
  • I have signed my commits (DCO) using git commit -s

Signed-off-by: Yogev Neumann <xqgex@users.noreply.github.com>
@xqgex xqgex self-assigned this Feb 2, 2026
Copilot AI review requested due to automatic review settings February 2, 2026 22:58
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates Data Element template architecture by introducing type-specific organization. The changes rename assemble_de.j2 to assemble_de_bitstring.j2, inline the file_header_de.j2 content directly into the main template, and refactor the Python generator to dispatch by ASN.1 type class. This eliminates template indirection while preparing the codebase for additional Data Element type generators (INTEGER, ENUMERATED, etc.) without behavioral changes to generated C code.

Changes:

  • Rename and consolidate BIT STRING template with inline file header
  • Add type-class dispatcher pattern in generator with improved error messages
  • Add three new test files for internal BIT STRING constants validation

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tools/templates/file_header_de.j2 Deleted template file (content moved inline)
tools/templates/assemble_de_bitstring.j2 Renamed from assemble_de.j2 with inlined file header content
tools/j2735_c_generator_data_element.py Refactored to dispatch by type class with new module docstring
tools/tests/c_generator/test_bitstring_internal_root_size.py New test file for root size constant validation
tools/tests/c_generator/test_bitstring_internal_max_wire_bits.py New test file for max wire bits constant validation
tools/tests/c_generator/test_bitstring_internal_ext_size.py New test file for extended size constant validation

@github-actions
Copy link
Contributor

github-actions bot commented Feb 2, 2026

Python CI Report

Commit: 695dab004d958f77a2f57060cc5312a2e11962a7


Python Tests

Test Output
============================================================
Running Doctests
============================================================
  ✓ All 243 doctest tests passed

============================================================
Running Unit Tests
============================================================
  ✓ All 260 unit tests passed

============================================================
✓ ALL TESTS PASSED
============================================================

✅ All tests passed


Coverage: 98%

Module Cover
j2735_c_generator_bitwidth_constants.py 100% ✅
j2735_c_generator_jinja.py 100% ✅
j2735_c_generator_size_constants.py 100% ✅
test_bitstring_common.py 100% ✅
test_bitstring_get.py 100% ✅
test_bitstring_get_one.py 100% ✅
test_bitstring_internal_bit_pos.py 100% ✅
test_bitstring_internal_ext_size.py 100% ✅
test_bitstring_internal_get_all.py 100% ✅
test_bitstring_internal_get_one.py 100% ✅
test_bitstring_internal_is_extension.py 100% ✅
test_bitstring_internal_max_wire_bits.py 100% ✅
test_bitstring_internal_raw_read.py 100% ✅
test_bitstring_internal_root_size.py 100% ✅
test_bitstring_is_extended.py 100% ✅
test_bitstring_size.py 100% ✅
test_jinja_filters.py 100% ✅
test_sequence_has_extension.py 100% ✅
test_sequence_root_size.py 100% ✅
test_sequence_size_func.py 100% ✅
test_wire_format.py 100% ✅
test_spec_file.py 100% ✅
test_bitstring_constraint.py 100% ✅
test_brace_extraction.py 100% ✅
test_choice_type.py 100% ✅
test_constraint_validation.py 100% ✅
test_enumerated_type.py 100% ✅
test_ia5string_constraint.py 100% ✅
test_integer_constraint.py 100% ✅
test_octet_constraint.py 100% ✅
test_parsing.py 100% ✅
test_properties.py 100% ✅
test_sequence_field.py 100% ✅
test_sequence_of_type.py 100% ✅
test_type_definition.py 100% ✅
j2735_spec_constraints.py 99% ✅
j2735_spec_parser.py 99% ✅
conftest.py 96% ✅
j2735_c_generator_wire_format.py 94% ✅
test_uper_constraint.py 92% ✅
j2735_c_generator_data_frame.py 86% ⚠️
run_tests.py 83% ⚠️
j2735_c_generator_data_element.py 82% ⚠️
j2735.py 22% ❌
Details (2377 statements, 56 missed)
Module Stmts Miss Missing Lines
j2735_c_generator_bitwidth_constants.py 13 0 -
j2735_c_generator_jinja.py 36 0 -
j2735_c_generator_size_constants.py 11 0 -
test_bitstring_common.py 32 0 -
test_bitstring_get.py 11 0 -
test_bitstring_get_one.py 21 0 -
test_bitstring_internal_bit_pos.py 26 0 -
test_bitstring_internal_ext_size.py 27 0 -
test_bitstring_internal_get_all.py 10 0 -
test_bitstring_internal_get_one.py 12 0 -
test_bitstring_internal_is_extension.py 11 0 -
test_bitstring_internal_max_wire_bits.py 27 0 -
test_bitstring_internal_raw_read.py 15 0 -
test_bitstring_internal_root_size.py 27 0 -
test_bitstring_is_extended.py 10 0 -
test_bitstring_size.py 20 0 -
test_jinja_filters.py 32 0 -
test_sequence_has_extension.py 40 0 -
test_sequence_root_size.py 48 0 -
test_sequence_size_func.py 62 0 -
test_wire_format.py 35 0 -
test_spec_file.py 65 0 -
test_bitstring_constraint.py 135 0 -
test_brace_extraction.py 27 0 -
test_choice_type.py 27 0 -
test_constraint_validation.py 79 0 -
test_enumerated_type.py 51 0 -
test_ia5string_constraint.py 18 0 -
test_integer_constraint.py 36 0 -
test_octet_constraint.py 18 0 -
test_parsing.py 124 0 -
test_properties.py 143 0 -
test_sequence_field.py 119 0 -
test_sequence_of_type.py 15 0 -
test_type_definition.py 12 0 -
j2735_spec_constraints.py 409 4 130, 143, 379, 1562
j2735_spec_parser.py 272 3 555, 586, 851
conftest.py 51 2 237, 280
j2735_c_generator_wire_format.py 69 4 219, 229, 233, 238
test_uper_constraint.py 26 2 51, 56
j2735_c_generator_data_frame.py 29 4 62, 66, 93, 102
run_tests.py 75 13 51, 93, 97, 98, 99, 134, 135, 142, 168, 169, ... (+3 more)
j2735_c_generator_data_element.py 17 3 63, 67, 98
j2735.py 27 21 37, 41, 46, 52, 57, 59, 60, 61, 62, 63, ... (+11 more)

Python Static Analysis

Tool Status
mypy
pylint
flake8
ruff
codespell

mypy

Success: no issues found in 49 source files

pylint

************* Module tools.tests.c_generator.test_bitstring_internal_bit_pos
tools/tests/c_generator/test_bitstring_internal_bit_pos.py:1:0: R0801: Similar lines in 2 files
==tools.tests.c_generator.test_bitstring_internal_ext_size:[52:65]
==tools.tests.c_generator.test_bitstring_internal_root_size:[52:65]
        self.assertIn("2U", code)

    def test_invalid_type_raises_value_error(self) -> None:
        """Non-existent type should raise ValueError."""
        with self.assertRaises(ValueError) as ctx:
            _ = generate_bitstring_code(_TEMPLATE_NAME, self.spec, "NonExistentType")
        self.assertIn("not found", str(ctx.exception))

    def test_non_bitstring_type_raises_value_error(self) -> None:
        """INTEGER type should raise ValueError."""
        with self.assertRaises(ValueError) as ctx:
            _ = generate_bitstring_code(_TEMPLATE_NAME, self.spec, "MsgCount")
        self.assertIn("not a BIT STRING", str(ctx.exception)) (duplicate-code)
tools/tests/c_generator/test_bitstring_internal_bit_pos.py:1:0: R0801: Similar lines in 2 files
==tools.tests.c_generator.test_bitstring_internal_bit_pos:[57:66]
==tools.tests.c_generator.test_bitstring_internal_ext_size:[56:65]
        with self.assertRaises(ValueError) as ctx:
            _ = generate_bitstring_code(_TEMPLATE_NAME, self.spec, "NonExistentType")
        self.assertIn("not found", str(ctx.exception))

    def test_non_bitstring_type_raises_value_error(self) -> None:
        """INTEGER type should raise ValueError."""
        with self.assertRaises(ValueError) as ctx:
            _ = generate_bitstring_code(_TEMPLATE_NAME, self.spec, "MsgCount")
        self.assertIn("not a BIT STRING", str(ctx.exception)) (duplicate-code)

-----------------------------------
Your code has been rated at 9.99/10

flake8

No issues found

ruff

All checks passed!

codespell

No issues found

@github-actions
Copy link
Contributor

github-actions bot commented Feb 2, 2026

CI Report

Commit: 695dab004d958f77a2f57060cc5312a2e11962a7


Static Analysis

Tool Status
cppcheck
clang-tidy

cppcheck

Click to expand
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
=== Static Analysis (cppcheck) ===
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_api.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_api.h: __GNUC__=1...
1/29 files checked 0% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_AllowedManeuvers.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_AllowedManeuvers.h: __GNUC__=1...
2/29 files checked 4% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_BrakeAppliedStatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_BrakeAppliedStatus.h: __GNUC__=1...
3/29 files checked 6% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_ExteriorLights.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_ExteriorLights.h: __GNUC__=1...
4/29 files checked 10% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_GNSSstatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_GNSSstatus.h: __GNUC__=1...
5/29 files checked 13% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneDirection.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneDirection.h: __GNUC__=1...
6/29 files checked 16% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneSharing.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneSharing.h: __GNUC__=1...
7/29 files checked 19% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalAssistive.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalAssistive.h: __GNUC__=1...
8/29 files checked 23% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalDeviceUsageState.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalDeviceUsageState.h: __GNUC__=1...
9/29 files checked 28% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyAndRoadWorkerActivity.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyAndRoadWorkerActivity.h: __GNUC__=1...
10/29 files checked 32% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyDirectingTrafficSubType.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyDirectingTrafficSubType.h: __GNUC__=1...
11/29 files checked 37% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TrafficLightOperationStatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TrafficLightOperationStatus.h: __GNUC__=1...
12/29 files checked 41% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TransitStatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TransitStatus.h: __GNUC__=1...
13/29 files checked 44% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_UserSizeAndBehaviour.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_UserSizeAndBehaviour.h: __GNUC__=1...
14/29 files checked 48% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VehicleEventFlags.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VehicleEventFlags.h: __GNUC__=1...
15/29 files checked 53% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VerticalAccelerationThreshold.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VerticalAccelerationThreshold.h: __GNUC__=1...
16/29 files checked 56% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_BSMcoreData.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_BSMcoreData.h: __GNUC__=1...
17/29 files checked 59% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_IntersectionReferenceID.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_IntersectionReferenceID.h: __GNUC__=1...
18/29 files checked 60% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_PathPrediction.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_PathPrediction.h: __GNUC__=1...
19/29 files checked 61% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_common.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_common.h: __GNUC__=1...
20/29 files checked 63% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_constants.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_constants.h: __GNUC__=1...
21/29 files checked 70% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_inline.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_inline.h: __GNUC__=1...
22/29 files checked 72% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_toolkit.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_toolkit.h: __GNUC__=1...
23/29 files checked 74% done
Checking J2735_run_tests.c ...
Checking J2735_run_tests.c: __GNUC__=1...
24/29 files checked 74% done
Checking J2735_UPER_test.c ...
Checking J2735_UPER_test.c: __GNUC__=1...
25/29 files checked 81% done
Checking J2735_internal_DE_VehicleEventFlags_test.c ...
Checking J2735_internal_DE_VehicleEventFlags_test.c: __GNUC__=1...
26/29 files checked 95% done
Checking J2735_internal_DF_BSMcoreData_test.c ...
Checking J2735_internal_DF_BSMcoreData_test.c: __GNUC__=1...
27/29 files checked 96% done
Checking J2735_internal_DF_IntersectionReferenceID_test.c ...
Checking J2735_internal_DF_IntersectionReferenceID_test.c: __GNUC__=1...
28/29 files checked 97% done
Checking J2735_internal_DF_PathPrediction_test.c ...
Checking J2735_internal_DF_PathPrediction_test.c: __GNUC__=1...
29/29 files checked 100% done
nofile:0:0: information: Active checkers: 143/592 (use --checkers-report=<filename> to see details) [checkersReport]

=== Static Analysis Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

clang-tidy

Click to expand
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
=== clang-tidy ===
[1/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_run_tests.c.
2400 warnings generated.
[2/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_UPER_test.c.
4806 warnings generated.
[3/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DE_VehicleEventFlags_test.c.
7265 warnings generated.
[4/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DF_BSMcoreData_test.c.
9671 warnings generated.
[5/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DF_IntersectionReferenceID_test.c.
12077 warnings generated.
[6/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DF_PathPrediction_test.c.
14483 warnings generated.
Suppressed 14493 warnings (14483 in non-user code, 10 NOLINT).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
=== clang-tidy Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

Sanitizers (ASan + UBSan)

Test Output
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o J2735_UPER_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o J2735_internal_DE_VehicleEventFlags_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o J2735_internal_DF_BSMcoreData_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o J2735_internal_DF_IntersectionReferenceID_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o J2735_internal_DF_PathPrediction_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o unity.c
=== AddressSanitizer ===
gcc -fsanitize=address -std=c17 -g -O1 -fno-omit-frame-pointer -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_asan \
	J2735_run_tests.c /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o
/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_asan
J2735_run_tests.c:114:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:137:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:138:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:223:test_path_prediction_no_extension:PASS
J2735_run_tests.c:224:test_path_prediction_with_extension:PASS
J2735_run_tests.c:225:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:885:test_inline_read_length_determinant_short_form_min:PASS
J2735_run_tests.c:886:test_inline_read_length_determinant_short_form_max:PASS
J2735_run_tests.c:887:test_inline_read_length_determinant_short_form_typical:PASS
J2735_run_tests.c:888:test_inline_read_length_determinant_long_form_min:PASS
J2735_run_tests.c:889:test_inline_read_length_determinant_long_form_128:PASS
J2735_run_tests.c:890:test_inline_read_length_determinant_long_form_max:PASS
J2735_run_tests.c:891:test_inline_read_length_determinant_fragmented_error:PASS
J2735_run_tests.c:892:test_inline_read_length_determinant_nonzero_bit_offset:PASS
J2735_run_tests.c:895:test_inline_read_nsnnwn_small_form_min:PASS
J2735_run_tests.c:896:test_inline_read_nsnnwn_small_form_max:PASS
J2735_run_tests.c:897:test_inline_read_nsnnwn_small_form_typical:PASS
J2735_run_tests.c:898:test_inline_read_nsnnwn_large_form_64:PASS
J2735_run_tests.c:899:test_inline_read_nsnnwn_large_form_100:PASS
J2735_run_tests.c:900:test_inline_read_nsnnwn_large_form_255:PASS
J2735_run_tests.c:901:test_inline_read_nsnnwn_large_form_256:PASS
J2735_run_tests.c:902:test_inline_read_nsnnwn_large_form_65535:PASS
J2735_run_tests.c:903:test_inline_read_nsnnwn_large_form_4_bytes:PASS
J2735_run_tests.c:904:test_inline_read_nsnnwn_large_form_5_bytes_error:PASS
J2735_run_tests.c:905:test_inline_read_nsnnwn_fragmented_error:PASS
J2735_run_tests.c:906:test_inline_read_nsnnwn_nonzero_bit_offset:PASS
J2735_run_tests.c:909:test_inline_skip_extensions_one_slot_none_present:PASS
J2735_run_tests.c:910:test_inline_skip_extensions_one_slot_present:PASS
J2735_run_tests.c:911:test_inline_skip_extensions_two_slots_both_present:PASS
J2735_run_tests.c:912:test_inline_skip_extensions_two_slots_first_only:PASS
J2735_run_tests.c:913:test_inline_skip_extensions_two_slots_second_only:PASS
J2735_run_tests.c:914:test_inline_skip_extensions_empty_content:PASS
J2735_run_tests.c:915:test_inline_skip_extensions_nsnnwn_error:PASS
J2735_run_tests.c:916:test_inline_skip_extensions_length_error:PASS
J2735_run_tests.c:917:test_inline_skip_extensions_nonzero_offset:PASS
J2735_run_tests.c:918:test_inline_skip_extensions_too_many_extensions:PASS
J2735_run_tests.c:1214:test_vehicle_event_flags_non_extended:PASS
J2735_run_tests.c:1215:test_vehicle_event_flags_extended:PASS
J2735_run_tests.c:1226:test_vehicle_event_flags_individual_extended_flags_0_to_4:PASS
J2735_run_tests.c:1227:test_vehicle_event_flags_individual_extended_flags_5_to_9:PASS
J2735_run_tests.c:1228:test_vehicle_event_flags_individual_extended_flags_10_to_13:PASS
J2735_run_tests.c:1229:test_vehicle_event_flags_individual_non_extended_flags_0_to_4:PASS
J2735_run_tests.c:1230:test_vehicle_event_flags_individual_non_extended_flags_5_to_9:PASS
J2735_run_tests.c:1231:test_vehicle_event_flags_individual_non_extended_flags_10_to_13:PASS
J2735_run_tests.c:1238:test_vehicle_event_flags_size_non_extended:PASS
J2735_run_tests.c:1239:test_vehicle_event_flags_size_extended:PASS
J2735_run_tests.c:1248:test_vehicle_event_flags_all_zeros_non_extended:PASS
J2735_run_tests.c:1249:test_vehicle_event_flags_extended_single_jackknife:PASS
J2735_run_tests.c:1250:test_vehicle_event_flags_non_extended_all_root_flags_on_metadata:PASS
J2735_run_tests.c:1251:test_vehicle_event_flags_non_extended_all_root_flags_on_bits:PASS
J2735_run_tests.c:1252:test_vehicle_event_flags_extended_all_zeros:PASS
J2735_run_tests.c:1259:test_vehicle_event_flags_non_extended_alternating_0x1555_metadata:PASS
J2735_run_tests.c:1260:test_vehicle_event_flags_non_extended_alternating_0x1555_0_to_4:PASS
J2735_run_tests.c:1261:test_vehicle_event_flags_non_extended_alternating_0x1555_5_to_9:PASS
J2735_run_tests.c:1262:test_vehicle_event_flags_non_extended_alternating_0x1555_10_to_12:PASS
J2735_run_tests.c:1263:test_vehicle_event_flags_non_extended_alternating_0x0AAA_metadata:PASS
J2735_run_tests.c:1264:test_vehicle_event_flags_non_extended_alternating_0x0AAA_0_to_4:PASS
J2735_run_tests.c:1265:test_vehicle_event_flags_non_extended_alternating_0x0AAA_5_to_9:PASS
J2735_run_tests.c:1266:test_vehicle_event_flags_non_extended_alternating_0x0AAA_10_to_12:PASS
J2735_run_tests.c:1275:test_vehicle_event_flags_single_bit_0_hazard_lights:PASS
J2735_run_tests.c:1276:test_vehicle_event_flags_single_bit_12_airbag:PASS
J2735_run_tests.c:1277:test_vehicle_event_flags_single_bit_7_hard_braking:PASS
J2735_run_tests.c:1278:test_vehicle_event_flags_extended_single_hazard_lights:PASS

-----------------------
63 Tests 0 Failures 0 Ignored 
OK

=== UndefinedBehaviorSanitizer ===
gcc -fsanitize=undefined -std=c17 -g -O1 -fno-omit-frame-pointer -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_ubsan \
	J2735_run_tests.c /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o
/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_ubsan
J2735_run_tests.c:114:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:137:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:138:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:223:test_path_prediction_no_extension:PASS
J2735_run_tests.c:224:test_path_prediction_with_extension:PASS
J2735_run_tests.c:225:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:885:test_inline_read_length_determinant_short_form_min:PASS
J2735_run_tests.c:886:test_inline_read_length_determinant_short_form_max:PASS
J2735_run_tests.c:887:test_inline_read_length_determinant_short_form_typical:PASS
J2735_run_tests.c:888:test_inline_read_length_determinant_long_form_min:PASS
J2735_run_tests.c:889:test_inline_read_length_determinant_long_form_128:PASS
J2735_run_tests.c:890:test_inline_read_length_determinant_long_form_max:PASS
J2735_run_tests.c:891:test_inline_read_length_determinant_fragmented_error:PASS
J2735_run_tests.c:892:test_inline_read_length_determinant_nonzero_bit_offset:PASS
J2735_run_tests.c:895:test_inline_read_nsnnwn_small_form_min:PASS
J2735_run_tests.c:896:test_inline_read_nsnnwn_small_form_max:PASS
J2735_run_tests.c:897:test_inline_read_nsnnwn_small_form_typical:PASS
J2735_run_tests.c:898:test_inline_read_nsnnwn_large_form_64:PASS
J2735_run_tests.c:899:test_inline_read_nsnnwn_large_form_100:PASS
J2735_run_tests.c:900:test_inline_read_nsnnwn_large_form_255:PASS
J2735_run_tests.c:901:test_inline_read_nsnnwn_large_form_256:PASS
J2735_run_tests.c:902:test_inline_read_nsnnwn_large_form_65535:PASS
J2735_run_tests.c:903:test_inline_read_nsnnwn_large_form_4_bytes:PASS
J2735_run_tests.c:904:test_inline_read_nsnnwn_large_form_5_bytes_error:PASS
J2735_run_tests.c:905:test_inline_read_nsnnwn_fragmented_error:PASS
J2735_run_tests.c:906:test_inline_read_nsnnwn_nonzero_bit_offset:PASS
J2735_run_tests.c:909:test_inline_skip_extensions_one_slot_none_present:PASS
J2735_run_tests.c:910:test_inline_skip_extensions_one_slot_present:PASS
J2735_run_tests.c:911:test_inline_skip_extensions_two_slots_both_present:PASS
J2735_run_tests.c:912:test_inline_skip_extensions_two_slots_first_only:PASS
J2735_run_tests.c:913:test_inline_skip_extensions_two_slots_second_only:PASS
J2735_run_tests.c:914:test_inline_skip_extensions_empty_content:PASS
J2735_run_tests.c:915:test_inline_skip_extensions_nsnnwn_error:PASS
J2735_run_tests.c:916:test_inline_skip_extensions_length_error:PASS
J2735_run_tests.c:917:test_inline_skip_extensions_nonzero_offset:PASS
J2735_run_tests.c:918:test_inline_skip_extensions_too_many_extensions:PASS
J2735_run_tests.c:1214:test_vehicle_event_flags_non_extended:PASS
J2735_run_tests.c:1215:test_vehicle_event_flags_extended:PASS
J2735_run_tests.c:1226:test_vehicle_event_flags_individual_extended_flags_0_to_4:PASS
J2735_run_tests.c:1227:test_vehicle_event_flags_individual_extended_flags_5_to_9:PASS
J2735_run_tests.c:1228:test_vehicle_event_flags_individual_extended_flags_10_to_13:PASS
J2735_run_tests.c:1229:test_vehicle_event_flags_individual_non_extended_flags_0_to_4:PASS
J2735_run_tests.c:1230:test_vehicle_event_flags_individual_non_extended_flags_5_to_9:PASS
J2735_run_tests.c:1231:test_vehicle_event_flags_individual_non_extended_flags_10_to_13:PASS
J2735_run_tests.c:1238:test_vehicle_event_flags_size_non_extended:PASS
J2735_run_tests.c:1239:test_vehicle_event_flags_size_extended:PASS
J2735_run_tests.c:1248:test_vehicle_event_flags_all_zeros_non_extended:PASS
J2735_run_tests.c:1249:test_vehicle_event_flags_extended_single_jackknife:PASS
J2735_run_tests.c:1250:test_vehicle_event_flags_non_extended_all_root_flags_on_metadata:PASS
J2735_run_tests.c:1251:test_vehicle_event_flags_non_extended_all_root_flags_on_bits:PASS
J2735_run_tests.c:1252:test_vehicle_event_flags_extended_all_zeros:PASS
J2735_run_tests.c:1259:test_vehicle_event_flags_non_extended_alternating_0x1555_metadata:PASS
J2735_run_tests.c:1260:test_vehicle_event_flags_non_extended_alternating_0x1555_0_to_4:PASS
J2735_run_tests.c:1261:test_vehicle_event_flags_non_extended_alternating_0x1555_5_to_9:PASS
J2735_run_tests.c:1262:test_vehicle_event_flags_non_extended_alternating_0x1555_10_to_12:PASS
J2735_run_tests.c:1263:test_vehicle_event_flags_non_extended_alternating_0x0AAA_metadata:PASS
J2735_run_tests.c:1264:test_vehicle_event_flags_non_extended_alternating_0x0AAA_0_to_4:PASS
J2735_run_tests.c:1265:test_vehicle_event_flags_non_extended_alternating_0x0AAA_5_to_9:PASS
J2735_run_tests.c:1266:test_vehicle_event_flags_non_extended_alternating_0x0AAA_10_to_12:PASS
J2735_run_tests.c:1275:test_vehicle_event_flags_single_bit_0_hazard_lights:PASS
J2735_run_tests.c:1276:test_vehicle_event_flags_single_bit_12_airbag:PASS
J2735_run_tests.c:1277:test_vehicle_event_flags_single_bit_7_hard_braking:PASS
J2735_run_tests.c:1278:test_vehicle_event_flags_extended_single_hazard_lights:PASS

-----------------------
63 Tests 0 Failures 0 Ignored 
OK

=== Sanitizer Checks Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

✅ No issues detected


Valgrind Memory Check

Test Output
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o J2735_UPER_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o J2735_internal_DE_VehicleEventFlags_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o J2735_internal_DF_BSMcoreData_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o J2735_internal_DF_IntersectionReferenceID_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o J2735_internal_DF_PathPrediction_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o unity.c
=== Valgrind Memory Check ===
gcc -std=c17 -g -O1 -fno-omit-frame-pointer -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_valgrind \
	J2735_run_tests.c /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o
valgrind \
	--leak-check=full \
	--error-exitcode=1 \
	--show-leak-kinds=all \
	--track-origins=yes \
	/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_valgrind
==2759== Memcheck, a memory error detector
==2759== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==2759== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==2759== Command: /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_valgrind
==2759== 
J2735_run_tests.c:114:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:137:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:138:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:223:test_path_prediction_no_extension:PASS
J2735_run_tests.c:224:test_path_prediction_with_extension:PASS
J2735_run_tests.c:225:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:885:test_inline_read_length_determinant_short_form_min:PASS
J2735_run_tests.c:886:test_inline_read_length_determinant_short_form_max:PASS
J2735_run_tests.c:887:test_inline_read_length_determinant_short_form_typical:PASS
J2735_run_tests.c:888:test_inline_read_length_determinant_long_form_min:PASS
J2735_run_tests.c:889:test_inline_read_length_determinant_long_form_128:PASS
J2735_run_tests.c:890:test_inline_read_length_determinant_long_form_max:PASS
J2735_run_tests.c:891:test_inline_read_length_determinant_fragmented_error:PASS
J2735_run_tests.c:892:test_inline_read_length_determinant_nonzero_bit_offset:PASS
J2735_run_tests.c:895:test_inline_read_nsnnwn_small_form_min:PASS
J2735_run_tests.c:896:test_inline_read_nsnnwn_small_form_max:PASS
J2735_run_tests.c:897:test_inline_read_nsnnwn_small_form_typical:PASS
J2735_run_tests.c:898:test_inline_read_nsnnwn_large_form_64:PASS
J2735_run_tests.c:899:test_inline_read_nsnnwn_large_form_100:PASS
J2735_run_tests.c:900:test_inline_read_nsnnwn_large_form_255:PASS
J2735_run_tests.c:901:test_inline_read_nsnnwn_large_form_256:PASS
J2735_run_tests.c:902:test_inline_read_nsnnwn_large_form_65535:PASS
J2735_run_tests.c:903:test_inline_read_nsnnwn_large_form_4_bytes:PASS
J2735_run_tests.c:904:test_inline_read_nsnnwn_large_form_5_bytes_error:PASS
J2735_run_tests.c:905:test_inline_read_nsnnwn_fragmented_error:PASS
J2735_run_tests.c:906:test_inline_read_nsnnwn_nonzero_bit_offset:PASS
J2735_run_tests.c:909:test_inline_skip_extensions_one_slot_none_present:PASS
J2735_run_tests.c:910:test_inline_skip_extensions_one_slot_present:PASS
J2735_run_tests.c:911:test_inline_skip_extensions_two_slots_both_present:PASS
J2735_run_tests.c:912:test_inline_skip_extensions_two_slots_first_only:PASS
J2735_run_tests.c:913:test_inline_skip_extensions_two_slots_second_only:PASS
J2735_run_tests.c:914:test_inline_skip_extensions_empty_content:PASS
J2735_run_tests.c:915:test_inline_skip_extensions_nsnnwn_error:PASS
J2735_run_tests.c:916:test_inline_skip_extensions_length_error:PASS
J2735_run_tests.c:917:test_inline_skip_extensions_nonzero_offset:PASS
J2735_run_tests.c:918:test_inline_skip_extensions_too_many_extensions:PASS
J2735_run_tests.c:1214:test_vehicle_event_flags_non_extended:PASS
J2735_run_tests.c:1215:test_vehicle_event_flags_extended:PASS
J2735_run_tests.c:1226:test_vehicle_event_flags_individual_extended_flags_0_to_4:PASS
J2735_run_tests.c:1227:test_vehicle_event_flags_individual_extended_flags_5_to_9:PASS
J2735_run_tests.c:1228:test_vehicle_event_flags_individual_extended_flags_10_to_13:PASS
J2735_run_tests.c:1229:test_vehicle_event_flags_individual_non_extended_flags_0_to_4:PASS
J2735_run_tests.c:1230:test_vehicle_event_flags_individual_non_extended_flags_5_to_9:PASS
J2735_run_tests.c:1231:test_vehicle_event_flags_individual_non_extended_flags_10_to_13:PASS
J2735_run_tests.c:1238:test_vehicle_event_flags_size_non_extended:PASS
J2735_run_tests.c:1239:test_vehicle_event_flags_size_extended:PASS
J2735_run_tests.c:1248:test_vehicle_event_flags_all_zeros_non_extended:PASS
J2735_run_tests.c:1249:test_vehicle_event_flags_extended_single_jackknife:PASS
J2735_run_tests.c:1250:test_vehicle_event_flags_non_extended_all_root_flags_on_metadata:PASS
J2735_run_tests.c:1251:test_vehicle_event_flags_non_extended_all_root_flags_on_bits:PASS
J2735_run_tests.c:1252:test_vehicle_event_flags_extended_all_zeros:PASS
J2735_run_tests.c:1259:test_vehicle_event_flags_non_extended_alternating_0x1555_metadata:PASS
J2735_run_tests.c:1260:test_vehicle_event_flags_non_extended_alternating_0x1555_0_to_4:PASS
J2735_run_tests.c:1261:test_vehicle_event_flags_non_extended_alternating_0x1555_5_to_9:PASS
J2735_run_tests.c:1262:test_vehicle_event_flags_non_extended_alternating_0x1555_10_to_12:PASS
J2735_run_tests.c:1263:test_vehicle_event_flags_non_extended_alternating_0x0AAA_metadata:PASS
J2735_run_tests.c:1264:test_vehicle_event_flags_non_extended_alternating_0x0AAA_0_to_4:PASS
J2735_run_tests.c:1265:test_vehicle_event_flags_non_extended_alternating_0x0AAA_5_to_9:PASS
J2735_run_tests.c:1266:test_vehicle_event_flags_non_extended_alternating_0x0AAA_10_to_12:PASS
J2735_run_tests.c:1275:test_vehicle_event_flags_single_bit_0_hazard_lights:PASS
J2735_run_tests.c:1276:test_vehicle_event_flags_single_bit_12_airbag:PASS
J2735_run_tests.c:1277:test_vehicle_event_flags_single_bit_7_hard_braking:PASS
J2735_run_tests.c:1278:test_vehicle_event_flags_extended_single_hazard_lights:PASS

-----------------------
63 Tests 0 Failures 0 Ignored 
OK
==2759== 
==2759== HEAP SUMMARY:
==2759==     in use at exit: 0 bytes in 0 blocks
==2759==   total heap usage: 1 allocs, 1 frees, 4,096 bytes allocated
==2759== 
==2759== All heap blocks were freed -- no leaks are possible
==2759== 
==2759== For lists of detected and suppressed errors, rerun with: -s
==2759== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=== Valgrind Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

✅ No memory issues detected

Signed-off-by: Yogev Neumann <xqgex@users.noreply.github.com>
@github-actions
Copy link
Contributor

github-actions bot commented Feb 2, 2026

Python CI Report

Commit: 2498718ac565123e39a25d586b6501a0d6c8d50e


Python Tests

Test Output
============================================================
Running Doctests
============================================================
  ✓ All 244 doctest tests passed

============================================================
Running Unit Tests
============================================================
  ✓ All 254 unit tests passed

============================================================
✓ ALL TESTS PASSED
============================================================

✅ All tests passed


Coverage: 97%

Module Cover
j2735_c_generator_bitwidth_constants.py 100% ✅
j2735_c_generator_jinja.py 100% ✅
j2735_c_generator_size_constants.py 100% ✅
test_bitstring_common.py 100% ✅
test_bitstring_get.py 100% ✅
test_bitstring_get_one.py 100% ✅
test_bitstring_internal_bit_pos.py 100% ✅
test_bitstring_internal_ext_size.py 100% ✅
test_bitstring_internal_get_all.py 100% ✅
test_bitstring_internal_get_one.py 100% ✅
test_bitstring_internal_is_extension.py 100% ✅
test_bitstring_internal_max_wire_bits.py 100% ✅
test_bitstring_internal_raw_read.py 100% ✅
test_bitstring_internal_root_size.py 100% ✅
test_bitstring_is_extended.py 100% ✅
test_bitstring_size.py 100% ✅
test_jinja_filters.py 100% ✅
test_sequence_has_extension.py 100% ✅
test_sequence_root_size.py 100% ✅
test_sequence_size_func.py 100% ✅
test_wire_format.py 100% ✅
test_spec_file.py 100% ✅
test_bitstring_constraint.py 100% ✅
test_brace_extraction.py 100% ✅
test_choice_type.py 100% ✅
test_constraint_validation.py 100% ✅
test_enumerated_type.py 100% ✅
test_ia5string_constraint.py 100% ✅
test_integer_constraint.py 100% ✅
test_octet_constraint.py 100% ✅
test_parsing.py 100% ✅
test_properties.py 100% ✅
test_sequence_field.py 100% ✅
test_sequence_of_type.py 100% ✅
test_type_definition.py 100% ✅
j2735_spec_constraints.py 99% ✅
j2735_spec_parser.py 99% ✅
conftest.py 96% ✅
j2735_c_generator_wire_format.py 94% ✅
test_uper_constraint.py 92% ✅
j2735_c_generator_data_frame.py 86% ⚠️
run_tests.py 83% ⚠️
j2735_c_generator_data_element.py 59% ❌
j2735.py 22% ❌
Details (2353 statements, 60 missed)
Module Stmts Miss Missing Lines
j2735_c_generator_bitwidth_constants.py 13 0 -
j2735_c_generator_jinja.py 36 0 -
j2735_c_generator_size_constants.py 11 0 -
test_bitstring_common.py 32 0 -
test_bitstring_get.py 11 0 -
test_bitstring_get_one.py 21 0 -
test_bitstring_internal_bit_pos.py 18 0 -
test_bitstring_internal_ext_size.py 19 0 -
test_bitstring_internal_get_all.py 10 0 -
test_bitstring_internal_get_one.py 12 0 -
test_bitstring_internal_is_extension.py 11 0 -
test_bitstring_internal_max_wire_bits.py 27 0 -
test_bitstring_internal_raw_read.py 15 0 -
test_bitstring_internal_root_size.py 19 0 -
test_bitstring_is_extended.py 10 0 -
test_bitstring_size.py 20 0 -
test_jinja_filters.py 32 0 -
test_sequence_has_extension.py 40 0 -
test_sequence_root_size.py 48 0 -
test_sequence_size_func.py 62 0 -
test_wire_format.py 35 0 -
test_spec_file.py 65 0 -
test_bitstring_constraint.py 135 0 -
test_brace_extraction.py 27 0 -
test_choice_type.py 27 0 -
test_constraint_validation.py 79 0 -
test_enumerated_type.py 51 0 -
test_ia5string_constraint.py 18 0 -
test_integer_constraint.py 36 0 -
test_octet_constraint.py 18 0 -
test_parsing.py 124 0 -
test_properties.py 143 0 -
test_sequence_field.py 119 0 -
test_sequence_of_type.py 15 0 -
test_type_definition.py 12 0 -
j2735_spec_constraints.py 409 4 130, 143, 379, 1562
j2735_spec_parser.py 272 3 555, 586, 851
conftest.py 51 2 237, 280
j2735_c_generator_wire_format.py 69 4 219, 229, 233, 238
test_uper_constraint.py 26 2 51, 56
j2735_c_generator_data_frame.py 29 4 62, 66, 93, 102
run_tests.py 75 13 51, 93, 97, 98, 99, 134, 135, 142, 168, 169, ... (+3 more)
j2735_c_generator_data_element.py 17 7 61, 62, 63, 65, 66, 67, 99
j2735.py 27 21 37, 41, 46, 52, 57, 59, 60, 61, 62, 63, ... (+11 more)

Python Static Analysis

Tool Status
mypy
pylint
flake8
ruff
codespell

mypy

Success: no issues found in 49 source files

pylint


------------------------------------
Your code has been rated at 10.00/10

flake8

No issues found

ruff

All checks passed!

codespell

No issues found

@github-actions
Copy link
Contributor

github-actions bot commented Feb 2, 2026

CI Report

Commit: 2498718ac565123e39a25d586b6501a0d6c8d50e


Static Analysis

Tool Status
cppcheck
clang-tidy

cppcheck

Click to expand
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
=== Static Analysis (cppcheck) ===
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_api.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_api.h: __GNUC__=1...
1/29 files checked 0% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_AllowedManeuvers.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_AllowedManeuvers.h: __GNUC__=1...
2/29 files checked 4% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_BrakeAppliedStatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_BrakeAppliedStatus.h: __GNUC__=1...
3/29 files checked 6% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_ExteriorLights.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_ExteriorLights.h: __GNUC__=1...
4/29 files checked 10% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_GNSSstatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_GNSSstatus.h: __GNUC__=1...
5/29 files checked 13% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneDirection.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneDirection.h: __GNUC__=1...
6/29 files checked 16% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneSharing.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_LaneSharing.h: __GNUC__=1...
7/29 files checked 19% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalAssistive.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalAssistive.h: __GNUC__=1...
8/29 files checked 23% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalDeviceUsageState.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PersonalDeviceUsageState.h: __GNUC__=1...
9/29 files checked 28% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyAndRoadWorkerActivity.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyAndRoadWorkerActivity.h: __GNUC__=1...
10/29 files checked 32% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyDirectingTrafficSubType.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_PublicSafetyDirectingTrafficSubType.h: __GNUC__=1...
11/29 files checked 37% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TrafficLightOperationStatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TrafficLightOperationStatus.h: __GNUC__=1...
12/29 files checked 41% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TransitStatus.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_TransitStatus.h: __GNUC__=1...
13/29 files checked 44% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_UserSizeAndBehaviour.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_UserSizeAndBehaviour.h: __GNUC__=1...
14/29 files checked 48% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VehicleEventFlags.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VehicleEventFlags.h: __GNUC__=1...
15/29 files checked 53% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VerticalAccelerationThreshold.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DE_VerticalAccelerationThreshold.h: __GNUC__=1...
16/29 files checked 56% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_BSMcoreData.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_BSMcoreData.h: __GNUC__=1...
17/29 files checked 59% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_IntersectionReferenceID.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_IntersectionReferenceID.h: __GNUC__=1...
18/29 files checked 60% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_PathPrediction.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_DF_PathPrediction.h: __GNUC__=1...
19/29 files checked 61% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_common.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_common.h: __GNUC__=1...
20/29 files checked 63% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_constants.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_constants.h: __GNUC__=1...
21/29 files checked 70% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_inline.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_internal_inline.h: __GNUC__=1...
22/29 files checked 72% done
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_toolkit.h ...
Checking /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src/J2735_toolkit.h: __GNUC__=1...
23/29 files checked 74% done
Checking J2735_run_tests.c ...
Checking J2735_run_tests.c: __GNUC__=1...
24/29 files checked 74% done
Checking J2735_UPER_test.c ...
Checking J2735_UPER_test.c: __GNUC__=1...
25/29 files checked 81% done
Checking J2735_internal_DE_VehicleEventFlags_test.c ...
Checking J2735_internal_DE_VehicleEventFlags_test.c: __GNUC__=1...
26/29 files checked 95% done
Checking J2735_internal_DF_BSMcoreData_test.c ...
Checking J2735_internal_DF_BSMcoreData_test.c: __GNUC__=1...
27/29 files checked 96% done
Checking J2735_internal_DF_IntersectionReferenceID_test.c ...
Checking J2735_internal_DF_IntersectionReferenceID_test.c: __GNUC__=1...
28/29 files checked 97% done
Checking J2735_internal_DF_PathPrediction_test.c ...
Checking J2735_internal_DF_PathPrediction_test.c: __GNUC__=1...
29/29 files checked 100% done
nofile:0:0: information: Active checkers: 143/592 (use --checkers-report=<filename> to see details) [checkersReport]

=== Static Analysis Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

clang-tidy

Click to expand
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
=== clang-tidy ===
[1/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_run_tests.c.
2400 warnings generated.
[2/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_UPER_test.c.
4806 warnings generated.
[3/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DE_VehicleEventFlags_test.c.
7265 warnings generated.
[4/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DF_BSMcoreData_test.c.
9671 warnings generated.
[5/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DF_IntersectionReferenceID_test.c.
12077 warnings generated.
[6/6] Processing file /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests/J2735_internal_DF_PathPrediction_test.c.
14483 warnings generated.
Suppressed 14493 warnings (14483 in non-user code, 10 NOLINT).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
=== clang-tidy Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

Sanitizers (ASan + UBSan)

Test Output
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o J2735_UPER_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o J2735_internal_DE_VehicleEventFlags_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o J2735_internal_DF_BSMcoreData_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o J2735_internal_DF_IntersectionReferenceID_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o J2735_internal_DF_PathPrediction_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o unity.c
=== AddressSanitizer ===
gcc -fsanitize=address -std=c17 -g -O1 -fno-omit-frame-pointer -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_asan \
	J2735_run_tests.c /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o
/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_asan
J2735_run_tests.c:114:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:137:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:138:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:223:test_path_prediction_no_extension:PASS
J2735_run_tests.c:224:test_path_prediction_with_extension:PASS
J2735_run_tests.c:225:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:885:test_inline_read_length_determinant_short_form_min:PASS
J2735_run_tests.c:886:test_inline_read_length_determinant_short_form_max:PASS
J2735_run_tests.c:887:test_inline_read_length_determinant_short_form_typical:PASS
J2735_run_tests.c:888:test_inline_read_length_determinant_long_form_min:PASS
J2735_run_tests.c:889:test_inline_read_length_determinant_long_form_128:PASS
J2735_run_tests.c:890:test_inline_read_length_determinant_long_form_max:PASS
J2735_run_tests.c:891:test_inline_read_length_determinant_fragmented_error:PASS
J2735_run_tests.c:892:test_inline_read_length_determinant_nonzero_bit_offset:PASS
J2735_run_tests.c:895:test_inline_read_nsnnwn_small_form_min:PASS
J2735_run_tests.c:896:test_inline_read_nsnnwn_small_form_max:PASS
J2735_run_tests.c:897:test_inline_read_nsnnwn_small_form_typical:PASS
J2735_run_tests.c:898:test_inline_read_nsnnwn_large_form_64:PASS
J2735_run_tests.c:899:test_inline_read_nsnnwn_large_form_100:PASS
J2735_run_tests.c:900:test_inline_read_nsnnwn_large_form_255:PASS
J2735_run_tests.c:901:test_inline_read_nsnnwn_large_form_256:PASS
J2735_run_tests.c:902:test_inline_read_nsnnwn_large_form_65535:PASS
J2735_run_tests.c:903:test_inline_read_nsnnwn_large_form_4_bytes:PASS
J2735_run_tests.c:904:test_inline_read_nsnnwn_large_form_5_bytes_error:PASS
J2735_run_tests.c:905:test_inline_read_nsnnwn_fragmented_error:PASS
J2735_run_tests.c:906:test_inline_read_nsnnwn_nonzero_bit_offset:PASS
J2735_run_tests.c:909:test_inline_skip_extensions_one_slot_none_present:PASS
J2735_run_tests.c:910:test_inline_skip_extensions_one_slot_present:PASS
J2735_run_tests.c:911:test_inline_skip_extensions_two_slots_both_present:PASS
J2735_run_tests.c:912:test_inline_skip_extensions_two_slots_first_only:PASS
J2735_run_tests.c:913:test_inline_skip_extensions_two_slots_second_only:PASS
J2735_run_tests.c:914:test_inline_skip_extensions_empty_content:PASS
J2735_run_tests.c:915:test_inline_skip_extensions_nsnnwn_error:PASS
J2735_run_tests.c:916:test_inline_skip_extensions_length_error:PASS
J2735_run_tests.c:917:test_inline_skip_extensions_nonzero_offset:PASS
J2735_run_tests.c:918:test_inline_skip_extensions_too_many_extensions:PASS
J2735_run_tests.c:1214:test_vehicle_event_flags_non_extended:PASS
J2735_run_tests.c:1215:test_vehicle_event_flags_extended:PASS
J2735_run_tests.c:1226:test_vehicle_event_flags_individual_extended_flags_0_to_4:PASS
J2735_run_tests.c:1227:test_vehicle_event_flags_individual_extended_flags_5_to_9:PASS
J2735_run_tests.c:1228:test_vehicle_event_flags_individual_extended_flags_10_to_13:PASS
J2735_run_tests.c:1229:test_vehicle_event_flags_individual_non_extended_flags_0_to_4:PASS
J2735_run_tests.c:1230:test_vehicle_event_flags_individual_non_extended_flags_5_to_9:PASS
J2735_run_tests.c:1231:test_vehicle_event_flags_individual_non_extended_flags_10_to_13:PASS
J2735_run_tests.c:1238:test_vehicle_event_flags_size_non_extended:PASS
J2735_run_tests.c:1239:test_vehicle_event_flags_size_extended:PASS
J2735_run_tests.c:1248:test_vehicle_event_flags_all_zeros_non_extended:PASS
J2735_run_tests.c:1249:test_vehicle_event_flags_extended_single_jackknife:PASS
J2735_run_tests.c:1250:test_vehicle_event_flags_non_extended_all_root_flags_on_metadata:PASS
J2735_run_tests.c:1251:test_vehicle_event_flags_non_extended_all_root_flags_on_bits:PASS
J2735_run_tests.c:1252:test_vehicle_event_flags_extended_all_zeros:PASS
J2735_run_tests.c:1259:test_vehicle_event_flags_non_extended_alternating_0x1555_metadata:PASS
J2735_run_tests.c:1260:test_vehicle_event_flags_non_extended_alternating_0x1555_0_to_4:PASS
J2735_run_tests.c:1261:test_vehicle_event_flags_non_extended_alternating_0x1555_5_to_9:PASS
J2735_run_tests.c:1262:test_vehicle_event_flags_non_extended_alternating_0x1555_10_to_12:PASS
J2735_run_tests.c:1263:test_vehicle_event_flags_non_extended_alternating_0x0AAA_metadata:PASS
J2735_run_tests.c:1264:test_vehicle_event_flags_non_extended_alternating_0x0AAA_0_to_4:PASS
J2735_run_tests.c:1265:test_vehicle_event_flags_non_extended_alternating_0x0AAA_5_to_9:PASS
J2735_run_tests.c:1266:test_vehicle_event_flags_non_extended_alternating_0x0AAA_10_to_12:PASS
J2735_run_tests.c:1275:test_vehicle_event_flags_single_bit_0_hazard_lights:PASS
J2735_run_tests.c:1276:test_vehicle_event_flags_single_bit_12_airbag:PASS
J2735_run_tests.c:1277:test_vehicle_event_flags_single_bit_7_hard_braking:PASS
J2735_run_tests.c:1278:test_vehicle_event_flags_extended_single_hazard_lights:PASS

-----------------------
63 Tests 0 Failures 0 Ignored 
OK

=== UndefinedBehaviorSanitizer ===
gcc -fsanitize=undefined -std=c17 -g -O1 -fno-omit-frame-pointer -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_ubsan \
	J2735_run_tests.c /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o
/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_ubsan
J2735_run_tests.c:114:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:137:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:138:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:223:test_path_prediction_no_extension:PASS
J2735_run_tests.c:224:test_path_prediction_with_extension:PASS
J2735_run_tests.c:225:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:885:test_inline_read_length_determinant_short_form_min:PASS
J2735_run_tests.c:886:test_inline_read_length_determinant_short_form_max:PASS
J2735_run_tests.c:887:test_inline_read_length_determinant_short_form_typical:PASS
J2735_run_tests.c:888:test_inline_read_length_determinant_long_form_min:PASS
J2735_run_tests.c:889:test_inline_read_length_determinant_long_form_128:PASS
J2735_run_tests.c:890:test_inline_read_length_determinant_long_form_max:PASS
J2735_run_tests.c:891:test_inline_read_length_determinant_fragmented_error:PASS
J2735_run_tests.c:892:test_inline_read_length_determinant_nonzero_bit_offset:PASS
J2735_run_tests.c:895:test_inline_read_nsnnwn_small_form_min:PASS
J2735_run_tests.c:896:test_inline_read_nsnnwn_small_form_max:PASS
J2735_run_tests.c:897:test_inline_read_nsnnwn_small_form_typical:PASS
J2735_run_tests.c:898:test_inline_read_nsnnwn_large_form_64:PASS
J2735_run_tests.c:899:test_inline_read_nsnnwn_large_form_100:PASS
J2735_run_tests.c:900:test_inline_read_nsnnwn_large_form_255:PASS
J2735_run_tests.c:901:test_inline_read_nsnnwn_large_form_256:PASS
J2735_run_tests.c:902:test_inline_read_nsnnwn_large_form_65535:PASS
J2735_run_tests.c:903:test_inline_read_nsnnwn_large_form_4_bytes:PASS
J2735_run_tests.c:904:test_inline_read_nsnnwn_large_form_5_bytes_error:PASS
J2735_run_tests.c:905:test_inline_read_nsnnwn_fragmented_error:PASS
J2735_run_tests.c:906:test_inline_read_nsnnwn_nonzero_bit_offset:PASS
J2735_run_tests.c:909:test_inline_skip_extensions_one_slot_none_present:PASS
J2735_run_tests.c:910:test_inline_skip_extensions_one_slot_present:PASS
J2735_run_tests.c:911:test_inline_skip_extensions_two_slots_both_present:PASS
J2735_run_tests.c:912:test_inline_skip_extensions_two_slots_first_only:PASS
J2735_run_tests.c:913:test_inline_skip_extensions_two_slots_second_only:PASS
J2735_run_tests.c:914:test_inline_skip_extensions_empty_content:PASS
J2735_run_tests.c:915:test_inline_skip_extensions_nsnnwn_error:PASS
J2735_run_tests.c:916:test_inline_skip_extensions_length_error:PASS
J2735_run_tests.c:917:test_inline_skip_extensions_nonzero_offset:PASS
J2735_run_tests.c:918:test_inline_skip_extensions_too_many_extensions:PASS
J2735_run_tests.c:1214:test_vehicle_event_flags_non_extended:PASS
J2735_run_tests.c:1215:test_vehicle_event_flags_extended:PASS
J2735_run_tests.c:1226:test_vehicle_event_flags_individual_extended_flags_0_to_4:PASS
J2735_run_tests.c:1227:test_vehicle_event_flags_individual_extended_flags_5_to_9:PASS
J2735_run_tests.c:1228:test_vehicle_event_flags_individual_extended_flags_10_to_13:PASS
J2735_run_tests.c:1229:test_vehicle_event_flags_individual_non_extended_flags_0_to_4:PASS
J2735_run_tests.c:1230:test_vehicle_event_flags_individual_non_extended_flags_5_to_9:PASS
J2735_run_tests.c:1231:test_vehicle_event_flags_individual_non_extended_flags_10_to_13:PASS
J2735_run_tests.c:1238:test_vehicle_event_flags_size_non_extended:PASS
J2735_run_tests.c:1239:test_vehicle_event_flags_size_extended:PASS
J2735_run_tests.c:1248:test_vehicle_event_flags_all_zeros_non_extended:PASS
J2735_run_tests.c:1249:test_vehicle_event_flags_extended_single_jackknife:PASS
J2735_run_tests.c:1250:test_vehicle_event_flags_non_extended_all_root_flags_on_metadata:PASS
J2735_run_tests.c:1251:test_vehicle_event_flags_non_extended_all_root_flags_on_bits:PASS
J2735_run_tests.c:1252:test_vehicle_event_flags_extended_all_zeros:PASS
J2735_run_tests.c:1259:test_vehicle_event_flags_non_extended_alternating_0x1555_metadata:PASS
J2735_run_tests.c:1260:test_vehicle_event_flags_non_extended_alternating_0x1555_0_to_4:PASS
J2735_run_tests.c:1261:test_vehicle_event_flags_non_extended_alternating_0x1555_5_to_9:PASS
J2735_run_tests.c:1262:test_vehicle_event_flags_non_extended_alternating_0x1555_10_to_12:PASS
J2735_run_tests.c:1263:test_vehicle_event_flags_non_extended_alternating_0x0AAA_metadata:PASS
J2735_run_tests.c:1264:test_vehicle_event_flags_non_extended_alternating_0x0AAA_0_to_4:PASS
J2735_run_tests.c:1265:test_vehicle_event_flags_non_extended_alternating_0x0AAA_5_to_9:PASS
J2735_run_tests.c:1266:test_vehicle_event_flags_non_extended_alternating_0x0AAA_10_to_12:PASS
J2735_run_tests.c:1275:test_vehicle_event_flags_single_bit_0_hazard_lights:PASS
J2735_run_tests.c:1276:test_vehicle_event_flags_single_bit_12_airbag:PASS
J2735_run_tests.c:1277:test_vehicle_event_flags_single_bit_7_hard_braking:PASS
J2735_run_tests.c:1278:test_vehicle_event_flags_extended_single_hazard_lights:PASS

-----------------------
63 Tests 0 Failures 0 Ignored 
OK

=== Sanitizer Checks Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

✅ No issues detected


Valgrind Memory Check

Test Output
make[1]: Entering directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o J2735_UPER_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o J2735_internal_DE_VehicleEventFlags_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o J2735_internal_DF_BSMcoreData_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o J2735_internal_DF_IntersectionReferenceID_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o J2735_internal_DF_PathPrediction_test.c
gcc -std=c17 -O3 -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -Wno-float-equal -Wno-padded -c -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o unity.c
=== Valgrind Memory Check ===
gcc -std=c17 -g -O1 -fno-omit-frame-pointer -Wall -Waggregate-return -Walloca -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Werror -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self -Winline -Winline -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmultichar -Wnested-externs -Wnull-dereference -Wold-style-definition -Wpadded -Wpedantic -Wpointer-arith -Wredundant-decls -Wshadow -Wstack-protector -Wstrict-overflow=5 -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wuninitialized -Wunused-macros -Wvla -Wwrite-strings -Walloc-zero -Wanalyzer-too-complex -Warith-conversion -Wcast-align=strict -Wduplicated-branches -Wduplicated-cond -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wjump-misses-init -Wlogical-op -Wrestrict -Wshift-overflow=2 -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wtrampolines -Wunsuffixed-float-constants -Winvalid-utf8 -Wstrict-flex-arrays -fstrict-flex-arrays=3 -I/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/src -o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_valgrind \
	J2735_run_tests.c /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_UPER_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DE_VehicleEventFlags_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_BSMcoreData_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_IntersectionReferenceID_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_internal_DF_PathPrediction_test.o /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/unity.o
valgrind \
	--leak-check=full \
	--error-exitcode=1 \
	--show-leak-kinds=all \
	--track-origins=yes \
	/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_valgrind
==2778== Memcheck, a memory error detector
==2778== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==2778== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==2778== Command: /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_valgrind
==2778== 
J2735_run_tests.c:114:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:137:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:138:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:223:test_path_prediction_no_extension:PASS
J2735_run_tests.c:224:test_path_prediction_with_extension:PASS
J2735_run_tests.c:225:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:885:test_inline_read_length_determinant_short_form_min:PASS
J2735_run_tests.c:886:test_inline_read_length_determinant_short_form_max:PASS
J2735_run_tests.c:887:test_inline_read_length_determinant_short_form_typical:PASS
J2735_run_tests.c:888:test_inline_read_length_determinant_long_form_min:PASS
J2735_run_tests.c:889:test_inline_read_length_determinant_long_form_128:PASS
J2735_run_tests.c:890:test_inline_read_length_determinant_long_form_max:PASS
J2735_run_tests.c:891:test_inline_read_length_determinant_fragmented_error:PASS
J2735_run_tests.c:892:test_inline_read_length_determinant_nonzero_bit_offset:PASS
J2735_run_tests.c:895:test_inline_read_nsnnwn_small_form_min:PASS
J2735_run_tests.c:896:test_inline_read_nsnnwn_small_form_max:PASS
J2735_run_tests.c:897:test_inline_read_nsnnwn_small_form_typical:PASS
J2735_run_tests.c:898:test_inline_read_nsnnwn_large_form_64:PASS
J2735_run_tests.c:899:test_inline_read_nsnnwn_large_form_100:PASS
J2735_run_tests.c:900:test_inline_read_nsnnwn_large_form_255:PASS
J2735_run_tests.c:901:test_inline_read_nsnnwn_large_form_256:PASS
J2735_run_tests.c:902:test_inline_read_nsnnwn_large_form_65535:PASS
J2735_run_tests.c:903:test_inline_read_nsnnwn_large_form_4_bytes:PASS
J2735_run_tests.c:904:test_inline_read_nsnnwn_large_form_5_bytes_error:PASS
J2735_run_tests.c:905:test_inline_read_nsnnwn_fragmented_error:PASS
J2735_run_tests.c:906:test_inline_read_nsnnwn_nonzero_bit_offset:PASS
J2735_run_tests.c:909:test_inline_skip_extensions_one_slot_none_present:PASS
J2735_run_tests.c:910:test_inline_skip_extensions_one_slot_present:PASS
J2735_run_tests.c:911:test_inline_skip_extensions_two_slots_both_present:PASS
J2735_run_tests.c:912:test_inline_skip_extensions_two_slots_first_only:PASS
J2735_run_tests.c:913:test_inline_skip_extensions_two_slots_second_only:PASS
J2735_run_tests.c:914:test_inline_skip_extensions_empty_content:PASS
J2735_run_tests.c:915:test_inline_skip_extensions_nsnnwn_error:PASS
J2735_run_tests.c:916:test_inline_skip_extensions_length_error:PASS
J2735_run_tests.c:917:test_inline_skip_extensions_nonzero_offset:PASS
J2735_run_tests.c:918:test_inline_skip_extensions_too_many_extensions:PASS
J2735_run_tests.c:1214:test_vehicle_event_flags_non_extended:PASS
J2735_run_tests.c:1215:test_vehicle_event_flags_extended:PASS
J2735_run_tests.c:1226:test_vehicle_event_flags_individual_extended_flags_0_to_4:PASS
J2735_run_tests.c:1227:test_vehicle_event_flags_individual_extended_flags_5_to_9:PASS
J2735_run_tests.c:1228:test_vehicle_event_flags_individual_extended_flags_10_to_13:PASS
J2735_run_tests.c:1229:test_vehicle_event_flags_individual_non_extended_flags_0_to_4:PASS
J2735_run_tests.c:1230:test_vehicle_event_flags_individual_non_extended_flags_5_to_9:PASS
J2735_run_tests.c:1231:test_vehicle_event_flags_individual_non_extended_flags_10_to_13:PASS
J2735_run_tests.c:1238:test_vehicle_event_flags_size_non_extended:PASS
J2735_run_tests.c:1239:test_vehicle_event_flags_size_extended:PASS
J2735_run_tests.c:1248:test_vehicle_event_flags_all_zeros_non_extended:PASS
J2735_run_tests.c:1249:test_vehicle_event_flags_extended_single_jackknife:PASS
J2735_run_tests.c:1250:test_vehicle_event_flags_non_extended_all_root_flags_on_metadata:PASS
J2735_run_tests.c:1251:test_vehicle_event_flags_non_extended_all_root_flags_on_bits:PASS
J2735_run_tests.c:1252:test_vehicle_event_flags_extended_all_zeros:PASS
J2735_run_tests.c:1259:test_vehicle_event_flags_non_extended_alternating_0x1555_metadata:PASS
J2735_run_tests.c:1260:test_vehicle_event_flags_non_extended_alternating_0x1555_0_to_4:PASS
J2735_run_tests.c:1261:test_vehicle_event_flags_non_extended_alternating_0x1555_5_to_9:PASS
J2735_run_tests.c:1262:test_vehicle_event_flags_non_extended_alternating_0x1555_10_to_12:PASS
J2735_run_tests.c:1263:test_vehicle_event_flags_non_extended_alternating_0x0AAA_metadata:PASS
J2735_run_tests.c:1264:test_vehicle_event_flags_non_extended_alternating_0x0AAA_0_to_4:PASS
J2735_run_tests.c:1265:test_vehicle_event_flags_non_extended_alternating_0x0AAA_5_to_9:PASS
J2735_run_tests.c:1266:test_vehicle_event_flags_non_extended_alternating_0x0AAA_10_to_12:PASS
J2735_run_tests.c:1275:test_vehicle_event_flags_single_bit_0_hazard_lights:PASS
J2735_run_tests.c:1276:test_vehicle_event_flags_single_bit_12_airbag:PASS
J2735_run_tests.c:1277:test_vehicle_event_flags_single_bit_7_hard_braking:PASS
J2735_run_tests.c:1278:test_vehicle_event_flags_extended_single_hazard_lights:PASS

-----------------------
63 Tests 0 Failures 0 Ignored 
OK
==2778== 
==2778== HEAP SUMMARY:
==2778==     in use at exit: 0 bytes in 0 blocks
==2778==   total heap usage: 1 allocs, 1 frees, 4,096 bytes allocated
==2778== 
==2778== All heap blocks were freed -- no leaks are possible
==2778== 
==2778== For lists of detected and suppressed errors, rerun with: -s
==2778== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=== Valgrind Complete ===
make[1]: Leaving directory '/home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/tests'

✅ No memory issues detected

@xqgex xqgex merged commit e9ae4c0 into main Feb 2, 2026
22 checks passed
@xqgex xqgex deleted the de_bitstring branch February 2, 2026 23:18
@xqgex xqgex mentioned this pull request Feb 16, 2026
11 tasks
xqgex added a commit that referenced this pull request Feb 16, 2026
## Pull Request

### Description

Consolidate Data Frame SEQUENCE templates and enforce `J2735_INTERNAL_*`
naming for all internal macros.

**Naming consistency:** All internal macros that are not part of the
public API now use the `J2735_INTERNAL_` prefix consistently:
- `J2735_OFF_` → `J2735_INTERNAL_OFF_`
- `J2735_OPT_` → `J2735_INTERNAL_OPT_`
- `J2735_PREFIX_BITS_` → `J2735_INTERNAL_PREFIX_BITS_`
- `J2735_ROOT_SIZE_BITS_` → `J2735_INTERNAL_ROOT_SIZE_BITS_`

**Wire format redesign:** Replaced the byte-level `ByteSegment` /
`compute_wire_format()` Python API with a higher-level `WireVariant` /
`get_sequence_variants()` API. Layout rendering (Unicode box-drawing
tables) is now handled entirely by Jinja templates, making the Python
layer responsible only for determining which variants exist (fixed,
extensible with/without extensions, optional absent/present).

**Template modularization:**
- Monolithic `assemble_df.j2` → `assemble_df_sequence.j2` (focused on
SEQUENCE types only)
- `wire_format.j2` (Markdown table) → `wire_format_section.j2` +
`wire_format_table.j2` (column-based) + `wire_format_compact.j2`
(row-based for large types)
- New `asn1_definition.j2` for rendering ASN.1 type definitions inside
Doxygen comments
- Six sequence sub-templates renamed to match the `_internal_`
convention

**Jinja filter housekeeping:** All filters renamed with `filter_` prefix
for clarity. Two new filters added: `filter_is_signed` and
`filter_format_range`.

**Test coverage:** Added 8 new Python test files (~2,100 lines),
expanded `conftest.py` with `make_optional_mock_spec()` builder and
lightweight synthetic type helpers (`make_integer_field`,
`make_bitstring_field`, `make_sequence`). New tests cover every
sub-template, wire format variant generation, and structural invariants
(box-drawing symmetry, bit position continuity).

**Other:** Added Doxyfile for API documentation generation.

### Related Issue

Follows #3 (Consolidate Data Element templates)

### Additional Notes

The generated C headers (`BSMcoreData`, `IntersectionReferenceID`,
`PathPrediction`) have been regenerated and verified against the
existing C test suite.

### Type of Change

- [ ] Bug fix (non-breaking change that fixes an issue)
- [x] New feature (non-breaking change that adds functionality)
- [x] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update
- [ ] Performance improvement

### Checklist

- [x] My code follows the project's zero-copy coding style
- [x] I have read the [CONTRIBUTING.md](../CONTRIBUTING.md) guidelines
- [x] I have added/updated documentation as needed
- [x] I have added tests that prove my fix/feature works
- [x] I have run `make pre-push` and all checks pass
- [x] I have signed my commits (DCO) using `git commit -s`

Signed-off-by: Yogev Neumann <xqgex@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant