aboutsummaryrefslogtreecommitdiffstats
path: root/tests/testUtils.hpp
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2005-08-25 21:25:45 +0000
committerVincent Richard <[email protected]>2005-08-25 21:25:45 +0000
commit5d18fce959ea74f99a8683c944c96881b2365bb2 (patch)
treed35b9177115606eedd84bbc64eb11aa21ca72878 /tests/testUtils.hpp
parentFixed undefined symbol 'UNSPECIFIED_PORT'. (diff)
downloadvmime-5d18fce959ea74f99a8683c944c96881b2365bb2.tar.gz
vmime-5d18fce959ea74f99a8683c944c96881b2365bb2.zip
Moved to CppUnit for unit tests framework.
Diffstat (limited to 'tests/testUtils.hpp')
-rw-r--r--tests/testUtils.hpp182
1 files changed, 182 insertions, 0 deletions
diff --git a/tests/testUtils.hpp b/tests/testUtils.hpp
new file mode 100644
index 00000000..cb4549e0
--- /dev/null
+++ b/tests/testUtils.hpp
@@ -0,0 +1,182 @@
+//
+// VMime library (http://www.vmime.org)
+// Copyright (C) 2002-2005 Vincent Richard <[email protected]>
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+
+#include <ostream>
+#include <iostream>
+#include <sstream>
+#include <vector>
+
+
+// VMime
+#include "vmime/vmime.hpp"
+
+
+// CppUnit
+#include <cppunit/TestAssert.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#define VASSERT(msg, cond) \
+ CPPUNIT_ASSERT_MESSAGE(std::string(msg), cond)
+
+#define VASSERT_TRUE(msg, cond) \
+ VASSERT(msg, cond)
+#define VASSERT_FALSE(msg, cond) \
+ VASSERT(!(msg, cond))
+
+#define VASSERT_EQ(msg, expected, actual) \
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(std::string(msg), expected, actual)
+
+#define VASSERT_THROW(msg, expression, exceptionType) \
+ CPPUNIT_ASSERT_THROW(expression, exceptionType)
+#define VASSERT_NO_THROW(msg, expression) \
+ CPPUNIT_ASSERT_NO_THROW(expression)
+
+#define VMIME_TEST_SUITE_BEGIN \
+ class VMIME_TEST_SUITE : public CppUnit::TestFixture { public:
+#define VMIME_TEST_SUITE_END \
+ }; \
+ \
+ static CppUnit::AutoRegisterSuite <VMIME_TEST_SUITE>(autoRegisterRegistry1); \
+ static CppUnit::AutoRegisterSuite <VMIME_TEST_SUITE>(autoRegisterRegistry2)(VMIME_TEST_SUITE_MODULE);
+
+#define VMIME_TEST_LIST_BEGIN CPPUNIT_TEST_SUITE(VMIME_TEST_SUITE);
+#define VMIME_TEST_LIST_END CPPUNIT_TEST_SUITE_END();
+#define VMIME_TEST(name) CPPUNIT_TEST(name);
+
+
+namespace CppUnit
+{
+ // Work-around for comparing 'std::string' against 'char*'
+ inline void assertEquals(const char* expected, const std::string actual,
+ SourceLine sourceLine, const std::string &message)
+ {
+ assertEquals(std::string(expected), actual, sourceLine, message);
+ }
+
+ template <typename X, typename Y>
+ void assertEquals(const X expected, const Y actual,
+ SourceLine sourceLine, const std::string &message)
+ {
+ assertEquals(static_cast <Y>(expected), actual, sourceLine, message);
+ }
+}
+
+
+namespace std
+{
+
+
+inline std::ostream& operator<<(std::ostream& os, const vmime::charset& ch)
+{
+ os << "[charset: " << ch.getName() << "]";
+ return (os);
+}
+
+
+inline std::ostream& operator<<(std::ostream& os, const vmime::text& txt)
+{
+ os << "[text: [";
+
+ for (int i = 0 ; i < txt.getWordCount() ; ++i)
+ {
+ const vmime::word& w = *txt.getWordAt(i);
+
+ if (i != 0)
+ os << ",";
+
+ os << "[word: charset=" << w.getCharset().getName() << ", buffer=" << w.getBuffer() << "]";
+ }
+
+ os << "]]";
+
+ return (os);
+}
+
+
+inline std::ostream& operator<<(std::ostream& os, const vmime::mailbox& mbox)
+{
+ os << "[mailbox: name=" << mbox.getName() << ", email=" << mbox.getEmail() << "]";
+
+ return (os);
+}
+
+
+inline std::ostream& operator<<(std::ostream& os, const vmime::mailboxGroup& group)
+{
+ os << "[mailbox-group: name=" << group.getName() << ", list=[";
+
+ for (int i = 0 ; i < group.getMailboxCount() ; ++i)
+ {
+ if (i != 0)
+ os << ",";
+
+ os << *group.getMailboxAt(i);
+ }
+
+ os << "]]";
+
+ return (os);
+}
+
+
+inline std::ostream& operator<<(std::ostream& os, const vmime::addressList& list)
+{
+ os << "[address-list: [";
+
+ for (int i = 0 ; i < list.getAddressCount() ; ++i)
+ {
+ const vmime::address& addr = *list.getAddressAt(i);
+
+ if (i != 0)
+ os << ",";
+
+ if (addr.isGroup())
+ {
+ const vmime::mailboxGroup& group =
+ dynamic_cast <const vmime::mailboxGroup&>(addr);
+
+ os << group;
+ }
+ else
+ {
+ const vmime::mailbox& mbox =
+ dynamic_cast <const vmime::mailbox&>(addr);
+
+ os << mbox;
+ }
+ }
+
+ os << "]]";
+
+ return (os);
+}
+
+
+inline std::ostream& operator<<(std::ostream& os, const vmime::datetime& d)
+{
+ os << "[datetime: " << d.getYear() << "/" << d.getMonth() << "/" << d.getDay();
+ os << " " << d.getHour() << ":" << d.getMinute() << ":" << d.getSecond();
+ os << " #" << d.getZone() << "]";
+
+ return (os);
+}
+
+
+}
+