diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/net/maildir/maildirUtilsTest.cpp | 53 | ||||
-rw-r--r-- | tests/net/messageSetTest.cpp | 27 | ||||
-rw-r--r-- | tests/net/pop3/POP3UtilsTest.cpp | 14 |
3 files changed, 93 insertions, 1 deletions
diff --git a/tests/net/maildir/maildirUtilsTest.cpp b/tests/net/maildir/maildirUtilsTest.cpp new file mode 100644 index 00000000..3538d4a8 --- /dev/null +++ b/tests/net/maildir/maildirUtilsTest.cpp @@ -0,0 +1,53 @@ +// +// VMime library (http://www.vmime.org) +// Copyright (C) 2002-2013 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 3 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., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// Linking this library statically or dynamically with other modules is making +// a combined work based on this library. Thus, the terms and conditions of +// the GNU General Public License cover the whole combination. +// + +#include "tests/testUtils.hpp" + +#include "vmime/net/maildir/maildirUtils.hpp" + + +using namespace vmime::net::maildir; + + +VMIME_TEST_SUITE_BEGIN(maildirUtilsTest) + + VMIME_TEST_LIST_BEGIN + VMIME_TEST(testMessageSetToNumberList) + VMIME_TEST_LIST_END + + + void testMessageSetToNumberList() + { + const std::vector <size_t> msgNums = + maildirUtils::messageSetToNumberList + (vmime::net::messageSet::byNumber(5, -1), /* msgCount */ 8); + + VASSERT_EQ("Count", 4, msgNums.size()); + VASSERT_EQ("1", 5, msgNums[0]); + VASSERT_EQ("2", 6, msgNums[1]); + VASSERT_EQ("3", 7, msgNums[2]); + VASSERT_EQ("4", 8, msgNums[3]); + } + +VMIME_TEST_SUITE_END + diff --git a/tests/net/messageSetTest.cpp b/tests/net/messageSetTest.cpp index 471c2e6c..4d129663 100644 --- a/tests/net/messageSetTest.cpp +++ b/tests/net/messageSetTest.cpp @@ -31,6 +31,8 @@ VMIME_TEST_SUITE_BEGIN(messageSetTest) VMIME_TEST_LIST_BEGIN VMIME_TEST(testNumberSet_Single) VMIME_TEST(testNumberSet_Range) + VMIME_TEST(testNumberSet_InvalidRange) + VMIME_TEST(testNumberSet_InvalidFirst) VMIME_TEST(testNumberSet_InfiniteRange) VMIME_TEST(testNumberSet_Multiple) VMIME_TEST(testUIDSet_Single) @@ -40,6 +42,7 @@ VMIME_TEST_SUITE_BEGIN(messageSetTest) VMIME_TEST(testUIDSet_MultipleNonNumeric) VMIME_TEST(testIsNumberSet) VMIME_TEST(testIsUIDSet) + VMIME_TEST(testMixedRanges) VMIME_TEST_LIST_END @@ -59,6 +62,8 @@ VMIME_TEST_SUITE_BEGIN(messageSetTest) if (range.getFirst() == range.getLast()) m_oss << range.getFirst(); + else if (range.getLast() == size_t(-1)) + m_oss << range.getFirst() << ":(LAST)"; else m_oss << range.getFirst() << ":" << range.getLast(); @@ -72,6 +77,8 @@ VMIME_TEST_SUITE_BEGIN(messageSetTest) if (range.getFirst() == range.getLast()) m_oss << range.getFirst(); + else if (range.getLast() == size_t(-1)) + m_oss << range.getFirst() << ":(LAST)"; else m_oss << range.getFirst() << ":" << range.getLast(); @@ -109,9 +116,19 @@ VMIME_TEST_SUITE_BEGIN(messageSetTest) VASSERT_EQ("str", "42:100", enumerateAsString(vmime::net::messageSet::byNumber(42, 100))); } + void testNumberSet_InvalidRange() + { + VASSERT_THROW("first > last", vmime::net::messageSet::byNumber(100, 42), std::invalid_argument); + } + + void testNumberSet_InvalidFirst() + { + VASSERT_THROW("first == -1", vmime::net::messageSet::byNumber(-1, 42), std::invalid_argument); + } + void testNumberSet_InfiniteRange() { - VASSERT_EQ("str", "42:-1", enumerateAsString(vmime::net::messageSet::byNumber(42, -1))); + VASSERT_EQ("str", "42:(LAST)", enumerateAsString(vmime::net::messageSet::byNumber(42, -1))); } void testNumberSet_Multiple() @@ -197,4 +214,12 @@ VMIME_TEST_SUITE_BEGIN(messageSetTest) VASSERT_TRUE("uid2", vmime::net::messageSet::byUID("42", "*").isUIDSet()); } + void testMixedRanges() + { + vmime::net::messageSet set = vmime::net::messageSet::byNumber(1, 5); + set.addRange(vmime::net::numberMessageRange(6, 8)); + + VASSERT_THROW("mixed ranges", set.addRange(vmime::net::UIDMessageRange("123")), std::invalid_argument); + } + VMIME_TEST_SUITE_END diff --git a/tests/net/pop3/POP3UtilsTest.cpp b/tests/net/pop3/POP3UtilsTest.cpp index 69e5e795..36029eaa 100644 --- a/tests/net/pop3/POP3UtilsTest.cpp +++ b/tests/net/pop3/POP3UtilsTest.cpp @@ -36,6 +36,7 @@ VMIME_TEST_SUITE_BEGIN(POP3UtilsTest) VMIME_TEST_LIST_BEGIN VMIME_TEST(testParseMultiListOrUidlResponse) + VMIME_TEST(testMessageSetToNumberList) VMIME_TEST_LIST_END @@ -69,5 +70,18 @@ VMIME_TEST_SUITE_BEGIN(POP3UtilsTest) VASSERT_EQ("5 (with extra space)", "yz", result[8]); } + void testMessageSetToNumberList() + { + const std::vector <size_t> msgNums = + POP3Utils::messageSetToNumberList + (vmime::net::messageSet::byNumber(5, -1), /* msgCount */ 8); + + VASSERT_EQ("Count", 4, msgNums.size()); + VASSERT_EQ("1", 5, msgNums[0]); + VASSERT_EQ("2", 6, msgNums[1]); + VASSERT_EQ("3", 7, msgNums[2]); + VASSERT_EQ("4", 8, msgNums[3]); + } + VMIME_TEST_SUITE_END |