Chrysalis - Pattern Test Coverage


pattern/
File: pattern/include/arguments/BaseCalculatedArgument.h
Date: 2026-08-27 18:35:18
Lines:
11/11
100.0%
Functions:
13/13
100.0%
Branches:
5/8
62.5%
Decisions:
2/2
100.0%
Calls:
45/47
95.7%

Line Branch Decision Call Exec Source
1 #ifndef CHRYSALIS_BASECACHABLEARGUMENT_H
2 #define CHRYSALIS_BASECACHABLEARGUMENT_H
3
4 #include <boost/optional/optional.hpp>
5
6 #include "arguments/BaseArgument.h"
7
8 /** @defgroup Arguments Arguments
9 * @{
10 */
11 namespace Chrysalis {
12 template<typename T>
13 class BaseCalculatedArgument: public BaseArgument<T> {
14
10/10
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
1072 SERIALIZE_DERIVED_FROM(BaseArgument<T>, value_)
15 protected:
16
9/9
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
876 explicit BaseCalculatedArgument() = default;
17 explicit BaseCalculatedArgument(const T& value): value_(value) {}
18
19 virtual std::expected<T, Error> calculate() const = 0;
20 public:
21 642 std::expected<T, Error> get() const override {
22
2/2
✓ Branch 4 taken 491 times.
✓ Branch 5 taken 151 times.
2/2
✓ Decision 'true' taken 491 times.
✓ Decision 'false' taken 151 times.
4/4
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
642 if (!value_.has_value()) {
23
1/2
✓ Branch 5 taken 491 times.
✗ Branch 6 not taken.
5/5
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
491 std::expected<T, Error> value = calculate();
24
3/4
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✗ Call 3 not invoked.
982 return value.transform([&](T t) {
25
5/5
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
487 value_ = t;
26
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
487 return t;
27
1/2
✓ Branch 2 taken 491 times.
✗ Branch 3 not taken.
2/2
✓ Call 0 invoked.
✓ Call 1 invoked.
491 });
28
1/2
✓ Call 0 invoked.
✗ Call 1 not invoked.
491 }
29
6/6
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
151 return value_.get();
30 }
31 private:
32 mutable boost::optional<T> value_;
33 };
34 }
35 /**@}*/
36
37 #endif //CHRYSALIS_BASECACHABLEARGUMENT_H
38