diff --git a/SConstruct b/SConstruct index bbde1e99..5d90333e 100644 --- a/SConstruct +++ b/SConstruct @@ -314,7 +314,8 @@ libvmimetest_sources = [ 'tests/utility/stringUtilsTest.cpp', 'tests/utility/pathTest.cpp', 'tests/utility/urlTest.cpp', - 'tests/utility/smartPtrTest.cpp' + 'tests/utility/smartPtrTest.cpp', + 'tests/misc/importanceHelperTest.cpp' ] libvmime_autotools = [ diff --git a/tests/misc/importanceHelperTest.cpp b/tests/misc/importanceHelperTest.cpp new file mode 100644 index 00000000..7ef6e79a --- /dev/null +++ b/tests/misc/importanceHelperTest.cpp @@ -0,0 +1,162 @@ +// +// VMime library (http://www.vmime.org) +// Copyright (C) 2002-2005 Vincent Richard +// +// 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 "tests/testUtils.hpp" + +#include "vmime/misc/importanceHelper.hpp" + + +#define VMIME_TEST_SUITE importanceHelperTest +#define VMIME_TEST_SUITE_MODULE "Misc" + + +VMIME_TEST_SUITE_BEGIN + + VMIME_TEST_LIST_BEGIN + VMIME_TEST(testResetImportance) + + VMIME_TEST(testSetImportance1) + VMIME_TEST(testSetImportance2) + VMIME_TEST(testSetImportance3) + VMIME_TEST(testSetImportance4) + VMIME_TEST(testSetImportance5) + + VMIME_TEST(testGetImportance1) + VMIME_TEST(testGetImportance2) + VMIME_TEST(testGetImportance3) + VMIME_TEST(testGetImportance4) + VMIME_TEST(testGetImportance5) + VMIME_TEST_LIST_END + + + // resetImportance + + void testResetImportance() + { + vmime::ref hdr = vmime::create (); + + hdr->getField("Importance")->setValue("xxx"); + hdr->getField("X-Priority")->setValue("yyy"); + + VASSERT_NO_THROW("1", hdr->findField("Importance")); + VASSERT_NO_THROW("2", hdr->findField("X-Priority")); + + vmime::misc::importanceHelper::resetImportanceHeader(hdr); + + VASSERT_THROW("3", hdr->findField("Importance"), vmime::exceptions::no_such_field); + VASSERT_THROW("4", hdr->findField("X-Priority"), vmime::exceptions::no_such_field); + } + + + // setImportance + + void testSetImportanceImpl(const vmime::misc::importanceHelper::Importance i, + const std::string& ImportanceValue, const std::string& XPriorityValue) + { + vmime::ref hdr = vmime::create (); + + vmime::misc::importanceHelper::setImportanceHeader(hdr, i); + + VASSERT_NO_THROW("1", hdr->findField("Importance")); + VASSERT_EQ("2", ImportanceValue, hdr->findField("Importance")->getValue().generate()); + + VASSERT_NO_THROW("3", hdr->findField("X-Priority")); + VASSERT_EQ("4", XPriorityValue, hdr->findField("X-Priority")->getValue().generate()); + } + + void testSetImportance1() + { + testSetImportanceImpl(vmime::misc::importanceHelper::IMPORTANCE_HIGHEST, + "high", "1 (Highest)"); + } + + void testSetImportance2() + { + testSetImportanceImpl(vmime::misc::importanceHelper::IMPORTANCE_HIGH, + "high", "2 (High)"); + } + + void testSetImportance3() + { + testSetImportanceImpl(vmime::misc::importanceHelper::IMPORTANCE_NORMAL, + "normal", "3 (Normal)"); + } + + void testSetImportance4() + { + testSetImportanceImpl(vmime::misc::importanceHelper::IMPORTANCE_LOW, + "low", "4 (Low)"); + } + + void testSetImportance5() + { + testSetImportanceImpl(vmime::misc::importanceHelper::IMPORTANCE_LOWEST, + "low", "5 (Lowest)"); + } + + + // getImportance + + void testGetImportanceImpl(const vmime::misc::importanceHelper::Importance i1, + const vmime::misc::importanceHelper::Importance i2, + const std::string& ImportanceValue, const std::string& XPriorityValue) + { + vmime::ref hdr1 = vmime::create (); + + hdr1->getField("Importance")->setValue(ImportanceValue); + VASSERT_EQ("1", i1, vmime::misc::importanceHelper::getImportanceHeader(hdr1)); + + vmime::ref hdr2 = vmime::create (); + + hdr2->getField("X-Priority")->setValue(XPriorityValue); + VASSERT_EQ("2", i2, vmime::misc::importanceHelper::getImportanceHeader(hdr2)); + } + + void testGetImportance1() + { + testGetImportanceImpl(vmime::misc::importanceHelper::IMPORTANCE_HIGHEST, + vmime::misc::importanceHelper::IMPORTANCE_HIGHEST, "high", "1 (Highest)"); + } + + void testGetImportance2() + { + testGetImportanceImpl(vmime::misc::importanceHelper::IMPORTANCE_HIGHEST, + vmime::misc::importanceHelper::IMPORTANCE_HIGH, "high", "2 (High)"); + } + + void testGetImportance3() + { + testGetImportanceImpl(vmime::misc::importanceHelper::IMPORTANCE_NORMAL, + vmime::misc::importanceHelper::IMPORTANCE_NORMAL, "normal", "3 (Normal)"); + } + + void testGetImportance4() + { + testGetImportanceImpl(vmime::misc::importanceHelper::IMPORTANCE_LOWEST, + vmime::misc::importanceHelper::IMPORTANCE_LOW, "low", "4 (Low)"); + } + + void testGetImportance5() + { + testGetImportanceImpl(vmime::misc::importanceHelper::IMPORTANCE_LOWEST, + vmime::misc::importanceHelper::IMPORTANCE_LOWEST, "low", "5 (Lowest)"); + } + +VMIME_TEST_SUITE_END +