#include #include #include "serif/discretization/domain/physical_domains.hpp" #include "serif/discretization/domain/schema/concepts.hpp" #include "serif/discretization/domain/schema/schemas.hpp" #include "serif/discretization/domain/types.hpp" #include "serif/tests/test_tags.hpp" namespace domain = serif::discretization::domain; namespace schema = domain::schema; TEST_CASE( "Core Envelope Vacuum Schema Exposes Exact Compile Time And Runtime " "Metadata", tags::unit &tags::mesh &tags::utils &tags::domain ) { using SchemaT = schema::CoreEnvelopeVacuumDomainSchema; STATIC_REQUIRE(schema::IsSchema); STATIC_REQUIRE(SchemaT::domain_id_count == 3); STATIC_REQUIRE(SchemaT::boundary_id_count == 2); STATIC_REQUIRE(SchemaT::relation_count == 7); constexpr auto domainDescriptors = SchemaT::domain_descriptors(); constexpr auto boundaryDescriptors = SchemaT::boundary_descriptors(); STATIC_REQUIRE(domainDescriptors[0].name == std::string_view{"core"}); STATIC_REQUIRE(domainDescriptors[0].ID == 1); STATIC_REQUIRE(domainDescriptors[1].name == std::string_view{"envelope"}); STATIC_REQUIRE(domainDescriptors[1].ID == 2); STATIC_REQUIRE(domainDescriptors[2].name == std::string_view{"vacuum"}); STATIC_REQUIRE(domainDescriptors[2].ID == 3); STATIC_REQUIRE(boundaryDescriptors[0].name == std::string_view{"stellar_surface"}); STATIC_REQUIRE(boundaryDescriptors[0].ID == 1); STATIC_REQUIRE(boundaryDescriptors[1].name == std::string_view{"infinity_surface"}); STATIC_REQUIRE(boundaryDescriptors[1].ID == 2); STATIC_REQUIRE(SchemaT::template contains_domain()); STATIC_REQUIRE(SchemaT::template contains_domain()); STATIC_REQUIRE(SchemaT::template contains_domain()); STATIC_REQUIRE(SchemaT::template domain_id_belongs_to(1)); STATIC_REQUIRE(SchemaT::template domain_id_belongs_to(2)); STATIC_REQUIRE_FALSE(SchemaT::template domain_id_belongs_to(3)); STATIC_REQUIRE(SchemaT::template domain_id_belongs_to(1)); STATIC_REQUIRE(SchemaT::template domain_id_belongs_to(2)); STATIC_REQUIRE(SchemaT::template domain_id_belongs_to(3)); STATIC_REQUIRE(SchemaT::template domain_id() == 1); STATIC_REQUIRE(SchemaT::template domain_id() == 2); STATIC_REQUIRE(SchemaT::template domain_id() == 3); STATIC_REQUIRE(SchemaT::template contains_boundary()); STATIC_REQUIRE(SchemaT::template contains_boundary()); STATIC_REQUIRE(SchemaT::template boundary_id() == 1); STATIC_REQUIRE(SchemaT::template boundary_id() == 2); CHECK(true); }