本文整理汇总了C++中vmime::string类的典型用法代码示例。如果您正苦于以下问题:C++ string类的具体用法?C++ string怎么用?C++ string使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了string类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testWordGenerateSpace2
void testWordGenerateSpace2()
{
// White-space between two encoded words (#2)
vmime::text txt;
txt.appendWord(vmime::create <vmime::word>("Facture ", "utf-8"));
txt.appendWord(vmime::create <vmime::word>("\xc3\xa0", "utf-8"));
txt.appendWord(vmime::create <vmime::word>(" envoyer ", "utf-8"));
txt.appendWord(vmime::create <vmime::word>("\xc3\xa0", "utf-8"));
txt.appendWord(vmime::create <vmime::word>(" Martine", "utf-8"));
const vmime::string decoded = "Facture ""\xc3\xa0"" envoyer ""\xc3\xa0"" Martine";
const vmime::string encoded = "Facture =?utf-8?B?w6A=?= envoyer =?utf-8?B?w6A=?= Martine";
// -- test encoding
VASSERT_EQ("1", encoded, txt.generate());
// -- ensure no space is added when decoding
vmime::text txt2;
txt2.parse(encoded, 0, encoded.length());
VASSERT_EQ("2", decoded, txt2.getWholeBuffer());
// -- test rencoding
VASSERT_EQ("3", encoded, txt2.generate());
}
示例2: testWordGenerateSpace
void testWordGenerateSpace()
{
// No white-space between an unencoded word and a encoded one
VASSERT_EQ("1", "Bonjour =?utf-8?Q?Fran=C3=A7ois?=",
vmime::text::newFromString("Bonjour Fran\xc3\xa7ois",
vmime::charset("utf-8"))->generate());
// White-space between two encoded words
vmime::text txt;
txt.appendWord(vmime::create <vmime::word>("\xc3\x89t\xc3\xa9", "utf-8"));
txt.appendWord(vmime::create <vmime::word>("Fran\xc3\xa7ois", "utf-8"));
const vmime::string decoded = "\xc3\x89t\xc3\xa9""Fran\xc3\xa7ois";
const vmime::string encoded = "=?utf-8?B?w4l0w6k=?= =?utf-8?Q?Fran=C3=A7ois?=";
// -- test encoding
VASSERT_EQ("2", encoded, txt.generate());
// -- ensure no space is added when decoding
vmime::text txt2;
txt2.parse(encoded, 0, encoded.length());
VASSERT_EQ("3", decoded, txt2.getWholeBuffer());
// -- test rencoding
VASSERT_EQ("4", encoded, txt2.generate());
}
示例3: isFQDN
static inline bool isFQDN(const vmime::string& str)
{
if (utility::stringUtils::isStringEqualNoCase(str, "localhost", 9))
return false;
const vmime::size_t p = str.find_first_of(".");
return p != vmime::string::npos && p > 0 && p != str.length() - 1;
}
示例4: getMonth
int getMonth(vmime::string mstr)
{
std::transform(mstr.begin(), mstr.end(), mstr.begin(), ::tolower);
std::map <vmime::string, vmime::datetime::Months>::const_iterator
c_it = m_monthMap.find(mstr);
if (c_it != m_monthMap.end())
return c_it->second;
return -1;
}
示例5: testStripSpacesAtEnd
void testStripSpacesAtEnd()
{
vmime::parsingContext ctx;
const vmime::string buffer = "Field: \r\n\tfield data ";
vmime::ref <vmime::headerField> hfield =
vmime::headerField::parseNext(ctx, buffer, 0, buffer.size());
vmime::ref <vmime::text> hvalue =
hfield->getValue().dynamicCast <vmime::text>();
VASSERT_EQ("Field name", "Field", hfield->getName());
VASSERT_EQ("Field value", toHex("field data"), toHex(hvalue->getWholeBuffer()));
}
示例6: setUp
void setUp()
{
testDataDecoded = "ABCDEFGHIJKLMNOPQRSTUVWXYZ \x12\x34\x56\x78\x90 abcdefghijklmnopqrstuvwxyz0123456789";
testDataEncoded = "QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogEjRWeJAgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5";
std::ostringstream testFilePath;
testFilePath << "/tmp/vmime_test_" << (rand() % 999999999);
vmime::ref <vmime::utility::fileSystemFactory> fsf =
vmime::platform::getHandler()->getFileSystemFactory();
testFile = fsf->create(fsf->stringToPath(testFilePath.str()));
testFile->createFile();
testFile->getFileWriter()->getOutputStream()->write(testDataEncoded.data(), testDataEncoded.length());
}
示例7: testListMessagesImpl
void testListMessagesImpl(const vmime::string* const dirs, const vmime::string* const files)
{
createMaildir(dirs, files);
vmime::ref <vmime::net::store> store = createAndConnectStore();
vmime::ref <vmime::net::folder> rootFolder = store->getRootFolder();
vmime::ref <vmime::net::folder> folder = store->getFolder
(fpath() / "Folder" / "SubFolder" / "SubSubFolder2");
int count, unseen;
folder->status(count, unseen);
VASSERT_EQ("Message count", 1, count);
folder->open(vmime::net::folder::MODE_READ_ONLY);
vmime::ref <vmime::net::message> msg = folder->getMessage(1);
folder->fetchMessage(msg, vmime::net::folder::FETCH_SIZE);
VASSERT_EQ("Message size", TEST_MESSAGE_1.length(), msg->getSize());
std::ostringstream oss;
vmime::utility::outputStreamAdapter os(oss);
msg->extract(os);
VASSERT_EQ("Message contents", TEST_MESSAGE_1, oss.str());
folder->close(false);
destroyMaildir();
}
示例8: connect
void windowsSocket::connect(const vmime::string& address, const vmime::port_t port)
{
// Close current connection, if any
if (m_desc != -1)
{
::closesocket(m_desc);
m_desc = -1;
}
// Resolve address
::sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(static_cast <unsigned short>(port));
addr.sin_addr.s_addr = ::inet_addr(address.c_str());
if (addr.sin_addr.s_addr == static_cast <int>(-1))
{
::hostent* hostInfo = ::gethostbyname(address.c_str());
if (hostInfo == NULL)
{
// Error: cannot resolve address
throw vmime::exceptions::connection_error("Cannot resolve address.");
}
memcpy(reinterpret_cast <char*>(&addr.sin_addr), hostInfo->h_addr, hostInfo->h_length);
}
// Get a new socket
m_desc = ::socket(AF_INET, SOCK_STREAM, 0);
if (m_desc == -1)
throw vmime::exceptions::connection_error("Error while creating socket.");
// Start connection
if (::connect(m_desc, reinterpret_cast <sockaddr*>(&addr), sizeof(addr)) == -1)
{
::closesocket(m_desc);
m_desc = -1;
// Error
throw vmime::exceptions::connection_error("Error while connecting socket.");
}
}
示例9: string
VMIME_TEST_LIST_END
static const vmime::string extractComponentString
(const vmime::string& buffer, const vmime::component& c)
{
return vmime::string(buffer.begin() + c.getParsedOffset(),
buffer.begin() + c.getParsedOffset() + c.getParsedLength());
}
示例10: localReceiveLine
bool testSocket::localReceiveLine(vmime::string& line)
{
vmime::size_t eol;
if ((eol = m_outBuffer.find('\n')) != vmime::string::npos)
{
line = vmime::string(m_outBuffer.begin(), m_outBuffer.begin() + eol);
if (!line.empty() && line[line.length() - 1] == '\r')
line.erase(line.end() - 1, line.end());
m_outBuffer.erase(m_outBuffer.begin(), m_outBuffer.begin() + eol + 1);
return true;
}
return false;
}
示例11: toHex
const vmime::string toHex(const vmime::string str)
{
static const char hexChars[] = "0123456789abcdef";
vmime::string res = "\n";
for (size_t i = 0 ; i < str.length() ; i += 16)
{
size_t r = std::min
(static_cast <size_t>(16), str.length() - i);
vmime::string hex;
vmime::string chr;
for (size_t j = 0 ; j < r ; ++j)
{
const unsigned char c = str[i + j];
hex += hexChars[c / 16];
hex += hexChars[c % 16];
hex += " ";
if (c >= 32 && c <= 127)
chr += c;
else
chr += '.';
}
for (size_t j = r ; j < 16 ; ++j)
hex += " ";
res += hex + " " + chr + "\n";
}
return res;
}
示例12: connect
void posixSocket::connect(const vmime::string& address, const vmime::port_t port)
{
// Close current connection, if any
if (m_desc != -1)
{
::close(m_desc);
m_desc = -1;
}
#if VMIME_HAVE_GETADDRINFO // use thread-safe and IPv6-aware getaddrinfo() if available
// Resolve address, if needed
struct ::addrinfo hints;
memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_CANONNAME;
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
std::ostringstream portStr;
portStr.imbue(std::locale::classic());
portStr << port;
struct ::addrinfo* res0;
if (::getaddrinfo(address.c_str(), portStr.str().c_str(), &hints, &res0) != 0)
{
// Error: cannot resolve address
throw vmime::exceptions::connection_error("Cannot resolve address.");
}
// Connect to host
int sock = -1;
struct ::addrinfo* res = res0;
for ( ; sock == -1 && res != NULL ; res = res->ai_next)
{
sock = ::socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (sock < 0)
continue; // try next
if (m_timeoutHandler != NULL)
{
::fcntl(sock, F_SETFL, ::fcntl(sock, F_GETFL) | O_NONBLOCK);
if (::connect(sock, res->ai_addr, res->ai_addrlen) < 0)
{
switch (errno)
{
case 0:
case EINPROGRESS:
case EINTR:
#if defined(EAGAIN)
case EAGAIN:
#endif // EAGAIN
#if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN))
case EWOULDBLOCK:
#endif // EWOULDBLOCK
// Connection in progress
break;
default:
::close(sock);
sock = -1;
continue; // try next
}
// Wait for socket to be connected.
// We will check for time out every second.
fd_set fds;
FD_ZERO(&fds);
FD_SET(sock, &fds);
fd_set fdsError;
FD_ZERO(&fdsError);
FD_SET(sock, &fdsError);
struct timeval tm;
tm.tv_sec = 1;
tm.tv_usec = 0;
m_timeoutHandler->resetTimeOut();
bool connected = false;
do
{
const int ret = select(sock + 1, NULL, &fds, &fdsError, &tm);
// Success
if (ret > 0)
{
connected = true;
break;
}
// Error
//.........这里部分代码省略.........
示例13: send
void posixSocket::send(const vmime::string& buffer)
{
sendRaw(buffer.data(), buffer.length());
}
示例14: sendattach
int sendattach(SENDMAIL_VARIABLES *mvars)
{
#ifndef WIN32
vmime::platform::setHandler<vmime::platforms::posix::posixHandler>();
#else
vmime::platform::setHandler<vmime::platforms::windows::windowsHandler>();
#endif
if((mvars->from_addr==NULL)&&(mvars->tolist==NULL)&&(mvars->cclist==NULL)&&(mvars->bcclist==NULL)&&(mvars->from_addr==NULL)) {
cerr << "No Email Recipients Specified..." <<endl ;
ostringstream errmsg;
std::string errstring;
errmsg << "ERRORDIALOG \"ERROR SENDING EMAIL\" \"No Email Recipients Specified..." << endl << endl << endl << endl
<< (mvars->from_name==NULL ? "" : "From Name: ") << (mvars->from_name==NULL ? "" : mvars->from_name) << (mvars->from_name==NULL ? "" : "\n" )
<< (mvars->from_addr==NULL ? "" : "From Address: ") << (mvars->from_addr==NULL ? "" : mvars->from_addr) << (mvars->from_addr==NULL ? "" : "\n" )
<< (mvars->tolist==NULL ? "" : "TO: ") << (mvars->tolist==NULL ? "" : mvars->tolist) << (mvars->tolist==NULL ? "" : "\n" )
<< (mvars->cclist==NULL ? "" : "CC: ") << (mvars->cclist==NULL ? "" : mvars->cclist) << (mvars->cclist==NULL ? "" : "\n" )
<< (mvars->bcclist==NULL ? "" : "BCC: ") << (mvars->bcclist==NULL ? "" : mvars->bcclist) << (mvars->bcclist==NULL ? "" : "\n" )
<< (mvars->subject==NULL ? "" : "Subject: ") << (mvars->subject==NULL ? "" : mvars->subject) << (mvars->subject==NULL ? "" : "\n" )
<< (mvars->fname[0]==NULL ? "" : "Filename 0: ") << (mvars->fname[0]==NULL ? "" : mvars->fname[0]) << (mvars->fname[0]==NULL ? "" : "\n" )
<< (mvars->fname[1]==NULL ? "" : "Filename 1: ") << (mvars->fname[1]==NULL ? "" : mvars->fname[1]) << (mvars->fname[1]==NULL ? "" : "\n" )
<< (mvars->fname[2]==NULL ? "" : "Filename 2: ") << (mvars->fname[2]==NULL ? "" : mvars->fname[2]) << (mvars->fname[2]==NULL ? "" : "\n" )
<< (mvars->fname[3]==NULL ? "" : "Filename 3: ") << (mvars->fname[3]==NULL ? "" : mvars->fname[3]) << (mvars->fname[3]==NULL ? "" : "\n" )
<< (mvars->fname[4]==NULL ? "" : "Filename 4: ") << (mvars->fname[4]==NULL ? "" : mvars->fname[4]) << (mvars->fname[4]==NULL ? "" : "\n" )
<< (mvars->fname[5]==NULL ? "" : "Filename 5: ") << (mvars->fname[5]==NULL ? "" : mvars->fname[5]) << (mvars->fname[5]==NULL ? "" : "\n" )
<< (mvars->fname[6]==NULL ? "" : "Filename 6: ") << (mvars->fname[6]==NULL ? "" : mvars->fname[6]) << (mvars->fname[6]==NULL ? "" : "\n" )
<< (mvars->fname[7]==NULL ? "" : "Filename 7: ") << (mvars->fname[7]==NULL ? "" : mvars->fname[7]) << (mvars->fname[7]==NULL ? "" : "\n" )
<< (mvars->fname[8]==NULL ? "" : "Filename 8: ") << (mvars->fname[8]==NULL ? "" : mvars->fname[8]) << (mvars->fname[8]==NULL ? "" : "\n" )
<< (mvars->fname[9]==NULL ? "" : "Filename 9: ") << (mvars->fname[9]==NULL ? "" : mvars->fname[9]) << (mvars->fname[9]==NULL ? "" : "\n" )
<< (mvars->dname[0]==NULL ? "" : "Attachment 0: ") << (mvars->dname[0]==NULL ? "" : mvars->dname[0]) << (mvars->dname[0]==NULL ? "" : "\n" )
<< (mvars->dname[1]==NULL ? "" : "Attachment 1: ") << (mvars->dname[1]==NULL ? "" : mvars->dname[1]) << (mvars->dname[1]==NULL ? "" : "\n" )
<< (mvars->dname[2]==NULL ? "" : "Attachment 2: ") << (mvars->dname[2]==NULL ? "" : mvars->dname[2]) << (mvars->dname[2]==NULL ? "" : "\n" )
<< (mvars->dname[3]==NULL ? "" : "Attachment 3: ") << (mvars->dname[3]==NULL ? "" : mvars->dname[3]) << (mvars->dname[3]==NULL ? "" : "\n" )
<< (mvars->dname[4]==NULL ? "" : "Attachment 4: ") << (mvars->dname[4]==NULL ? "" : mvars->dname[4]) << (mvars->dname[4]==NULL ? "" : "\n" )
<< (mvars->dname[5]==NULL ? "" : "Attachment 5: ") << (mvars->dname[5]==NULL ? "" : mvars->dname[5]) << (mvars->dname[5]==NULL ? "" : "\n" )
<< (mvars->dname[6]==NULL ? "" : "Attachment 6: ") << (mvars->dname[6]==NULL ? "" : mvars->dname[6]) << (mvars->dname[6]==NULL ? "" : "\n" )
<< (mvars->dname[7]==NULL ? "" : "Attachment 7: ") << (mvars->dname[7]==NULL ? "" : mvars->dname[7]) << (mvars->dname[7]==NULL ? "" : "\n" )
<< (mvars->dname[8]==NULL ? "" : "Attachment 8: ") << (mvars->dname[8]==NULL ? "" : mvars->dname[8]) << (mvars->dname[8]==NULL ? "" : "\n" )
<< (mvars->dname[9]==NULL ? "" : "Attachment 9: ") << (mvars->dname[9]==NULL ? "" : mvars->dname[9]) << (mvars->dname[9]==NULL ? "" : "\n" )
<< (mvars->mtype[0]==NULL ? "" : "MimeType 0: ") << (mvars->mtype[0]==NULL ? "" : mvars->mtype[0]) << (mvars->mtype[0]==NULL ? "" : "\n" )
<< (mvars->mtype[1]==NULL ? "" : "MimeType 1: ") << (mvars->mtype[1]==NULL ? "" : mvars->mtype[1]) << (mvars->mtype[1]==NULL ? "" : "\n" )
<< (mvars->mtype[2]==NULL ? "" : "MimeType 2: ") << (mvars->mtype[2]==NULL ? "" : mvars->mtype[2]) << (mvars->mtype[2]==NULL ? "" : "\n" )
<< (mvars->mtype[3]==NULL ? "" : "MimeType 3: ") << (mvars->mtype[3]==NULL ? "" : mvars->mtype[3]) << (mvars->mtype[3]==NULL ? "" : "\n" )
<< (mvars->mtype[4]==NULL ? "" : "MimeType 4: ") << (mvars->mtype[4]==NULL ? "" : mvars->mtype[4]) << (mvars->mtype[4]==NULL ? "" : "\n" )
<< (mvars->mtype[5]==NULL ? "" : "MimeType 5: ") << (mvars->mtype[5]==NULL ? "" : mvars->mtype[5]) << (mvars->mtype[5]==NULL ? "" : "\n" )
<< (mvars->mtype[6]==NULL ? "" : "MimeType 6: ") << (mvars->mtype[6]==NULL ? "" : mvars->mtype[6]) << (mvars->mtype[6]==NULL ? "" : "\n" )
<< (mvars->mtype[7]==NULL ? "" : "MimeType 7: ") << (mvars->mtype[7]==NULL ? "" : mvars->mtype[7]) << (mvars->mtype[7]==NULL ? "" : "\n" )
<< (mvars->mtype[8]==NULL ? "" : "MimeType 8: ") << (mvars->mtype[8]==NULL ? "" : mvars->mtype[8]) << (mvars->mtype[8]==NULL ? "" : "\n" )
<< (mvars->mtype[9]==NULL ? "" : "MimeType 9: ") << (mvars->mtype[9]==NULL ? "" : mvars->mtype[9]) << (mvars->mtype[9]==NULL ? "" : "\n" )
<< (mvars->fdata[0]==NULL ? "" : "File Data 0: ") << (mvars->fdata[0]==NULL ? "" : "TRUE") << (mvars->fdata[0]==NULL ? "" : "\n" )
<< (mvars->fdata[1]==NULL ? "" : "File Data 1: ") << (mvars->fdata[1]==NULL ? "" : "TRUE") << (mvars->fdata[1]==NULL ? "" : "\n" )
<< (mvars->fdata[2]==NULL ? "" : "File Data 2: ") << (mvars->fdata[2]==NULL ? "" : "TRUE") << (mvars->fdata[2]==NULL ? "" : "\n" )
<< (mvars->fdata[3]==NULL ? "" : "File Data 3: ") << (mvars->fdata[3]==NULL ? "" : "TRUE") << (mvars->fdata[3]==NULL ? "" : "\n" )
<< (mvars->fdata[4]==NULL ? "" : "File Data 4: ") << (mvars->fdata[4]==NULL ? "" : "TRUE") << (mvars->fdata[4]==NULL ? "" : "\n" )
<< (mvars->fdata[5]==NULL ? "" : "File Data 5: ") << (mvars->fdata[5]==NULL ? "" : "TRUE") << (mvars->fdata[5]==NULL ? "" : "\n" )
<< (mvars->fdata[6]==NULL ? "" : "File Data 6: ") << (mvars->fdata[6]==NULL ? "" : "TRUE") << (mvars->fdata[6]==NULL ? "" : "\n" )
<< (mvars->fdata[7]==NULL ? "" : "File Data 7: ") << (mvars->fdata[7]==NULL ? "" : "TRUE") << (mvars->fdata[7]==NULL ? "" : "\n" )
<< (mvars->fdata[8]==NULL ? "" : "File Data 8: ") << (mvars->fdata[8]==NULL ? "" : "TRUE") << (mvars->fdata[8]==NULL ? "" : "\n" )
<< (mvars->fdata[9]==NULL ? "" : "File Data 9: ") << (mvars->fdata[9]==NULL ? "" : "TRUE") << (mvars->fdata[9]==NULL ? "" : "\n" )
<< (mvars->body==NULL ? "" : "Body: ") << (mvars->body==NULL ? "" : mvars->body) << (mvars->body==NULL ? "" : "\n" )
<< "\"" << endl;
//errstring=errmsg.str();
std::cerr << errstring;
/*
#ifdef WIN32
if(!mvars->ignerr) {
//system("ok.exe ERRORDIALOG \"ERROR SENDING EMAIL\" \"No Email Recipients Specified...\"");
system(errstring.c_str());
}
#else
if(!mvars->ignerr) {
//system("ok.lnx ERRORDIALOG \"ERROR SENDING EMAIL\" \"No Email Recipients Specified...\"");
system(errstring.c_str());
}
#endif
*/
return (1);
}
try
{
vmime::messageBuilder mb;
ostringstream ostream1;
if((mvars->from_name==NULL)&&(mvars->from_addr!=NULL)) {
ostream1 << " <" << mvars->from_addr << ">";
}else if((mvars->from_name!=NULL)&&(mvars->from_addr!=NULL)) {
ostream1 << mvars->from_name << " <" << mvars->from_addr << ">";
}else{
}
//std::cout <<stream1.str() << std::endl;
// Fill in the basic fields
mb.setExpeditor(vmime::mailbox(ostream1.str()));
vmime::addressList from;
//.........这里部分代码省略.........
示例15: testBase64
VMIME_TEST_LIST_END
void testBase64()
{
static const vmime::string testSuites[] =
{
// Test 1
"",
"",
// Test 2
"A",
"QQ==",
// Test 3
"AB",
"QUI=",
// Test 4
"ABC",
"QUJD",
// Test 5
"foo",
"Zm9v",
// Test 6
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
"QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAx"
"MjM0NTY3ODk=",
// Test 7
vmime::string(
"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
"\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
"\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
"\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
"\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
"\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
"\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
"\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
"\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
"\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
256),
"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1"
"Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWpr"
"bG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6Ch"
"oqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX"
"2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w=="
};
for (unsigned int i = 0 ; i < sizeof(testSuites) / sizeof(testSuites[0]) / 2 ; ++i)
{
const vmime::string decoded = testSuites[i * 2];
const vmime::string encoded = testSuites[i * 2 + 1];
std::ostringstream oss;
oss << "[Base64] Test " << (i + 1) << ": ";
// Encoding
VASSERT_EQ(oss.str() + "encoding", encoded, encode("base64", decoded));
// Decoding
VASSERT_EQ(oss.str() + "decoding", decoded, decode("base64", encoded));
// Multiple and successive encoding/decoding
VASSERT_EQ(oss.str() + "multiple1", decoded,
decode("base64",
encode("base64", decoded)));
VASSERT_EQ(oss.str() + "multiple2", decoded,
decode("base64",
decode("base64",
encode("base64",
encode("base64", decoded)))));
VASSERT_EQ(oss.str() + "multiple3", decoded,
decode("base64",
decode("base64",
decode("base64",
encode("base64",
encode("base64",
encode("base64", decoded)))))));
VASSERT_EQ(oss.str() + "multiple4", decoded,
//.........这里部分代码省略.........