From 2c4d10ec7718a680f58f0bf998b37314420f3b2f Mon Sep 17 00:00:00 2001 From: ralfulrich <ralf.ulrich@kit.edu> Date: Tue, 26 Jan 2021 13:00:32 +0100 Subject: [PATCH] implemented Max's comments --- .../detail/framework/geometry/FourVector.inl | 2 +- corsika/detail/framework/geometry/Point.inl | 2 +- corsika/detail/framework/geometry/Vector.inl | 2 +- corsika/detail/media/WeightProvider.inl | 2 +- corsika/framework/process/BaseProcess.hpp | 22 +++++- .../framework/process/ContinuousProcess.hpp | 3 - .../process/ContinuousProcessIndex.hpp | 6 ++ corsika/framework/process/ProcessSequence.hpp | 72 +++++++++---------- corsika/framework/process/ProcessTraits.hpp | 28 ++++---- .../process/SwitchProcessSequence.hpp | 61 +++++----------- modules/conex | 2 +- modules/data | 2 +- tests/framework/testGeometry.cpp | 13 ++-- tests/framework/testProcessSequence.cpp | 32 ++++----- 14 files changed, 119 insertions(+), 130 deletions(-) diff --git a/corsika/detail/framework/geometry/FourVector.inl b/corsika/detail/framework/geometry/FourVector.inl index 6c0a039e5..135790bfc 100644 --- a/corsika/detail/framework/geometry/FourVector.inl +++ b/corsika/detail/framework/geometry/FourVector.inl @@ -95,7 +95,7 @@ namespace corsika { template <typename TTimeType, typename TSpaceVecType> typename FourVector<TTimeType, TSpaceVecType>::norm_type - FourVector<TTimeType, TSpaceVecType>::operator*(FourVector const& b) { + FourVector<TTimeType, TSpaceVecType>::operator*(FourVector const& b) { if constexpr (std::is_same<time_type, decltype(std::declval<space_type>() / meter * second)>::value) return timeLike_ * b.timeLike_ * constants::cSquared - spaceLike_.norm(); diff --git a/corsika/detail/framework/geometry/Point.inl b/corsika/detail/framework/geometry/Point.inl index e424812f0..45c6900f5 100644 --- a/corsika/detail/framework/geometry/Point.inl +++ b/corsika/detail/framework/geometry/Point.inl @@ -97,7 +97,7 @@ namespace corsika { inline std::ostream& operator<<(std::ostream& os, corsika::Point const& p) { auto const& qv = p.getCoordinates(); - os << qv << " m"; + os << qv << " (ref:" << fmt::ptr(p.getCoordinateSystem()) << ")"; return os; } diff --git a/corsika/detail/framework/geometry/Vector.inl b/corsika/detail/framework/geometry/Vector.inl index 2ecc82e65..ff968693f 100644 --- a/corsika/detail/framework/geometry/Vector.inl +++ b/corsika/detail/framework/geometry/Vector.inl @@ -232,7 +232,7 @@ namespace corsika { inline std::ostream& operator<<(std::ostream& os, corsika::Vector<TDimension> const& v) { auto const& qv = v.getComponents(); - os << qv; + os << qv << " (ref:" << fmt::ptr(v.getCoordinateSystem()) << ")"; return os; } diff --git a/corsika/detail/media/WeightProvider.inl b/corsika/detail/media/WeightProvider.inl index af9849aa3..c075b2363 100644 --- a/corsika/detail/media/WeightProvider.inl +++ b/corsika/detail/media/WeightProvider.inl @@ -20,7 +20,7 @@ namespace corsika { template <class AConstIterator, class BConstIterator> typename WeightProviderIterator<AConstIterator, BConstIterator>::value_type - WeightProviderIterator<AConstIterator, BConstIterator>::operator*() const { + WeightProviderIterator<AConstIterator, BConstIterator>::operator*() const { return ((*aIter_) * (*bIter_)).magnitude(); } diff --git a/corsika/framework/process/BaseProcess.hpp b/corsika/framework/process/BaseProcess.hpp index 55572291c..b8c96a54f 100644 --- a/corsika/framework/process/BaseProcess.hpp +++ b/corsika/framework/process/BaseProcess.hpp @@ -8,7 +8,7 @@ #pragma once -//#include <corsika/framework/process/ProcessTraits.hpp> +#include <corsika/framework/process/ProcessTraits.hpp> #include <type_traits> @@ -43,8 +43,28 @@ namespace corsika { const TDerived& ref() const { return static_cast<const TDerived&>(*this); } public: + //! Default number of processes ist just one, obviously + static unsigned int constexpr getNumberOfProcesses() { return 1; } + // Base processor type for use in other template classes using process_type = TDerived; }; + /** + * ProcessTraits specialization + **/ + template <typename TProcess> + struct is_process< + TProcess, + std::enable_if_t<std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess>>, + typename std::decay_t<TProcess>>>> + : std::true_type {}; + + template <typename TProcess, int N> + struct count_processes<TProcess, N, + typename std::enable_if_t<is_process_v<TProcess> && + !is_process_sequence_v<TProcess>>> { + static unsigned int constexpr count = N + 1; + }; + } // namespace corsika diff --git a/corsika/framework/process/ContinuousProcess.hpp b/corsika/framework/process/ContinuousProcess.hpp index 521cb0ee2..51d73d332 100644 --- a/corsika/framework/process/ContinuousProcess.hpp +++ b/corsika/framework/process/ContinuousProcess.hpp @@ -64,9 +64,6 @@ namespace corsika { template <typename TProcess, int N> struct count_continuous<TProcess, N, typename std::enable_if_t<is_continuous_process_v<TProcess>>> { - // std::is_base_of_v< - // ContinuousProcess<typename std::decay_t<TProcess>>, - // typename std::decay_t<TProcess>>>> { enum { count = N + 1 }; }; diff --git a/corsika/framework/process/ContinuousProcessIndex.hpp b/corsika/framework/process/ContinuousProcessIndex.hpp index 4cba88fde..bc2617d2b 100644 --- a/corsika/framework/process/ContinuousProcessIndex.hpp +++ b/corsika/framework/process/ContinuousProcessIndex.hpp @@ -10,6 +10,12 @@ namespace corsika { + /** + * To index individual processes (continuous processes) inside a + * ProcessSequence. + * + **/ + class ContinuousProcessIndex { public: ContinuousProcessIndex(int const id) diff --git a/corsika/framework/process/ProcessSequence.hpp b/corsika/framework/process/ProcessSequence.hpp index d344673c6..d909d0715 100644 --- a/corsika/framework/process/ProcessSequence.hpp +++ b/corsika/framework/process/ProcessSequence.hpp @@ -28,26 +28,19 @@ namespace corsika { - /* - template <typename TProcess1, typename TProcess2 = NullModel, int IndexStart = 0, - int IndexProcess1 = count_continuous<TProcess1>::count, - int IndexProcess2 = - count_continuous<TProcess1, count_continuous<TProcess2>::count>::count> - class ProcessSequence; - */ - - /** - * traits class to count ContinuousProcess-es, specialized for ProcessSequence-es - **/ - // template <typename TProcess1, typename TProcess2, int N> - // struct count_continuous<ProcessSequence<TProcess1, TProcess2>, N> { - // enum { count = N + ProcessSequence<TProcess1,TProcess2>::nContinuous }; - //}; - template <typename TProcess, int N> struct count_continuous<TProcess, N, typename std::enable_if_t<is_process_sequence_v<TProcess>>> { - enum { count = N + std::decay_t<TProcess>::nContinuous }; + static unsigned int constexpr count = + N + std::decay_t<TProcess>::getNumberOfProcesses(); + }; + + template <typename TProcess, int N> + struct count_processes<TProcess, N, + typename std::enable_if_t<is_process_v<TProcess> && + is_process_sequence_v<TProcess>>> { + static unsigned int constexpr count = + N + std::decay_t<TProcess>::getNumberOfProcesses(); }; /** @@ -69,17 +62,15 @@ namespace corsika { * Template parameters: * - TProcess1 is of type BaseProcess, either a dedicatd process, or a ProcessSequence * - TProcess2 is of type BaseProcess, either a dedicatd process, or a ProcessSequence - * - IndexStart, IndexProcess1, IndexProcess2 are to count and index each + * - ProcessIndexOffset, IndexOfProcess1, IndexOfProcess2 are to count and index each *ContinuousProcess in the entire process-chain **/ - template <typename TProcess1, typename TProcess2 = NullModel, int IndexStart = 0, - int IndexProcess1 = count_continuous< - TProcess1, count_continuous<TProcess2, IndexStart>::count>::count, - int IndexProcess2 = count_continuous<TProcess2, IndexStart>::count> - // template <typename TProcess1, typename TProcess2, int IndexStart, int - // IndexProcess1, - // int IndexProcess2> + template <typename TProcess1, typename TProcess2 = NullModel, + int ProcessIndexOffset = 0, + int IndexOfProcess1 = count_processes< + TProcess1, count_processes<TProcess2, ProcessIndexOffset>::count>::count, + int IndexOfProcess2 = count_processes<TProcess2, ProcessIndexOffset>::count> class ProcessSequence : public BaseProcess<ProcessSequence<TProcess1, TProcess2>> { using process1_type = typename std::decay_t<TProcess1>; @@ -92,19 +83,14 @@ namespace corsika { static bool constexpr t2SwitchProcSeq = is_switch_process_sequence_v<process2_type>; // make sure only BaseProcess types TProcess1/2 are passed - static_assert(is_base_process_v<process1_type>, + static_assert(is_process_v<process1_type>, "can only use process derived from BaseProcess in " "ProcessSequence, for Process 1"); - static_assert(is_base_process_v<process2_type>, + static_assert(is_process_v<process2_type>, "can only use process derived from BaseProcess in " "ProcessSequence, for Process 2"); public: - /** - * static counter to uniquely index (count) all ContinuousProcess in sequence. - **/ - enum { nContinuous = IndexProcess1 }; - // resource management ProcessSequence() = delete; // only initialized objects ProcessSequence(ProcessSequence const&) = default; @@ -196,9 +182,16 @@ namespace corsika { TSecondaryView& view, [[maybe_unused]] InverseTimeType decay_inv_select, [[maybe_unused]] InverseTimeType decay_inv_sum = InverseTimeType::zero()); + /** + * static counter to uniquely index (count) all ContinuousProcess in switch sequence. + **/ + static unsigned int constexpr getNumberOfProcesses() { return numberOfProcesses_; } + private: TProcess1 A_; /// process/list A, this is a reference, if possible TProcess2 B_; /// process/list B, this is a reference, if possible + + static unsigned int constexpr numberOfProcesses_ = IndexOfProcess1; // static counter }; /** @@ -227,7 +220,7 @@ namespace corsika { template <typename... TProcesses, typename TProcess1> inline typename std::enable_if_t< - is_base_process_v<typename std::decay_t<TProcess1>>, + is_process_v<typename std::decay_t<TProcess1>>, ProcessSequence<TProcess1, decltype(make_sequence(std::declval<TProcesses>()...))>> make_sequence(TProcess1&& vA, TProcesses&&... vBs) { return ProcessSequence<TProcess1, @@ -244,11 +237,10 @@ namespace corsika { * \param vB needs to derive BaseProcess or ProcessSequence **/ template <typename TProcess1, typename TProcess2> - inline - typename std::enable_if_t<is_base_process_v<typename std::decay_t<TProcess1>> && - is_base_process_v<typename std::decay_t<TProcess2>>, - ProcessSequence<TProcess1, TProcess2>> - make_sequence(TProcess1&& vA, TProcess2&& vB) { + inline typename std::enable_if_t<is_process_v<typename std::decay_t<TProcess1>> && + is_process_v<typename std::decay_t<TProcess2>>, + ProcessSequence<TProcess1, TProcess2>> + make_sequence(TProcess1&& vA, TProcess2&& vB) { return ProcessSequence<TProcess1, TProcess2>(vA, vB); } @@ -261,7 +253,7 @@ namespace corsika { * \param vA needs to derive from BaseProcess or ProcessSequence **/ template <typename TProcess> - inline typename std::enable_if_t<is_base_process_v<typename std::decay_t<TProcess>>, + inline typename std::enable_if_t<is_process_v<typename std::decay_t<TProcess>>, ProcessSequence<TProcess, NullModel>> make_sequence(TProcess&& vA) { return ProcessSequence<TProcess, NullModel>(vA, NullModel()); @@ -274,7 +266,7 @@ namespace corsika { struct is_process_sequence<ProcessSequence<TProcess1, TProcess2>> : std::true_type { // only switch on for BaseProcesses template <typename std::enable_if_t< - is_base_process_v<TProcess1> && is_base_process_v<TProcess2>, int>> + is_process_v<TProcess1> && is_process_v<TProcess2>, int>> is_process_sequence() {} }; diff --git a/corsika/framework/process/ProcessTraits.hpp b/corsika/framework/process/ProcessTraits.hpp index 104a40711..b08318093 100644 --- a/corsika/framework/process/ProcessTraits.hpp +++ b/corsika/framework/process/ProcessTraits.hpp @@ -12,30 +12,18 @@ * \file ProcessTraits.hpp */ -//#include <corsika/framework/process/BaseProcess.hpp> -//#include <corsika/framework/process/ProcessSequence.hpp> -//#include <corsika/framework/process/SwitchProcessSequence.hpp> -//#include <corsika/framework/process/ContinuousProcess.hpp> - #include <type_traits> namespace corsika { /** - * A traits marker to identify BaseProcess + * A traits marker to identify BaseProcess, thus any type of process */ template <typename TProcess, typename Enable = void> - struct is_base_process : std::false_type {}; - - template <typename TProcess> - bool constexpr is_base_process_v = is_base_process<TProcess>::value; + struct is_process : std::false_type {}; template <typename TProcess> - struct is_base_process< - TProcess, - std::enable_if_t<std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess>>, - typename std::decay_t<TProcess>>>> - : std::true_type {}; + bool constexpr is_process_v = is_process<TProcess>::value; /** * A traits marker to identify ContinuousProcess @@ -79,7 +67,15 @@ namespace corsika { **/ template <typename TProcess, int N = 0, typename Enable = void> struct count_continuous { - enum { count = N }; + static unsigned int constexpr count = N; + }; + + /** + * traits class to count any type of Process, general version + **/ + template <typename TProcess, int N = 0, typename Enable = void> + struct count_processes { + static unsigned int constexpr count = N; }; } // namespace corsika diff --git a/corsika/framework/process/SwitchProcessSequence.hpp b/corsika/framework/process/SwitchProcessSequence.hpp index df951154a..dcf4b214e 100644 --- a/corsika/framework/process/SwitchProcessSequence.hpp +++ b/corsika/framework/process/SwitchProcessSequence.hpp @@ -30,32 +30,6 @@ namespace corsika { - /* - template <typename TProcess1, typename TProcess2, typename TSelect, int IndexStart = 0, - int IndexProcess1 = count_continuous<TProcess1>::count, - int IndexProcess2 = count_continuous<TProcess2>::count> - class SwitchProcessSequence; - */ - - /** - * traits class to count ContinuousProcess-es, specialized for ProcessSequence-es - **/ - - /* template <typename TProcess1, typename TProcess2, typename TSelect, int N> - struct count_continuous<SwitchProcessSequence<TProcess1, TProcess2, TSelect>, N> { - enum { - count = N + SwitchProcessSequence<TProcess1, TProcess2, TSelect>::nContinuous - }; - };*/ - - /* - template <typename TSProcess, int N> - struct count_continuous< - TSProcess, N, typename std::enable_if_t<is_switch_process_sequence_v<TSProcess>>> { - enum { count = N + TSProcess::nContinuous }; - }; - */ - /** * enum for the process switch selection: identify if First or * Second process branch should be used. @@ -87,16 +61,16 @@ namespace corsika { Template parameters: - TProcess1 is of type BaseProcess, either a dedicatd process, or a ProcessSequence - TProcess2 is of type BaseProcess, either a dedicatd process, or a ProcessSequence - - IndexStart, IndexProcess1, IndexProcess2 are to count and index each + - IndexFirstProcess, IndexOfProcess1, IndexOfProcess2 are to count and index each ContinuousProcess in the entire process-chain - See also class \sa ProcessSequence **/ - template <typename TProcess1, typename TProcess2, typename TSelect, int IndexStart = 0, - int IndexProcess1 = count_continuous<TProcess1, IndexStart>::count, - int IndexProcess2 = count_continuous<TProcess2, IndexProcess1>::count> + template <typename TProcess1, typename TProcess2, typename TSelect, + int IndexFirstProcess = 0, + int IndexOfProcess1 = count_processes<TProcess1, IndexFirstProcess>::count, + int IndexOfProcess2 = count_processes<TProcess2, IndexOfProcess1>::count> class SwitchProcessSequence : public BaseProcess<SwitchProcessSequence<TProcess1, TProcess2, TSelect>> { @@ -107,10 +81,10 @@ namespace corsika { static bool constexpr t2ProcSeq = is_process_sequence_v<process2_type>; // make sure only BaseProcess types TProcess1/2 are passed - static_assert(is_base_process_v<process1_type>, + static_assert(is_process_v<process1_type>, "can only use process derived from BaseProcess in " "SwitchProcessSequence, for Process 1"); - static_assert(is_base_process_v<process2_type>, + static_assert(is_process_v<process2_type>, "can only use process derived from BaseProcess in " "SwitchProcessSequence, for Process 2"); @@ -130,11 +104,6 @@ namespace corsika { "ProcessSequence 2"); public: - /** - * static counter to uniquely index (count) all ContinuousProcess in switch sequence. - **/ - enum { nContinuous = IndexProcess2 }; - // resource management SwitchProcessSequence() = delete; // only initialized objects SwitchProcessSequence(SwitchProcessSequence const&) = default; @@ -201,12 +170,19 @@ namespace corsika { TSecondaryView& view, [[maybe_unused]] InverseTimeType decay_inv_select, [[maybe_unused]] InverseTimeType decay_inv_sum = InverseTimeType::zero()); + /** + * static counter to uniquely index (count) all ContinuousProcess in switch sequence. + **/ + static unsigned int constexpr getNumberOfProcesses() { return numberOfProcesses_; } + private: TSelect select_; /// selector functor to switch between branch a and b, this is a /// reference, if possible TProcess1 A_; /// process branch a, this is a reference, if possible TProcess2 B_; /// process branch b, this is a reference, if possible + + static unsigned int constexpr numberOfProcesses_ = IndexOfProcess2; // static counter }; /** @@ -221,11 +197,10 @@ namespace corsika { **/ template <typename TProcess1, typename TProcess2, typename TSelect> - inline - typename std::enable_if_t<is_base_process_v<typename std::decay_t<TProcess1>> && - is_base_process_v<typename std::decay_t<TProcess2>>, - SwitchProcessSequence<TProcess1, TProcess2, TSelect>> - make_select(TProcess1&& vA, TProcess2&& vB, TSelect selector) { + inline typename std::enable_if_t<is_process_v<typename std::decay_t<TProcess1>> && + is_process_v<typename std::decay_t<TProcess2>>, + SwitchProcessSequence<TProcess1, TProcess2, TSelect>> + make_select(TProcess1&& vA, TProcess2&& vB, TSelect selector) { return SwitchProcessSequence<TProcess1, TProcess2, TSelect>(vA, vB, selector); } diff --git a/modules/conex b/modules/conex index 180215204..820f042b6 160000 --- a/modules/conex +++ b/modules/conex @@ -1 +1 @@ -Subproject commit 180215204035fa17c5f6cacb42588dca85d171ca +Subproject commit 820f042b6a055276d465437c74160ef7c199b646 diff --git a/modules/data b/modules/data index fb7577314..8b76a9ca2 160000 --- a/modules/data +++ b/modules/data @@ -1 +1 @@ -Subproject commit fb7577314e5e3c837fa5a3006dc4f3c0146cabf7 +Subproject commit 8b76a9ca2599cd0ce1f204b17362eb06bbcf5277 diff --git a/tests/framework/testGeometry.cpp b/tests/framework/testGeometry.cpp index a39201c04..e8847ee5e 100644 --- a/tests/framework/testGeometry.cpp +++ b/tests/framework/testGeometry.cpp @@ -26,18 +26,20 @@ using namespace corsika::testing; double constexpr absMargin = 1.0e-8; -TEST_CASE("transformations between CoordinateSystems") { +TEST_CASE("Geometry CoordinateSystems") { logging::set_level(logging::level::info); - corsika_logger->set_pattern("[%n:%^%-8l%$] custom pattern: %v"); + corsika_logger->set_pattern("[%n:%^%-8l%$] %v"); CoordinateSystemPtr rootCS = get_root_CoordinateSystem(); QuantityVector<length_d> const coordinates{0_m, 0_m, 0_m}; Point p1(rootCS, coordinates); + CORSIKA_LOG_INFO("Point p1={}", p1); QuantityVector<magnetic_flux_density_d> components{1. * tesla, 0. * tesla, 0. * tesla}; Vector<magnetic_flux_density_d> v1(rootCS, components); + CORSIKA_LOG_INFO("Vector<magnetic_flux_density_d> v1={}", v1); CHECK((p1.getCoordinates() - coordinates).getNorm().magnitude() == Approx(0).margin(absMargin)); @@ -46,6 +48,7 @@ TEST_CASE("transformations between CoordinateSystems") { SECTION("translations") { QuantityVector<length_d> const translationVector{0_m, 4_m, 0_m}; + CORSIKA_LOG_INFO("QuantityVector<length_d> translationVector={}", translationVector); CoordinateSystemPtr translatedCS = make_translation(rootCS, translationVector); @@ -184,7 +187,7 @@ TEST_CASE("transformations between CoordinateSystems") { } } -TEST_CASE("CoordinateSystem hirarchy") { +TEST_CASE("Geometry CoordinateSystem-hirarchy") { CoordinateSystemPtr rootCS = get_root_CoordinateSystem(); @@ -232,7 +235,7 @@ TEST_CASE("CoordinateSystem hirarchy") { CHECK((p1 - p6).getNorm().magnitude() == Approx(0).margin(absMargin)); } -TEST_CASE("Sphere") { +TEST_CASE("Geometry Sphere") { CoordinateSystemPtr const& rootCS = get_root_CoordinateSystem(); Point center(rootCS, {0_m, 3_m, 4_m}); Sphere sphere(center, 5_m); @@ -251,7 +254,7 @@ TEST_CASE("Sphere") { } } -TEST_CASE("Trajectories") { +TEST_CASE("Geometry Trajectories") { CoordinateSystemPtr rootCS = get_root_CoordinateSystem(); Point r0(rootCS, {0_m, 0_m, 0_m}); diff --git a/tests/framework/testProcessSequence.cpp b/tests/framework/testProcessSequence.cpp index 5ae3239e4..d2612bb88 100644 --- a/tests/framework/testProcessSequence.cpp +++ b/tests/framework/testProcessSequence.cpp @@ -297,7 +297,7 @@ struct DummyView { DummyData& parent() { return p_; } }; -TEST_CASE("Process Sequence General", "ProcessSequence") { +TEST_CASE("ProcessSequence General", "ProcessSequence") { logging::set_level(logging::level::info); corsika_logger->set_pattern("[%n:%^%-8l%$]: %v"); @@ -307,11 +307,11 @@ TEST_CASE("Process Sequence General", "ProcessSequence") { Process1 m1(0); const Process4 m4(3); - CHECK(is_base_process_v<Process1>); - CHECK_FALSE(is_base_process_v<DummyData>); - CHECK(is_base_process_v<decltype(m4)>); - CHECK(is_base_process_v<decltype(Decay1(1))>); - CHECK(is_base_process_v<decltype(ContinuousProcess3{3, 3_m})>); + CHECK(is_process_v<Process1>); + CHECK_FALSE(is_process_v<DummyData>); + CHECK(is_process_v<decltype(m4)>); + CHECK(is_process_v<decltype(Decay1(1))>); + CHECK(is_process_v<decltype(ContinuousProcess3{3, 3_m})>); } SECTION("Check construction") { @@ -326,8 +326,8 @@ TEST_CASE("Process Sequence General", "ProcessSequence") { CHECK(globalCount == 4); auto sequence1 = make_sequence(m1, m2, m3, m4); - CHECK(is_base_process_v<decltype(sequence1)>); - CHECK(is_base_process_v<decltype(m2)>); + CHECK(is_process_v<decltype(sequence1)>); + CHECK(is_process_v<decltype(m2)>); CHECK(is_process_sequence_v<decltype(sequence1)>); CHECK_FALSE(is_process_sequence_v<decltype(m2)>); CHECK_FALSE(is_switch_process_sequence_v<decltype(sequence1)>); @@ -471,7 +471,7 @@ TEST_CASE("Process Sequence General", "ProcessSequence") { } } -TEST_CASE("Switch Process Sequence", "ProcessSequence") { +TEST_CASE("SwitchProcessSequence", "ProcessSequence") { logging::set_level(logging::level::info); corsika_logger->set_pattern("[%n:%^%-8l%$]: %v"); @@ -692,7 +692,7 @@ TEST_CASE("Switch Process Sequence", "ProcessSequence") { } } -TEST_CASE("Continuous Process Indexing", "ProcessSequence") { +TEST_CASE("ProcessSequence Indexing", "ProcessSequence") { logging::set_level(logging::level::info); corsika_logger->set_pattern("[%n:%^%-8l%$]: %v"); @@ -750,12 +750,12 @@ TEST_CASE("Continuous Process Indexing", "ProcessSequence") { int const switch_seq_n = count_continuous<decltype(switch_seq)>::count; int const sequence3_n = count_continuous<decltype(sequence3)>::count; - CHECK(decltype(sequence1)::nContinuous == 1); - CHECK(count_continuous<decltype(sequence1)>::count == 1); - CHECK(count_continuous<decltype(sequence2)>::count == 2); - CHECK(switch_seq_n == 3); - CHECK(sequence3_n == 4); - CHECK(count_continuous<decltype(sequence4)>::count == 4); + CHECK(decltype(sequence1)::getNumberOfProcesses() == 3); + CHECK(count_continuous<decltype(sequence1)>::count == 3); + CHECK(count_continuous<decltype(sequence2)>::count == 4); + CHECK(switch_seq_n == 7); + CHECK(sequence3_n == 9); + CHECK(count_continuous<decltype(sequence4)>::count == 9); std::cout << "switch_seq " << boost::typeindex::type_id<decltype(switch_seq)>().pretty_name() -- GitLab