Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
280b259930
@ -32,6 +32,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <locale>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
#include "vmime/vmime.hpp"
|
#include "vmime/vmime.hpp"
|
||||||
#include "vmime/platforms/posix/posixHandler.hpp"
|
#include "vmime/platforms/posix/posixHandler.hpp"
|
||||||
@ -41,8 +43,16 @@ int main()
|
|||||||
{
|
{
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
||||||
// VMime initialization
|
// Set the global C and C++ locale to the user-configured locale.
|
||||||
vmime::platform::setHandler<vmime::platforms::posix::posixHandler>();
|
// The locale should use UTF-8 encoding for these tests to run successfully.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::locale::global(std::locale(""));
|
||||||
|
}
|
||||||
|
catch (std::exception &)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_ALL, "");
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <locale>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
#include "vmime/vmime.hpp"
|
#include "vmime/vmime.hpp"
|
||||||
#include "vmime/platforms/posix/posixHandler.hpp"
|
#include "vmime/platforms/posix/posixHandler.hpp"
|
||||||
@ -41,8 +43,16 @@ int main()
|
|||||||
{
|
{
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
||||||
// VMime initialization
|
// Set the global C and C++ locale to the user-configured locale.
|
||||||
vmime::platform::setHandler<vmime::platforms::posix::posixHandler>();
|
// The locale should use UTF-8 encoding for these tests to run successfully.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::locale::global(std::locale(""));
|
||||||
|
}
|
||||||
|
catch (std::exception &)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_ALL, "");
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -71,7 +81,7 @@ int main()
|
|||||||
// Adding an attachment
|
// Adding an attachment
|
||||||
vmime::shared_ptr <vmime::fileAttachment> a = vmime::make_shared <vmime::fileAttachment>
|
vmime::shared_ptr <vmime::fileAttachment> a = vmime::make_shared <vmime::fileAttachment>
|
||||||
(
|
(
|
||||||
"./example2.cpp", // full path to file
|
__FILE__, // full path to file
|
||||||
vmime::mediaType("application/octet-stream"), // content type
|
vmime::mediaType("application/octet-stream"), // content type
|
||||||
vmime::text("My first attachment") // description
|
vmime::text("My first attachment") // description
|
||||||
);
|
);
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <locale>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
#include "vmime/vmime.hpp"
|
#include "vmime/vmime.hpp"
|
||||||
#include "vmime/platforms/posix/posixHandler.hpp"
|
#include "vmime/platforms/posix/posixHandler.hpp"
|
||||||
@ -41,8 +43,16 @@ int main()
|
|||||||
{
|
{
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
||||||
// VMime initialization
|
// Set the global C and C++ locale to the user-configured locale.
|
||||||
vmime::platform::setHandler<vmime::platforms::posix::posixHandler>();
|
// The locale should use UTF-8 encoding for these tests to run successfully.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::locale::global(std::locale(""));
|
||||||
|
}
|
||||||
|
catch (std::exception &)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_ALL, "");
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <locale>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
#include "vmime/vmime.hpp"
|
#include "vmime/vmime.hpp"
|
||||||
#include "vmime/platforms/posix/posixHandler.hpp"
|
#include "vmime/platforms/posix/posixHandler.hpp"
|
||||||
@ -41,8 +43,16 @@ int main()
|
|||||||
{
|
{
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
||||||
// VMime initialization
|
// Set the global C and C++ locale to the user-configured locale.
|
||||||
vmime::platform::setHandler<vmime::platforms::posix::posixHandler>();
|
// The locale should use UTF-8 encoding for these tests to run successfully.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::locale::global(std::locale(""));
|
||||||
|
}
|
||||||
|
catch (std::exception &)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_ALL, "");
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <locale>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
#include "vmime/vmime.hpp"
|
#include "vmime/vmime.hpp"
|
||||||
#include "vmime/platforms/posix/posixHandler.hpp"
|
#include "vmime/platforms/posix/posixHandler.hpp"
|
||||||
@ -41,8 +43,16 @@ int main()
|
|||||||
{
|
{
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
||||||
// VMime initialization
|
// Set the global C and C++ locale to the user-configured locale.
|
||||||
vmime::platform::setHandler<vmime::platforms::posix::posixHandler>();
|
// The locale should use UTF-8 encoding for these tests to run successfully.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::locale::global(std::locale(""));
|
||||||
|
}
|
||||||
|
catch (std::exception &)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_ALL, "");
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -25,6 +25,8 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <locale>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
#include "vmime/vmime.hpp"
|
#include "vmime/vmime.hpp"
|
||||||
#include "vmime/platforms/posix/posixHandler.hpp"
|
#include "vmime/platforms/posix/posixHandler.hpp"
|
||||||
@ -916,8 +918,16 @@ static bool menu()
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// VMime initialization
|
// Set the global C and C++ locale to the user-configured locale.
|
||||||
vmime::platform::setHandler<vmime::platforms::posix::posixHandler>();
|
// The locale should use UTF-8 encoding for these tests to run successfully.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::locale::global(std::locale(""));
|
||||||
|
}
|
||||||
|
catch (std::exception &)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_ALL, "");
|
||||||
|
}
|
||||||
|
|
||||||
for (bool quit = false ; !quit ; )
|
for (bool quit = false ; !quit ; )
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <locale>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
#include "vmime/vmime.hpp"
|
#include "vmime/vmime.hpp"
|
||||||
#include "vmime/platforms/posix/posixHandler.hpp"
|
#include "vmime/platforms/posix/posixHandler.hpp"
|
||||||
@ -39,9 +41,6 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// VMime initialization
|
|
||||||
vmime::platform::setHandler<vmime::platforms::posix::posixHandler>();
|
|
||||||
|
|
||||||
// Enumerate encoders
|
// Enumerate encoders
|
||||||
vmime::shared_ptr <vmime::utility::encoder::encoderFactory> ef =
|
vmime::shared_ptr <vmime::utility::encoder::encoderFactory> ef =
|
||||||
vmime::utility::encoder::encoderFactory::getInstance();
|
vmime::utility::encoder::encoderFactory::getInstance();
|
||||||
|
@ -42,7 +42,7 @@ contentDispositionField::contentDispositionField(contentDispositionField&)
|
|||||||
|
|
||||||
bool contentDispositionField::hasCreationDate() const
|
bool contentDispositionField::hasCreationDate() const
|
||||||
{
|
{
|
||||||
return bool(findParameter("creation-date"));
|
return hasParameter("creation-date");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ void contentDispositionField::setCreationDate(const datetime& creationDate)
|
|||||||
|
|
||||||
bool contentDispositionField::hasModificationDate() const
|
bool contentDispositionField::hasModificationDate() const
|
||||||
{
|
{
|
||||||
return bool(findParameter("modification-date"));
|
return hasParameter("modification-date");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ void contentDispositionField::setModificationDate(const datetime& modificationDa
|
|||||||
|
|
||||||
bool contentDispositionField::hasReadDate() const
|
bool contentDispositionField::hasReadDate() const
|
||||||
{
|
{
|
||||||
return bool(findParameter("read-date"));
|
return hasParameter("read-date");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ void contentDispositionField::setReadDate(const datetime& readDate)
|
|||||||
|
|
||||||
bool contentDispositionField::hasFilename() const
|
bool contentDispositionField::hasFilename() const
|
||||||
{
|
{
|
||||||
return bool(findParameter("filename"));
|
return hasParameter("filename");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ void contentDispositionField::setFilename(const word& filename)
|
|||||||
|
|
||||||
bool contentDispositionField::hasSize() const
|
bool contentDispositionField::hasSize() const
|
||||||
{
|
{
|
||||||
return bool(findParameter("size"));
|
return hasParameter("size");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ contentTypeField::contentTypeField(contentTypeField&)
|
|||||||
|
|
||||||
bool contentTypeField::hasBoundary() const
|
bool contentTypeField::hasBoundary() const
|
||||||
{
|
{
|
||||||
return bool(findParameter("boundary"));
|
return hasParameter("boundary");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ void contentTypeField::setBoundary(const string& boundary)
|
|||||||
|
|
||||||
bool contentTypeField::hasCharset() const
|
bool contentTypeField::hasCharset() const
|
||||||
{
|
{
|
||||||
return bool(findParameter("charset"));
|
return hasParameter("charset");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ void contentTypeField::setCharset(const charset& ch)
|
|||||||
|
|
||||||
bool contentTypeField::hasReportType() const
|
bool contentTypeField::hasReportType() const
|
||||||
{
|
{
|
||||||
return bool(findParameter("report-type"));
|
return hasParameter("report-type");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -168,11 +168,7 @@ const vmime::charset posixHandler::getLocalCharset() const
|
|||||||
{
|
{
|
||||||
const PLockHelper lock;
|
const PLockHelper lock;
|
||||||
|
|
||||||
const char* prevLocale = ::setlocale(LC_ALL, "");
|
return vmime::charset(::nl_langinfo(CODESET));
|
||||||
vmime::charset ch(::nl_langinfo(CODESET));
|
|
||||||
::setlocale(LC_ALL, prevLocale);
|
|
||||||
|
|
||||||
return (ch);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#include "vmime/platforms/windows/windowsSocket.hpp"
|
#include "vmime/platforms/windows/windowsSocket.hpp"
|
||||||
|
|
||||||
|
#include "vmime/utility/stringUtils.hpp"
|
||||||
#include "vmime/exception.hpp"
|
#include "vmime/exception.hpp"
|
||||||
|
|
||||||
#include <ws2tcpip.h>
|
#include <ws2tcpip.h>
|
||||||
@ -239,11 +240,11 @@ size_t windowsSocket::getBlockSize() const
|
|||||||
void windowsSocket::receive(vmime::string& buffer)
|
void windowsSocket::receive(vmime::string& buffer)
|
||||||
{
|
{
|
||||||
const size_t size = receiveRaw(m_buffer, sizeof(m_buffer));
|
const size_t size = receiveRaw(m_buffer, sizeof(m_buffer));
|
||||||
buffer = vmime::string(m_buffer, size);
|
buffer = utility::stringUtils::makeStringFromBytes(m_buffer, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t windowsSocket::receiveRaw(char* buffer, const size_t count)
|
size_t windowsSocket::receiveRaw(byte_t* buffer, const size_t count)
|
||||||
{
|
{
|
||||||
m_status &= ~STATUS_WOULDBLOCK;
|
m_status &= ~STATUS_WOULDBLOCK;
|
||||||
|
|
||||||
@ -275,7 +276,7 @@ size_t windowsSocket::receiveRaw(char* buffer, const size_t count)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Read available data
|
// Read available data
|
||||||
int ret = ::recv(m_desc, buffer, count, 0);
|
int ret = ::recv(m_desc, reinterpret_cast <char*>(buffer), count, 0);
|
||||||
|
|
||||||
if (ret == SOCKET_ERROR)
|
if (ret == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
@ -317,7 +318,7 @@ void windowsSocket::send(const char* str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void windowsSocket::sendRaw(const char* buffer, const size_t count)
|
void windowsSocket::sendRaw(const byte_t* buffer, const size_t count)
|
||||||
{
|
{
|
||||||
m_status &= ~STATUS_WOULDBLOCK;
|
m_status &= ~STATUS_WOULDBLOCK;
|
||||||
|
|
||||||
@ -325,7 +326,7 @@ void windowsSocket::sendRaw(const char* buffer, const size_t count)
|
|||||||
|
|
||||||
while (size > 0)
|
while (size > 0)
|
||||||
{
|
{
|
||||||
const int ret = ::send(m_desc, buffer, size, 0);
|
const int ret = ::send(m_desc, reinterpret_cast <const char*>(buffer), size, 0);
|
||||||
|
|
||||||
if (ret == SOCKET_ERROR)
|
if (ret == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
@ -350,11 +351,11 @@ void windowsSocket::sendRaw(const char* buffer, const size_t count)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t windowsSocket::sendRawNonBlocking(const char* buffer, const size_t count)
|
size_t windowsSocket::sendRawNonBlocking(const byte_t* buffer, const size_t count)
|
||||||
{
|
{
|
||||||
m_status &= ~STATUS_WOULDBLOCK;
|
m_status &= ~STATUS_WOULDBLOCK;
|
||||||
|
|
||||||
const int ret = ::send(m_desc, buffer, count, 0);
|
const int ret = ::send(m_desc, reinterpret_cast <const char*>(buffer), count, 0);
|
||||||
|
|
||||||
if (ret == SOCKET_ERROR)
|
if (ret == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
|
@ -55,11 +55,12 @@ public:
|
|||||||
void disconnect();
|
void disconnect();
|
||||||
|
|
||||||
void receive(vmime::string& buffer);
|
void receive(vmime::string& buffer);
|
||||||
size_t receiveRaw(char* buffer, const size_t count);
|
size_t receiveRaw(byte_t* buffer, const size_t count);
|
||||||
|
|
||||||
void send(const vmime::string& buffer);
|
void send(const vmime::string& buffer);
|
||||||
void sendRaw(const char* buffer, const size_t count);
|
void send(const char* str);
|
||||||
size_t sendRawNonBlocking(const char* buffer, const size_t count);
|
void sendRaw(const byte_t* buffer, const size_t count);
|
||||||
|
size_t sendRawNonBlocking(const byte_t* buffer, const size_t count);
|
||||||
|
|
||||||
size_t getBlockSize() const;
|
size_t getBlockSize() const;
|
||||||
|
|
||||||
@ -85,7 +86,7 @@ private:
|
|||||||
|
|
||||||
shared_ptr <vmime::net::timeoutHandler> m_timeoutHandler;
|
shared_ptr <vmime::net::timeoutHandler> m_timeoutHandler;
|
||||||
|
|
||||||
char m_buffer[65536];
|
byte_t m_buffer[65536];
|
||||||
SOCKET m_desc;
|
SOCKET m_desc;
|
||||||
|
|
||||||
unsigned int m_status;
|
unsigned int m_status;
|
||||||
|
@ -134,8 +134,7 @@ bool path::operator==(const path& p) const
|
|||||||
bool equal = true;
|
bool equal = true;
|
||||||
|
|
||||||
for ( ; equal && i != m_list.end() ; ++i, ++j)
|
for ( ; equal && i != m_list.end() ; ++i, ++j)
|
||||||
//equal = (*i == *j);
|
equal = ((*i).isEquivalent(*j));
|
||||||
equal = ((*i).getBuffer() == (*j).getBuffer());
|
|
||||||
|
|
||||||
return (equal);
|
return (equal);
|
||||||
}
|
}
|
||||||
@ -197,7 +196,7 @@ bool path::isDirectParentOf(const path& p) const
|
|||||||
bool equal = true;
|
bool equal = true;
|
||||||
|
|
||||||
for (list::size_type i = 0 ; equal && i < m_list.size() ; ++i)
|
for (list::size_type i = 0 ; equal && i < m_list.size() ; ++i)
|
||||||
equal = (m_list[i] == p.m_list[i]);
|
equal = (m_list[i].isEquivalent(p.m_list[i]));
|
||||||
|
|
||||||
return (equal);
|
return (equal);
|
||||||
}
|
}
|
||||||
@ -211,7 +210,7 @@ bool path::isParentOf(const path& p) const
|
|||||||
bool equal = true;
|
bool equal = true;
|
||||||
|
|
||||||
for (list::size_type i = 0 ; equal && i < m_list.size() ; ++i)
|
for (list::size_type i = 0 ; equal && i < m_list.size() ; ++i)
|
||||||
equal = (m_list[i] == p.m_list[i]);
|
equal = (m_list[i].isEquivalent(p.m_list[i]));
|
||||||
|
|
||||||
return (equal);
|
return (equal);
|
||||||
}
|
}
|
||||||
@ -226,7 +225,7 @@ void path::renameParent(const path& oldPath, const path& newPath)
|
|||||||
list::size_type i;
|
list::size_type i;
|
||||||
|
|
||||||
for (i = 0 ; equal && i < oldPath.m_list.size() ; ++i)
|
for (i = 0 ; equal && i < oldPath.m_list.size() ; ++i)
|
||||||
equal = (m_list[i] == oldPath.m_list[i]);
|
equal = (m_list[i].isEquivalent(oldPath.m_list[i]));
|
||||||
|
|
||||||
if (i != oldPath.m_list.size())
|
if (i != oldPath.m_list.size())
|
||||||
return;
|
return;
|
||||||
|
@ -723,8 +723,17 @@ bool word::operator!=(const word& w) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool word::isEquivalent(const word& other) const
|
||||||
|
{
|
||||||
|
return getConvertedText(charset(charsets::UTF_8)) == other.getConvertedText(charset(charsets::UTF_8));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const string word::getConvertedText(const charset& dest, const charsetConverterOptions& opts) const
|
const string word::getConvertedText(const charset& dest, const charsetConverterOptions& opts) const
|
||||||
{
|
{
|
||||||
|
if (dest == m_charset)
|
||||||
|
return m_buffer; // no conversion needed
|
||||||
|
|
||||||
string out;
|
string out;
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -85,6 +85,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
void setCharset(const charset& ch);
|
void setCharset(const charset& ch);
|
||||||
|
|
||||||
|
/** Returns whether two words actually represent the same text,
|
||||||
|
* regardless of their charset.
|
||||||
|
*
|
||||||
|
* @param other word to compare to
|
||||||
|
* @return true if the two words represent the same text, or false otherwise
|
||||||
|
*/
|
||||||
|
bool isEquivalent(const word& other) const;
|
||||||
|
|
||||||
|
|
||||||
word& operator=(const word& w);
|
word& operator=(const word& w);
|
||||||
word& operator=(const string& s);
|
word& operator=(const string& s);
|
||||||
|
@ -25,6 +25,9 @@
|
|||||||
|
|
||||||
#include "vmime/platform.hpp"
|
#include "vmime/platform.hpp"
|
||||||
|
|
||||||
|
#include <locale>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
|
|
||||||
VMIME_TEST_SUITE_BEGIN(emailAddressTest)
|
VMIME_TEST_SUITE_BEGIN(emailAddressTest)
|
||||||
|
|
||||||
@ -41,6 +44,27 @@ VMIME_TEST_SUITE_BEGIN(emailAddressTest)
|
|||||||
VMIME_TEST_LIST_END
|
VMIME_TEST_LIST_END
|
||||||
|
|
||||||
|
|
||||||
|
void setUp()
|
||||||
|
{
|
||||||
|
// Set the global C and C++ locale to the user-configured locale.
|
||||||
|
// The locale should use UTF-8 encoding for these tests to run successfully.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::locale::global(std::locale(""));
|
||||||
|
}
|
||||||
|
catch (std::exception &)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_ALL, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void tearDown()
|
||||||
|
{
|
||||||
|
// Restore default locale
|
||||||
|
std::locale::global(std::locale("C"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void testParseASCII()
|
void testParseASCII()
|
||||||
{
|
{
|
||||||
vmime::emailAddress eml1("local@domain");
|
vmime::emailAddress eml1("local@domain");
|
||||||
|
@ -23,6 +23,9 @@
|
|||||||
|
|
||||||
#include "tests/testUtils.hpp"
|
#include "tests/testUtils.hpp"
|
||||||
|
|
||||||
|
#include <locale>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
|
|
||||||
VMIME_TEST_SUITE_BEGIN(parameterTest)
|
VMIME_TEST_SUITE_BEGIN(parameterTest)
|
||||||
|
|
||||||
@ -62,6 +65,27 @@ VMIME_TEST_SUITE_BEGIN(parameterTest)
|
|||||||
(p.getParameterAt(n)->getValue().getBuffer())
|
(p.getParameterAt(n)->getValue().getBuffer())
|
||||||
|
|
||||||
|
|
||||||
|
void setUp()
|
||||||
|
{
|
||||||
|
// Set the global C and C++ locale to the user-configured locale.
|
||||||
|
// The locale should use UTF-8 encoding for these tests to run successfully.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::locale::global(std::locale(""));
|
||||||
|
}
|
||||||
|
catch (std::exception &)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_ALL, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void tearDown()
|
||||||
|
{
|
||||||
|
// Restore default locale
|
||||||
|
std::locale::global(std::locale("C"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void testParse()
|
void testParse()
|
||||||
{
|
{
|
||||||
// Simple parameter
|
// Simple parameter
|
||||||
|
@ -23,6 +23,9 @@
|
|||||||
|
|
||||||
#include "tests/testUtils.hpp"
|
#include "tests/testUtils.hpp"
|
||||||
|
|
||||||
|
#include <locale>
|
||||||
|
#include <clocale>
|
||||||
|
|
||||||
|
|
||||||
VMIME_TEST_SUITE_BEGIN(textTest)
|
VMIME_TEST_SUITE_BEGIN(textTest)
|
||||||
|
|
||||||
@ -78,6 +81,27 @@ VMIME_TEST_SUITE_BEGIN(textTest)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void setUp()
|
||||||
|
{
|
||||||
|
// Set the global C and C++ locale to the user-configured locale.
|
||||||
|
// The locale should use UTF-8 encoding for these tests to run successfully.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::locale::global(std::locale(""));
|
||||||
|
}
|
||||||
|
catch (std::exception &)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_ALL, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void tearDown()
|
||||||
|
{
|
||||||
|
// Restore default locale
|
||||||
|
std::locale::global(std::locale("C"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void testConstructors()
|
void testConstructors()
|
||||||
{
|
{
|
||||||
vmime::text t1;
|
vmime::text t1;
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#include "vmime/utility/path.hpp"
|
#include "vmime/utility/path.hpp"
|
||||||
|
|
||||||
|
|
||||||
VMIME_TEST_SUITE_BEGIN(pathTest)
|
VMIME_TEST_SUITE_BEGIN(utilityPathTest)
|
||||||
|
|
||||||
VMIME_TEST_LIST_BEGIN
|
VMIME_TEST_LIST_BEGIN
|
||||||
VMIME_TEST(testConstruct1)
|
VMIME_TEST(testConstruct1)
|
||||||
@ -50,6 +50,7 @@ VMIME_TEST_SUITE_BEGIN(pathTest)
|
|||||||
|
|
||||||
VMIME_TEST(testIsDirectParentOf)
|
VMIME_TEST(testIsDirectParentOf)
|
||||||
VMIME_TEST(testIsParentOf)
|
VMIME_TEST(testIsParentOf)
|
||||||
|
VMIME_TEST(testIsParentOf_EquivalentCharset)
|
||||||
|
|
||||||
VMIME_TEST(testRenameParent)
|
VMIME_TEST(testRenameParent)
|
||||||
VMIME_TEST_LIST_END
|
VMIME_TEST_LIST_END
|
||||||
@ -271,6 +272,19 @@ VMIME_TEST_SUITE_BEGIN(pathTest)
|
|||||||
VASSERT_EQ("4", false, p2.isParentOf(p1));
|
VASSERT_EQ("4", false, p2.isParentOf(p1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void testIsParentOf_EquivalentCharset()
|
||||||
|
{
|
||||||
|
path p1;
|
||||||
|
p1.appendComponent(comp("foo", "us-ascii"));
|
||||||
|
|
||||||
|
path p2;
|
||||||
|
p2.appendComponent(comp("foo", "utf-8"));
|
||||||
|
p2.appendComponent(comp("bar"));
|
||||||
|
p2.appendComponent(comp("baz"));
|
||||||
|
|
||||||
|
VASSERT_EQ("1", true, p1.isParentOf(p2));
|
||||||
|
}
|
||||||
|
|
||||||
void testRenameParent()
|
void testRenameParent()
|
||||||
{
|
{
|
||||||
path p1;
|
path p1;
|
||||||
|
Loading…
Reference in New Issue
Block a user