aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/net/maildir/maildirUtilsTest.cpp53
-rw-r--r--tests/net/messageSetTest.cpp27
-rw-r--r--tests/net/pop3/POP3UtilsTest.cpp14
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