diff options
Diffstat (limited to 'test/unit/util/output_black.h')
-rw-r--r-- | test/unit/util/output_black.h | 304 |
1 files changed, 304 insertions, 0 deletions
diff --git a/test/unit/util/output_black.h b/test/unit/util/output_black.h new file mode 100644 index 000000000..6e613e9f4 --- /dev/null +++ b/test/unit/util/output_black.h @@ -0,0 +1,304 @@ +/********************* */ +/** output_black.h + ** Original author: mdeters + ** Major contributors: none + ** Minor contributors (to current version): none + ** This file is part of the CVC4 prototype. + ** Copyright (c) 2009, 2010 The Analysis of Computer Systems Group (ACSys) + ** Courant Institute of Mathematical Sciences + ** New York University + ** See the file COPYING in the top-level source directory for licensing + ** information. + ** + ** Black box testing of CVC4 output classes. + **/ + +#include <cxxtest/TestSuite.h> + +#include <iostream> +#include <sstream> + +#include "util/output.h" + +using namespace CVC4; +using namespace std; + +class OutputBlack : public CxxTest::TestSuite { + + stringstream d_debugStream; + stringstream d_traceStream; + stringstream d_noticeStream; + stringstream d_chatStream; + stringstream d_messageStream; + stringstream d_warningStream; + +public: + + void setUp() { + Debug.setStream(d_debugStream); + Trace.setStream(d_traceStream); + Notice.setStream(d_noticeStream); + Chat.setStream(d_chatStream); + Message.setStream(d_messageStream); + Warning.setStream(d_warningStream); + + d_debugStream.str(""); + d_traceStream.str(""); + d_noticeStream.str(""); + d_chatStream.str(""); + d_messageStream.str(""); + d_warningStream.str(""); + } + + void tearDown() { + } + + void testOutput() { + Debug.on("foo"); + Debug("foo") << "testing1"; + Debug.off("foo"); + Debug("foo") << "testing2"; + Debug.on("foo"); + Debug("foo") << "testing3"; + + Message() << "a message"; + Warning() << "bad warning!"; + Chat() << "chatty"; + Notice() << "note"; + + Trace.on("foo"); + Trace("foo") << "tracing1"; + Trace.off("foo"); + Trace("foo") << "tracing2"; + Trace.on("foo"); + Trace("foo") << "tracing3"; + +#ifdef CVC4_MUZZLE + + TS_ASSERT( d_debugStream.str() == "" ); + TS_ASSERT( d_messageStream.str() == "" ); + TS_ASSERT( d_warningStream.str() == "" ); + TS_ASSERT( d_chatStream.str() == "" ); + TS_ASSERT( d_noticeStream.str() == "" ); + TS_ASSERT( d_traceStream.str() == "" ); + +#else /* CVC4_MUZZLE */ + +# ifdef CVC4_DEBUG + TS_ASSERT( d_debugStream.str() == "testing1testing3" ); +# else /* CVC4_DEBUG */ + TS_ASSERT( d_debugStream.str() == "" ); +# endif /* CVC4_DEBUG */ + + TS_ASSERT( d_messageStream.str() == "a message" ); + TS_ASSERT( d_warningStream.str() == "bad warning!" ); + TS_ASSERT( d_chatStream.str() == "chatty" ); + TS_ASSERT( d_noticeStream.str() == "note" ); + +# ifdef CVC4_TRACING + TS_ASSERT( d_traceStream.str() == "tracing1tracing3" ); +# else /* CVC4_TRACING */ + TS_ASSERT( d_traceStream.str() == "" ); +# endif /* CVC4_TRACING */ + +#endif /* CVC4_MUZZLE */ + } + + void testPrintf() { + +#ifdef CVC4_MUZZLE + + Debug.off("yo"); + Debug.printf("yo", "hello %s", "world"); + TS_ASSERT_EQUALS(d_debugStream.str(), string()); + d_debugStream.str(""); + Debug.printf(string("yo"), "hello %s", "world"); + TS_ASSERT_EQUALS(d_debugStream.str(), string()); + d_debugStream.str(""); + + Debug.on("yo"); + Debug.printf("yo", "hello %s", "world"); + TS_ASSERT_EQUALS(d_debugStream.str(), string()); + d_debugStream.str(""); + Debug.printf(string("yo"), "hello %s", "world"); + TS_ASSERT_EQUALS(d_debugStream.str(), string()); + d_debugStream.str(""); + + Trace.off("yo"); + Trace.printf("yo", "hello %s", "world"); + TS_ASSERT_EQUALS(d_traceStream.str(), string()); + d_traceStream.str(""); + Trace.printf(string("yo"), "hello %s", "world"); + TS_ASSERT_EQUALS(d_traceStream.str(), string()); + d_traceStream.str(""); + + Trace.on("yo"); + Trace.printf("yo", "hello %s", "world"); + TS_ASSERT_EQUALS(d_traceStream.str(), string()); + d_traceStream.str(""); + Trace.printf(string("yo"), "hello %s", "world"); + TS_ASSERT_EQUALS(d_traceStream.str(), string()); + + Warning.printf("hello %s", "world"); + TS_ASSERT_EQUALS(d_warningStream.str(), string()); + + Chat.printf("hello %s", "world"); + TS_ASSERT_EQUALS(d_chatStream.str(), string()); + + Message.printf("hello %s", "world"); + TS_ASSERT_EQUALS(d_messageStream.str(), string()); + + Notice.printf("hello %s", "world"); + TS_ASSERT_EQUALS(d_noticeStream.str(), string()); + +#else /* CVC4_MUZZLE */ + + Debug.off("yo"); + Debug.printf("yo", "hello %s", "world"); + TS_ASSERT_EQUALS(d_debugStream.str(), string()); + d_debugStream.str(""); + Debug.printf(string("yo"), "hello %s", "world"); + TS_ASSERT_EQUALS(d_debugStream.str(), string()); + d_debugStream.str(""); + + Debug.on("yo"); + Debug.printf("yo", "hello %s", "world"); +#ifdef CVC4_DEBUG + TS_ASSERT_EQUALS(d_debugStream.str(), string("hello world")); +#else /* CVC4_DEBUG */ + TS_ASSERT_EQUALS(d_debugStream.str(), string()); +#endif /* CVC4_DEBUG */ + d_debugStream.str(""); + Debug.printf(string("yo"), "hello %s", "world"); +#ifdef CVC4_DEBUG + TS_ASSERT_EQUALS(d_debugStream.str(), string("hello world")); +#else /* CVC4_DEBUG */ + TS_ASSERT_EQUALS(d_debugStream.str(), string()); +#endif /* CVC4_DEBUG */ + d_debugStream.str(""); + + Trace.off("yo"); + Trace.printf("yo", "hello %s", "world"); + TS_ASSERT_EQUALS(d_traceStream.str(), string()); + d_traceStream.str(""); + Trace.printf(string("yo"), "hello %s", "world"); + TS_ASSERT_EQUALS(d_traceStream.str(), string()); + d_traceStream.str(""); + + Trace.on("yo"); + Trace.printf("yo", "hello %s", "world"); +#ifdef CVC4_TRACING + TS_ASSERT_EQUALS(d_traceStream.str(), string("hello world")); +#else /* CVC4_TRACING */ + TS_ASSERT_EQUALS(d_traceStream.str(), string()); +#endif /* CVC4_TRACING */ + d_traceStream.str(""); + Trace.printf(string("yo"), "hello %s", "world"); +#ifdef CVC4_TRACING + TS_ASSERT_EQUALS(d_traceStream.str(), string("hello world")); +#else /* CVC4_TRACING */ + TS_ASSERT_EQUALS(d_traceStream.str(), string()); +#endif /* CVC4_TRACING */ + + Warning.printf("hello %s", "world"); + TS_ASSERT_EQUALS(d_warningStream.str(), string("hello world")); + + Chat.printf("hello %s", "world"); + TS_ASSERT_EQUALS(d_chatStream.str(), string("hello world")); + + Message.printf("hello %s", "world"); + TS_ASSERT_EQUALS(d_messageStream.str(), string("hello world")); + + Notice.printf("hello %s", "world"); + TS_ASSERT_EQUALS(d_noticeStream.str(), string("hello world")); + +#endif /* CVC4_MUZZLE */ + + } + + void testSimplePrint() { + +#ifdef CVC4_MUZZLE + + Debug.off("yo"); + Debug("yo", "foobar"); + TS_ASSERT_EQUALS(d_debugStream.str(), string()); + d_debugStream.str(""); + Debug.on("yo"); + Debug("yo", "baz foo"); + TS_ASSERT_EQUALS(d_debugStream.str(), string()); + d_debugStream.str(""); + + Trace.off("yo"); + Trace("yo", "foobar"); + TS_ASSERT_EQUALS(d_traceStream.str(), string()); + d_traceStream.str(""); + Trace.on("yo"); + Trace("yo", "baz foo"); + TS_ASSERT_EQUALS(d_traceStream.str(), string()); + d_traceStream.str(""); + + Warning("baz foo"); + TS_ASSERT_EQUALS(d_warningStream.str(), string()); + d_warningStream.str(""); + + Chat("baz foo"); + TS_ASSERT_EQUALS(d_chatStream.str(), string()); + d_chatStream.str(""); + + Message("baz foo"); + TS_ASSERT_EQUALS(d_messageStream.str(), string()); + d_messageStream.str(""); + + Notice("baz foo"); + TS_ASSERT_EQUALS(d_noticeStream.str(), string()); + d_noticeStream.str(""); + +#else /* CVC4_MUZZLE */ + + Debug.off("yo"); + Debug("yo", "foobar"); + TS_ASSERT_EQUALS(d_debugStream.str(), string()); + d_debugStream.str(""); + Debug.on("yo"); + Debug("yo", "baz foo"); +# ifdef CVC4_DEBUG + TS_ASSERT_EQUALS(d_debugStream.str(), string("baz foo")); +# else /* CVC4_DEBUG */ + TS_ASSERT_EQUALS(d_debugStream.str(), string()); +# endif /* CVC4_DEBUG */ + d_debugStream.str(""); + + Trace.off("yo"); + Trace("yo", "foobar"); + TS_ASSERT_EQUALS(d_traceStream.str(), string()); + d_traceStream.str(""); + Trace.on("yo"); + Trace("yo", "baz foo"); +# ifdef CVC4_TRACING + TS_ASSERT_EQUALS(d_traceStream.str(), string("baz foo")); +# else /* CVC4_TRACING */ + TS_ASSERT_EQUALS(d_traceStream.str(), string()); +# endif /* CVC4_TRACING */ + d_traceStream.str(""); + + Warning("baz foo"); + TS_ASSERT_EQUALS(d_warningStream.str(), string("baz foo")); + d_warningStream.str(""); + + Chat("baz foo"); + TS_ASSERT_EQUALS(d_chatStream.str(), string("baz foo")); + d_chatStream.str(""); + + Message("baz foo"); + TS_ASSERT_EQUALS(d_messageStream.str(), string("baz foo")); + d_messageStream.str(""); + + Notice("baz foo"); + TS_ASSERT_EQUALS(d_noticeStream.str(), string("baz foo")); + d_noticeStream.str(""); + +#endif /* CVC4_MUZZLE */ + + } +}; |