aboutsummaryrefslogtreecommitdiff
path: root/include/internal/catch_stream.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/internal/catch_stream.h')
-rw-r--r--include/internal/catch_stream.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/include/internal/catch_stream.h b/include/internal/catch_stream.h
new file mode 100644
index 0000000..5f22ad6
--- /dev/null
+++ b/include/internal/catch_stream.h
@@ -0,0 +1,63 @@
+/*
+ * Created by Phil on 2/12/2013.
+ * Copyright 2013 Two Blue Cubes Ltd. All rights reserved.
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+#ifndef TWOBLUECUBES_CATCH_STREAM_H_INCLUDED
+#define TWOBLUECUBES_CATCH_STREAM_H_INCLUDED
+
+#include "catch_compiler_capabilities.h"
+#include "catch_streambuf.h"
+
+#include <streambuf>
+#include <ostream>
+#include <fstream>
+
+namespace Catch {
+
+ std::ostream& cout();
+ std::ostream& cerr();
+
+
+ struct IStream {
+ virtual ~IStream() CATCH_NOEXCEPT;
+ virtual std::ostream& stream() const = 0;
+ };
+
+ class FileStream : public IStream {
+ mutable std::ofstream m_ofs;
+ public:
+ FileStream( std::string const& filename );
+ virtual ~FileStream() CATCH_NOEXCEPT;
+ public: // IStream
+ virtual std::ostream& stream() const CATCH_OVERRIDE;
+ };
+
+
+ class CoutStream : public IStream {
+ mutable std::ostream m_os;
+ public:
+ CoutStream();
+ virtual ~CoutStream() CATCH_NOEXCEPT;
+
+ public: // IStream
+ virtual std::ostream& stream() const CATCH_OVERRIDE;
+ };
+
+
+ class DebugOutStream : public IStream {
+ std::auto_ptr<StreamBufBase> m_streamBuf;
+ mutable std::ostream m_os;
+ public:
+ DebugOutStream();
+ virtual ~DebugOutStream() CATCH_NOEXCEPT;
+
+ public: // IStream
+ virtual std::ostream& stream() const CATCH_OVERRIDE;
+ };
+}
+
+#endif // TWOBLUECUBES_CATCH_STREAM_H_INCLUDED