#include #include "serif/discretization/domain/ids/boundary.hpp" #include "serif/discretization/domain/ids/domain.hpp" #include "serif/discretization/domain/ids/lists/lists.hpp" #include "serif/discretization/domain/types.hpp" #include "serif/tests/test_tags.hpp" #include "serif/tests/discritization/domain/domain_test_utils.hpp" namespace domain = serif::discretization::domain; namespace ids = domain::ids; TEST_CASE( "Material Lists Reject Duplicate Ids And Duplicate Semantic Domains", tags::unit &tags::mesh &tags::utils &tags::domain ) { STATIC_REQUIRE( domain_test_utils::CanFormDomainIDList< ids::DomainID, ids::DomainID> ); STATIC_REQUIRE_FALSE( domain_test_utils::CanFormDomainIDList< ids::DomainID, ids::DomainID> ); STATIC_REQUIRE_FALSE( domain_test_utils::CanFormDomainIDList< ids::DomainID, ids::DomainID> ); /* * The schema intentionally imposes no convention on the * numerical range or indexing scheme used by a mesh producer. */ STATIC_REQUIRE( domain_test_utils::CanFormDomainIDList< ids::DomainID, ids::DomainID, ids::DomainID> ); CHECK(true); } TEST_CASE( "Boundary Lists Reject Duplicate Ids And Duplicate Semantic Boundaries", tags::unit &tags::mesh &tags::utils &tags::domain ) { STATIC_REQUIRE( domain_test_utils::CanFormBoundaryIDList< ids::BoundaryID, ids::BoundaryID> ); STATIC_REQUIRE_FALSE( domain_test_utils::CanFormBoundaryIDList< ids::BoundaryID, ids::BoundaryID> ); STATIC_REQUIRE_FALSE( domain_test_utils::CanFormBoundaryIDList< ids::BoundaryID, ids::BoundaryID> ); STATIC_REQUIRE( domain_test_utils::CanFormBoundaryIDList< ids::BoundaryID, ids::BoundaryID> ); CHECK(true); }