Skip to content

Consolidate Data Frame SEQUENCE templates#4

Merged
xqgex merged 1 commit intomainfrom
df_sequence
Feb 16, 2026
Merged

Consolidate Data Frame SEQUENCE templates#4
xqgex merged 1 commit intomainfrom
df_sequence

Conversation

@xqgex
Copy link
Owner

@xqgex xqgex commented 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.j2assemble_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)
  • 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 16, 2026
Copilot AI review requested due to automatic review settings February 16, 2026 16:52
@github-actions
Copy link
Contributor

Python CI Report

Commit: 835e84a5ad38b0e41eba5be62ca33d6a852125c1


Python Tests

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

============================================================
Running Unit Tests
============================================================
  ✓ All 403 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% ✅
j2735_c_generator_wire_format.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_get.py 100% ✅
test_sequence_has_extension.py 100% ✅
test_sequence_has_field.py 100% ✅
test_sequence_internal_off.py 100% ✅
test_sequence_internal_opt.py 100% ✅
test_sequence_internal_prefix_bits.py 100% ✅
test_sequence_internal_width.py 100% ✅
test_sequence_root_size.py 100% ✅
test_sequence_size_func.py 100% ✅
test_wire_format_variants.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% ✅
test_wire_format_templates.py 100% ✅
j2735_spec_constraints.py 99% ✅
j2735_spec_parser.py 99% ✅
conftest.py 97% ✅
test_uper_constraint.py 92% ✅
run_tests.py 83% ⚠️
j2735_c_generator_data_frame.py 65% ❌
j2735_c_generator_data_element.py 59% ❌
j2735.py 22% ❌
Details (3237 statements, 60 missed)
Module Stmts Miss Missing Lines
j2735_c_generator_bitwidth_constants.py 13 0 -
j2735_c_generator_jinja.py 53 0 -
j2735_c_generator_size_constants.py 11 0 -
j2735_c_generator_wire_format.py 33 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 65 0 -
test_sequence_get.py 55 0 -
test_sequence_has_extension.py 40 0 -
test_sequence_has_field.py 46 0 -
test_sequence_internal_off.py 54 0 -
test_sequence_internal_opt.py 46 0 -
test_sequence_internal_prefix_bits.py 52 0 -
test_sequence_internal_width.py 48 0 -
test_sequence_root_size.py 48 0 -
test_sequence_size_func.py 62 0 -
test_wire_format_variants.py 225 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 -
test_wire_format_templates.py 373 1 736
j2735_spec_constraints.py 409 4 130, 143, 379, 1562
j2735_spec_parser.py 272 3 555, 586, 851
conftest.py 66 2 579, 622
test_uper_constraint.py 26 2 51, 56
run_tests.py 75 13 51, 93, 97, 98, 99, 134, 135, 142, 168, 169, ... (+3 more)
j2735_c_generator_data_frame.py 20 7 71, 72, 73, 75, 76, 77, 111
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 56 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

CI Report

Commit: 835e84a5ad38b0e41eba5be62ca33d6a852125c1


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 3% 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 12% 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 14% 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 17% 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 21% 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 25% 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 29% 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 33% 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 38% 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 40% 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 44% 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 49% 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 51% 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 54% 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 56% 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 58% 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 60% 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 66% 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 68% 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 69% done
Checking J2735_run_tests.c ...
Checking J2735_run_tests.c: __GNUC__=1...
24/29 files checked 70% done
Checking J2735_UPER_test.c ...
Checking J2735_UPER_test.c: __GNUC__=1...
25/29 files checked 76% done
Checking J2735_internal_DE_VehicleEventFlags_test.c ...
Checking J2735_internal_DE_VehicleEventFlags_test.c: __GNUC__=1...
26/29 files checked 89% done
Checking J2735_internal_DF_BSMcoreData_test.c ...
Checking J2735_internal_DF_BSMcoreData_test.c: __GNUC__=1...
27/29 files checked 92% done
Checking J2735_internal_DF_IntersectionReferenceID_test.c ...
Checking J2735_internal_DF_IntersectionReferenceID_test.c: __GNUC__=1...
28/29 files checked 95% 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:388:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:391:test_bsm_core_data_latitude_negative_min:PASS
J2735_run_tests.c:392:test_bsm_core_data_latitude_positive_max:PASS
J2735_run_tests.c:393:test_bsm_core_data_steering_angle_negative:PASS
J2735_run_tests.c:394:test_bsm_core_data_steering_angle_positive_max:PASS
J2735_run_tests.c:397:test_bsm_core_data_misaligned_access:PASS
J2735_run_tests.c:342:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:343:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:346:test_intersection_reference_id_boundary_min:PASS
J2735_run_tests.c:347:test_intersection_reference_id_boundary_max:PASS
J2735_run_tests.c:348:test_intersection_reference_id_absent_region_max_id:PASS
J2735_run_tests.c:351:test_intersection_reference_id_misaligned_access:PASS
J2735_run_tests.c:434:test_path_prediction_no_extension:PASS
J2735_run_tests.c:435:test_path_prediction_with_extension:PASS
J2735_run_tests.c:436:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:439:test_path_prediction_radius_boundary_min:PASS
J2735_run_tests.c:440:test_path_prediction_radius_boundary_max:PASS
J2735_run_tests.c:441:test_path_prediction_radius_zero:PASS
J2735_run_tests.c:444:test_path_prediction_misaligned_access: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

-----------------------
76 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:388:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:391:test_bsm_core_data_latitude_negative_min:PASS
J2735_run_tests.c:392:test_bsm_core_data_latitude_positive_max:PASS
J2735_run_tests.c:393:test_bsm_core_data_steering_angle_negative:PASS
J2735_run_tests.c:394:test_bsm_core_data_steering_angle_positive_max:PASS
J2735_run_tests.c:397:test_bsm_core_data_misaligned_access:PASS
J2735_run_tests.c:342:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:343:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:346:test_intersection_reference_id_boundary_min:PASS
J2735_run_tests.c:347:test_intersection_reference_id_boundary_max:PASS
J2735_run_tests.c:348:test_intersection_reference_id_absent_region_max_id:PASS
J2735_run_tests.c:351:test_intersection_reference_id_misaligned_access:PASS
J2735_run_tests.c:434:test_path_prediction_no_extension:PASS
J2735_run_tests.c:435:test_path_prediction_with_extension:PASS
J2735_run_tests.c:436:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:439:test_path_prediction_radius_boundary_min:PASS
J2735_run_tests.c:440:test_path_prediction_radius_boundary_max:PASS
J2735_run_tests.c:441:test_path_prediction_radius_zero:PASS
J2735_run_tests.c:444:test_path_prediction_misaligned_access: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

-----------------------
76 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
==2789== Memcheck, a memory error detector
==2789== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==2789== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==2789== Command: /home/runner/work/J2735-High-Performance-Toolkit/J2735-High-Performance-Toolkit/build/J2735_test_valgrind
==2789== 
J2735_run_tests.c:388:test_bsm_core_data_fixed_data:PASS
J2735_run_tests.c:391:test_bsm_core_data_latitude_negative_min:PASS
J2735_run_tests.c:392:test_bsm_core_data_latitude_positive_max:PASS
J2735_run_tests.c:393:test_bsm_core_data_steering_angle_negative:PASS
J2735_run_tests.c:394:test_bsm_core_data_steering_angle_positive_max:PASS
J2735_run_tests.c:397:test_bsm_core_data_misaligned_access:PASS
J2735_run_tests.c:342:test_intersection_reference_id_optional_field_absent:PASS
J2735_run_tests.c:343:test_intersection_reference_id_optional_field_present:PASS
J2735_run_tests.c:346:test_intersection_reference_id_boundary_min:PASS
J2735_run_tests.c:347:test_intersection_reference_id_boundary_max:PASS
J2735_run_tests.c:348:test_intersection_reference_id_absent_region_max_id:PASS
J2735_run_tests.c:351:test_intersection_reference_id_misaligned_access:PASS
J2735_run_tests.c:434:test_path_prediction_no_extension:PASS
J2735_run_tests.c:435:test_path_prediction_with_extension:PASS
J2735_run_tests.c:436:test_path_prediction_signed_negative:PASS
J2735_run_tests.c:439:test_path_prediction_radius_boundary_min:PASS
J2735_run_tests.c:440:test_path_prediction_radius_boundary_max:PASS
J2735_run_tests.c:441:test_path_prediction_radius_zero:PASS
J2735_run_tests.c:444:test_path_prediction_misaligned_access: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

-----------------------
76 Tests 0 Failures 0 Ignored 
OK
==2789== 
==2789== HEAP SUMMARY:
==2789==     in use at exit: 0 bytes in 0 blocks
==2789==   total heap usage: 1 allocs, 1 frees, 4,096 bytes allocated
==2789== 
==2789== All heap blocks were freed -- no leaks are possible
==2789== 
==2789== For lists of detected and suppressed errors, rerun with: -s
==2789== 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

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 Frame SEQUENCE templates and enforces consistent J2735_INTERNAL_* naming for all internal macros. It follows PR #3's pattern of type-specific template architecture.

Changes:

  • Renamed all internal macros to use J2735_INTERNAL_ prefix (OFF, OPT, PREFIX_BITS, ROOT_SIZE_BITS, WIDTH)
  • Redesigned wire format API from byte-level ByteSegment/compute_wire_format() to high-level WireVariant/get_sequence_variants()
  • Modularized templates: split monolithic assemble_df.j2 into focused assemble_df_sequence.j2 with new sub-templates (asn1_definition.j2, wire_format_table.j2, wire_format_compact.j2, wire_format_section.j2)
  • Renamed all Jinja filters with filter_ prefix and added filter_is_signed and filter_format_range
  • Added comprehensive Python test coverage (~2,100 lines across 8 new test files)
  • Enhanced C tests with boundary value and misalignment tests
  • Added Doxyfile for API documentation generation

Reviewed changes

Copilot reviewed 46 out of 48 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tools/j2735_c_generator_wire_format.py Complete redesign from byte-level to variant-based wire format generation
tools/j2735_c_generator_jinja.py Filter renaming and two new filters for signed detection and range formatting
tools/j2735_c_generator_data_frame.py Updated to use new wire format API
tools/templates/assemble_df_sequence.j2 New focused template for SEQUENCE types only
tools/templates/wire_format_*.j2 Three new templates for wire format rendering (section, table, compact)
tools/templates/asn1_definition.j2 New template for ASN.1 definition blocks
tools/templates/sequence/sequence_internal_*.j2 Six templates renamed to match _internal_ convention
tools/tests/conftest.py Extensive improvements with synthetic type builders and enhanced mock specs
tools/tests/c_generator/test_wire_format_*.py Two new comprehensive test files replacing old byte-level tests
src/J2735_internal_DF_*.h Regenerated headers with new naming convention and improved documentation
tests/J2735_internal_DF__test. Enhanced with boundary and misalignment tests
Doxyfile New configuration for API documentation

@xqgex xqgex merged commit 19008ae into main Feb 16, 2026
28 checks passed
@xqgex xqgex deleted the df_sequence branch February 16, 2026 16:59
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

Comments