1 /* 2 * Created by Phil on 31/12/2010. 3 * Copyright 2010 Two Blue Cubes Ltd. All rights reserved. 4 * 5 * Distributed under the Boost Software License, Version 1.0. (See accompanying 6 * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7 */ 8 #ifndef TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED 9 #define TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED 10 11 #include "catch_interfaces_generators.h" 12 #include "catch_ptr.hpp" 13 14 15 namespace Catch { 16 17 class TestCase; 18 class Stream; 19 struct IResultCapture; 20 struct IRunner; 21 struct IGeneratorsForTest; 22 struct IConfig; 23 24 struct IContext 25 { 26 virtual ~IContext(); 27 28 virtual IResultCapture* getResultCapture() = 0; 29 virtual IRunner* getRunner() = 0; 30 virtual size_t getGeneratorIndex( std::string const& fileInfo, size_t totalSize ) = 0; 31 virtual bool advanceGeneratorsForCurrentTest() = 0; 32 virtual Ptr<IConfig const> getConfig() const = 0; 33 }; 34 35 struct IMutableContext : IContext 36 { 37 virtual ~IMutableContext(); 38 virtual void setResultCapture( IResultCapture* resultCapture ) = 0; 39 virtual void setRunner( IRunner* runner ) = 0; 40 virtual void setConfig( Ptr<IConfig const> const& config ) = 0; 41 }; 42 43 IContext& getCurrentContext(); 44 IMutableContext& getCurrentMutableContext(); 45 void cleanUpContext(); 46 Stream createStream( std::string const& streamName ); 47 48 } 49 50 #endif // TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED 51