Skip to content

[#114]:amelia:build, cartesian product I/O test machinery with extended storage_representation oracle#116

Merged
steven-varga merged 4 commits into
stagingfrom
114-test-cartesian-product-io-machinery
May 8, 2026
Merged

[#114]:amelia:build, cartesian product I/O test machinery with extended storage_representation oracle#116
steven-varga merged 4 commits into
stagingfrom
114-test-cartesian-product-io-machinery

Conversation

@steven-varga
Copy link
Copy Markdown
Collaborator

Summary

  • Extends storage_representation_t with scalar and c_array enum values; adds SFINAE specialisation for arithmetic/enum types and explicit specialisations for T[N], T[N][M], T[N][M][P]
  • Adds std::vector<T> and std::array<T,N> specialisations (were missing — fell through to unsupported, causing them to be silently filtered from the test matrix)
  • Creates test/support/types.hpp — Cartesian product type machinery: numerical_t, pod_t (with std::hash and comparators), filter_t<>, bind_all_t<>, is_supported<>, io_types, and ported name<T> specialisations for all containers
  • Creates test/support/fixture.hpp — RAII HDF5 file fixture for doctest
  • Creates test/H5Dio.cppTEST_CASE_TEMPLATE_DEFINE dispatcher over the full filtered io_types; round-trip bodies are WARN stubs pending issue refactor, dataset create/read/write to consume the new type engine #89
  • Adds H5Dio test target to test/CMakeLists.txt
  • Adds regression tests to test/H5Tmeta.cpp for new scalar, c_array, vector<T>, and array<T,N> oracle values

Test plan

  • Existing H5Tmeta tests pass (no regression on trait classification)
  • H5Dio compiles and runs — all cases emit WARN stubs, no failures
  • storage_representation_v<int> == scalar
  • storage_representation_v<int[4]> == c_array
  • storage_representation_v<std::vector<int>> == linear_value_dataset
  • storage_representation_v<std::vector<std::vector<int>>> == ragged_vlen_dataset (precedence holds)
  • storage_representation_v<std::vector<std::string>> == vlen_text_dataset (precedence holds)

Notes

Closes #114

🤖 Generated with Claude Code

@steven-varga steven-varga force-pushed the 114-test-cartesian-product-io-machinery branch from 7751cd8 to bf8b5a6 Compare May 8, 2026 16:07
@steven-varga steven-varga changed the title [#114] build Cartesian product I/O test machinery with extended storage_representation oracle [#114]:amelia:build, cartesian product I/O test machinery with extended storage_representation oracle May 8, 2026
steven-varga and others added 2 commits May 8, 2026 18:43
Remove duplicate h5::test::name<T> base template from common.hpp;
types.hpp:175 is now the canonical definition and common.hpp includes it.

Replace WARN("..." << type_name) with WARN_MESSAGE(false, "..." << type_name)
in H5Dio.cpp; doctest forbids << inside WARN() expression context.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…taset

std::vector<bool> is a bit-packing specialization with no contiguous bool*
storage; add explicit unsupported specialization for storage_representation_impl
and false_type specialization for is_contiguous to prevent the generic
vector<T,A> match from firing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@steven-varga steven-varga merged commit 28a48ae into staging May 8, 2026
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