mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-12 22:33:19 +00:00
555c506f17
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).
49 lines
1.5 KiB
Julia
49 lines
1.5 KiB
Julia
# This file is a part of JuliaFEM.
|
|
# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md
|
|
|
|
using JuliaFEM, Test
|
|
|
|
@testset "JuliaFEM.jl" begin
|
|
@testset "Package loads" begin
|
|
@test isdefined(JuliaFEM, :AbstractBasis)
|
|
@test isdefined(JuliaFEM, :AbstractMesh)
|
|
@test isdefined(JuliaFEM, :AbstractTopology)
|
|
@test isdefined(JuliaFEM, :AbstractMaterial)
|
|
@test isdefined(JuliaFEM, :AbstractPhysics)
|
|
@test isdefined(JuliaFEM, :AbstractField)
|
|
@test isdefined(JuliaFEM, :AbstractFormulation)
|
|
end
|
|
|
|
@testset "Basic types instantiate" begin
|
|
# Test that basic types can be referenced
|
|
@test AbstractBasis isa Type
|
|
@test AbstractMesh isa Type
|
|
@test AbstractTopology isa Type
|
|
@test AbstractMaterial isa Type
|
|
@test AbstractPhysics isa Type
|
|
@test AbstractField isa Type
|
|
@test AbstractFormulation isa Type
|
|
end
|
|
|
|
@testset "Concrete types exist" begin
|
|
# Test that concrete implementations exist
|
|
@test Mesh isa Type
|
|
@test LinearElastic isa Type
|
|
@test Hex8 isa Type
|
|
@test Tet4 isa Type
|
|
end
|
|
|
|
# Domain-specific tests
|
|
@testset "Continuum Domain" begin
|
|
include("domains/continuum/runtests.jl")
|
|
end
|
|
|
|
# Validation tests
|
|
include("validation/test_cantilever_regression.jl")
|
|
end
|
|
|
|
# Note: All legacy tests have been moved to test/broken/
|
|
# They need to be updated to work with the new modular architecture.
|
|
# To run a specific test, use:
|
|
# include("test/broken/test_name.jl")
|