// SPDX-FileCopyrightText: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org>
//
// SPDX-License-Identifier: MPL-2.0

// This header file is automatically generated. DO NOT modify it manually!

// clang-format off
#pragma once

#include "../{{ name }}.hpp" // NOLINT

#include <cstddef>
{% autoescape false %}
namespace power_grid_model::test {

{% for attribute_class in classes -%}

{% for specification in attribute_class.specification_names -%}
// static asserts for {{ specification }}
static_assert(std::is_standard_layout_v<{{ specification }}>);
{% for base_class, base_attributes in attribute_class.base_attributes.items() -%}
// static asserts for conversion of {{ specification }} to {{ base_class }}
static_assert(std::alignment_of_v<{{ specification }}> >= std::alignment_of_v<{{ attribute_class.base }}>);
{% for attribute in base_attributes -%}
static_assert(std::same_as<decltype({{ specification }}::{{ attribute.names }}), decltype({{ base_class }}::{{ attribute.names }})>);
{% endfor -%}
{% for attribute in base_attributes -%}
static_assert(offsetof({{ specification }}, {{ attribute.names }}) == offsetof({{ base_class }}, {{ attribute.names }}));
{% endfor -%}
{% endfor -%}
{% endfor %}
{% endfor %}

} // namespace power_grid_model::test

// clang-format on
{% endautoescape %}
