| 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 |
|
|
|
|
|