diff --git a/test/basis/test_basis_description.jl b/test/basis/test_basis_description.jl new file mode 100644 index 0000000..de12d1f --- /dev/null +++ b/test/basis/test_basis_description.jl @@ -0,0 +1,47 @@ +# SPDX-FileCopyrightText: 2015-2026 Jukka Aho +# SPDX-License-Identifier: MIT + +using Test +using JuliaFEM +using Tensors + +struct _CoverageDummyBasis <: AbstractBasis end + +@testset "Basis description API" begin + desc = JuliaFEM.VandermondeBasisDescription( + name="unit-test", + description="coverage", + topology=Triangle{3}, + family=Lagrange{1}, + ansatz=(), + ) + @test JuliaFEM.basis_family(desc) === Lagrange{1} + @test JuliaFEM.basis_topology(desc) === Triangle{3} + @test JuliaFEM.basis_order(desc) === 1 + + desc_s = JuliaFEM.VandermondeBasisDescription( + name="ser", + description="coverage", + topology=Quadrilateral{4}, + family=Serendipity{2}, + ansatz=(), + ) + @test JuliaFEM.basis_order(desc_s) === 2 + + desc_bad = JuliaFEM.VandermondeBasisDescription( + name="bad", + description="coverage", + topology=Triangle{3}, + family=_CoverageDummyBasis, + ansatz=(), + ) + @test_throws ErrorException JuliaFEM.basis_order(desc_bad) + + xi = Vec{2}((0.2, 0.25)) + tri = Triangle{3}() + lag = Lagrange{1}() + vals = get_basis_functions(tri, lag, xi) + dvals = get_basis_derivatives(tri, lag, xi) + @test get_basis_function(tri, lag, xi, 1) == vals[1] + @test get_basis_derivative(tri, lag, xi, 2) == dvals[2] +end