// // ChannelTest.cpp // // $Id: //poco/1.2/Foundation/testsuite/src/ChannelTest.cpp#1 $ // // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // Permission is hereby granted, free of charge, to any person or organization // obtaining a copy of the software and accompanying documentation covered by // this license (the "Software") to use, reproduce, display, distribute, // execute, and transmit the Software, and to prepare derivative works of the // Software, and to permit third-parties to whom the Software is furnished to // do so, all subject to the following: // // The copyright notices in the Software and this entire statement, including // the above license grant, this restriction and the following disclaimer, // must be included in all copies of the Software, in whole or in part, and // all derivative works of the Software, unless such copies or derivative // works are solely in the form of machine-executable object code generated by // a source language processor. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. // #include "ChannelTest.h" #include "CppUnit/TestCaller.h" #include "CppUnit/TestSuite.h" #include "Poco/SplitterChannel.h" #include "Poco/AsyncChannel.h" #include "Poco/AutoPtr.h" #include "Poco/Message.h" #include "Poco/Formatter.h" #include "Poco/FormattingChannel.h" #include "Poco/ConsoleChannel.h" #include "Poco/StreamChannel.h" #include "TestChannel.h" #include using Poco::SplitterChannel; using Poco::AsyncChannel; using Poco::FormattingChannel; using Poco::ConsoleChannel; using Poco::StreamChannel; using Poco::Formatter; using Poco::Message; using Poco::AutoPtr; class SimpleFormatter: public Formatter { public: void format(const Message& msg, std::string& text) { text = msg.getSource(); text.append(": "); text.append(msg.getText()); } }; ChannelTest::ChannelTest(const std::string& name): CppUnit::TestCase(name) { } ChannelTest::~ChannelTest() { } void ChannelTest::testSplitter() { AutoPtr pChannel = new TestChannel; AutoPtr pSplitter = new SplitterChannel; pSplitter->addChannel(pChannel.get()); pSplitter->addChannel(pChannel.get()); Message msg; pSplitter->log(msg); assert (pChannel->list().size() == 2); } void ChannelTest::testAsync() { AutoPtr pChannel = new TestChannel; AutoPtr pAsync = new AsyncChannel(pChannel.get()); pAsync->open(); Message msg; pAsync->log(msg); pAsync->log(msg); pAsync->close(); assert (pChannel->list().size() == 2); } void ChannelTest::testFormatting() { AutoPtr pChannel = new TestChannel; AutoPtr pFormatter = new SimpleFormatter; AutoPtr pFormatterChannel = new FormattingChannel(pFormatter, pChannel.get()); Message msg("Source", "Text", Message::PRIO_INFORMATION); pFormatterChannel->log(msg); assert (pChannel->list().size() == 1); assert (pChannel->list().begin()->getText() == "Source: Text"); } void ChannelTest::testConsole() { AutoPtr pChannel = new ConsoleChannel; AutoPtr pFormatter = new SimpleFormatter; AutoPtr pFormatterChannel = new FormattingChannel(pFormatter, pChannel.get()); Message msg("Source", "Text", Message::PRIO_INFORMATION); pFormatterChannel->log(msg); } void ChannelTest::testStream() { std::ostringstream str; AutoPtr pChannel = new StreamChannel(str); AutoPtr pFormatter = new SimpleFormatter; AutoPtr pFormatterChannel = new FormattingChannel(pFormatter, pChannel.get()); Message msg("Source", "Text", Message::PRIO_INFORMATION); pFormatterChannel->log(msg); assert (str.str().find("Source: Text") == 0); } void ChannelTest::setUp() { } void ChannelTest::tearDown() { } CppUnit::Test* ChannelTest::suite() { CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ChannelTest"); CppUnit_addTest(pSuite, ChannelTest, testSplitter); CppUnit_addTest(pSuite, ChannelTest, testAsync); CppUnit_addTest(pSuite, ChannelTest, testFormatting); CppUnit_addTest(pSuite, ChannelTest, testConsole); CppUnit_addTest(pSuite, ChannelTest, testStream); return pSuite; }