| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | #include "catch_context.h" |
| | #include "catch_common.h" |
| | #include "catch_random_number_generator.h" |
| |
|
| | namespace Catch { |
| |
|
| | class Context : public IMutableContext, NonCopyable { |
| |
|
| | public: |
| | IResultCapture* getResultCapture() override { |
| | return m_resultCapture; |
| | } |
| | IRunner* getRunner() override { |
| | return m_runner; |
| | } |
| |
|
| | IConfigPtr const& getConfig() const override { |
| | return m_config; |
| | } |
| |
|
| | ~Context() override; |
| |
|
| | public: |
| | void setResultCapture( IResultCapture* resultCapture ) override { |
| | m_resultCapture = resultCapture; |
| | } |
| | void setRunner( IRunner* runner ) override { |
| | m_runner = runner; |
| | } |
| | void setConfig( IConfigPtr const& config ) override { |
| | m_config = config; |
| | } |
| |
|
| | friend IMutableContext& getCurrentMutableContext(); |
| |
|
| | private: |
| | IConfigPtr m_config; |
| | IRunner* m_runner = nullptr; |
| | IResultCapture* m_resultCapture = nullptr; |
| | }; |
| |
|
| | IMutableContext *IMutableContext::currentContext = nullptr; |
| |
|
| | void IMutableContext::createContext() |
| | { |
| | currentContext = new Context(); |
| | } |
| |
|
| | void cleanUpContext() { |
| | delete IMutableContext::currentContext; |
| | IMutableContext::currentContext = nullptr; |
| | } |
| | IContext::~IContext() = default; |
| | IMutableContext::~IMutableContext() = default; |
| | Context::~Context() = default; |
| |
|
| |
|
| | SimplePcg32& rng() { |
| | static SimplePcg32 s_rng; |
| | return s_rng; |
| | } |
| |
|
| | } |
| |
|