Mirror the new test/io tree in TOPICS so Pkg.test and topic filtering pick up
WriteVTK coverage after mesh and before quadrature.
- Insert "io" after "mesh" in the TOPICS constant ordering
The default harness loads shared helpers and smoke checks before topic
includes, registers poroelastic and thermo_poroelastic, drops the retired IO
topic, and removes the orphaned ASCII fixture.
- Add zero_alloc_helpers.jl, test_api_contract.jl, test_pkg_hygiene.jl, and
test_inference_smoke.jl included once from runtests.jl
- Extend TOPICS; remove io; clarify test_args accepts topic names only
- Delete test/testdata/cantilever_beam.msh
Replace hand-inlined topic tests with `TOPICS` discovery, optional ARGS-based
filtering, and interface smoke checks required by the new mesh stack.
- SPDX-header the runner and assert `AbstractInterfaceMesh` / `InterfaceMesh` exist.
- `include(joinpath(topic, \"runtests.jl\"))` for every mirrored topic directory.
- Drop obsolete inline includes for retired paths; note legacy tests live outside CI.
Add test includes for new architecture components: fields, physics,
element interpolation, materials, topology, and validation.
- Add LocalField type test
- Add fields test suite (test_local_field.jl)
- Add physics test suite (test_strain.jl)
- Add element interpolation test suite (test_interpolate_local_fields.jl)
- Add material test suites (state variables, traits, global cache, plasticity, workspace)
- Add topology test suites (segments, triangles, quadrilaterals, entities, etc.)
- Add validation test (test_plasticity_simple.jl)
- Comment out obsolete topology type extraction test
Created test/domains/continuum/runtests.jl:
- Test material trait system (6 tests)
* LinearElastic: StatelessConstantTangent, !needs_deformation, !needs_state
* NeoHookean: StatelessStrainDependent, needs_deformation, !needs_state
* PerfectPlasticity: StatefulStrainDependent, needs_deformation, needs_state
- Include zero-allocation tests (27 tests)
* Verify 0 bytes for LinearElastic integration
* Verify 0 bytes for NeoHookean integration
* Test full assembly loop allocations
- Include type stability tests (15 tests)
* Verify PreparedElement type stability
* Verify compute_block! type stability
* Verify trait dispatch type stability
Updated test/runtests.jl:
- Include test/domains/continuum/runtests.jl in main test suite
- Automatically run on every test invocation
- Ensures zero-allocation property maintained
- Ensures material traits work correctly
Updated test/domains/continuum/test_type_stability.jl:
- Adapt to new generic integration API
- Test prepare_element!, compute_block!, compute_all_blocks!
- Verify type stability for both LinearElastic and NeoHookean
- Test material trait helper functions
Test Results:
- 57 tests passing (all tests)
- 33 continuum domain tests (including new trait tests)
- Zero-allocation verified for LinearElastic AND NeoHookean
- Type stability confirmed for generic integration
- Backward compatibility maintained (cantilever test passes)
Why: Automated tests ensure the refactoring maintains performance properties
(zero allocations, type stability) while adding new functionality (traits).
- Replace long list of legacy `include(...)` tests with small smoke checks asserting core types exist
- Add a single validation include: `validation/test_cantilever_regression.jl`
- Note legacy tests moved to `test/broken/` for later migration
This reduces CI turn-around time while keeping a lightweight verification of core functionality. Full integration tests can be run explicitly.
- Implement compute_strain() for small strain tensor calculation
- Zero allocation with NTuple inputs and Tensors.jl
- Type stable (@inferred passes)
- Complete test suite with 4 test cases (uniaxial, shear, rigid body, performance)
- Performance validated: 0 allocations, ~110ns median
- Add to test suite in runtests.jl
- Export from JuliaFEM module
Resolves user story #0001
Heat transfer analysis is moved to its own package where the development continues. Two small modifications are needed for test files:
- Instead of `problem.properties.formulation`, we have two separate problems, `PlaneHeat` for two-dimensional problems and `Heat` for three-dimensional problems.
- Unnecessary prefixing of field names is changed. For example, now we simply have only "thermal conductivity" and not prefixed "temperature thermal conductivity".
- Remove some obsolete tests related to Field.
- Fixed a test checking is header information found from source files
(was using FactCheck and commented out).
- Add header information for all files (was missing from
materials_plasticity.jl)