| |
| |
| |
| |
| |
| |
| |
| #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; |
| } |
|
|
| } |
|
|