9#include <doctest/doctest.h>
15 class KetDerivedCreator;
17 class KetDerived :
public Ket {
18 friend class KetDerivedCreator;
22 KetDerived(Private ,
double f,
double m,
Parity p) :
Ket(0, f, m, p) {}
23 std::string get_label()
const override {
return "my_label"; }
24 std::shared_ptr<KetDerived>
25 get_ket_for_different_quantum_number_m(
double new_quantum_number_m)
const {
28 return std::make_shared<KetDerived>(ket);
32 class KetDerivedCreator {
34 KetDerivedCreator(
double f,
double m,
Parity p) : f(f), m(m), p(p) {}
35 std::shared_ptr<const KetDerived> create()
const {
36 return std::make_shared<const KetDerived>(KetDerived::Private(), f, m, p);
45 auto ket = KetDerivedCreator(2.0F, 3.0F,
Parity::EVEN).create();
50 DOCTEST_CHECK(ss.str() ==
"my_label");
53 DOCTEST_MESSAGE(
"Ket: ", *ket);
DOCTEST_TEST_CASE("create a basis for strontium 88")