You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
487 lines
23 KiB
487 lines
23 KiB
/* This file is part of the KDE project
|
|
Copyright (C) 2004 David Faure <faure@kde.org>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License version 2 as published by the Free Software Foundation.
|
|
|
|
This library 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
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
// Test program for libemailfunctions/email.h
|
|
#include "email.h"
|
|
|
|
#include <kcmdlineargs.h>
|
|
#include <kapplication.h>
|
|
#include <kdebug.h>
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <assert.h>
|
|
|
|
using namespace KPIM;
|
|
|
|
static bool check(const TQString& txt, const TQString& a, const TQString& b)
|
|
{
|
|
if (a == b) {
|
|
kdDebug() << txt << " : checking '" << a << "' against expected value '" << b << "'... " << "ok" << endl;
|
|
}
|
|
else {
|
|
kdDebug() << txt << " : checking '" << a << "' against expected value '" << b << "'... " << "KO !" << endl;
|
|
exit(1);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
static bool check(const TQString& txt, const TQStringList& a, const TQStringList& b)
|
|
{
|
|
if ( a.join("\n") == b.join("\n") ) {
|
|
kdDebug() << txt << " : checking list [ " << a.join( ", " ) << " ] against expected value [ " << b.join( ", " ) << " ]... " << "ok" << endl;
|
|
}
|
|
else {
|
|
kdDebug() << txt << " : checking list [ " << a.join( ",\n" ) << " ] against expected value [ " << b.join( ",\n" ) << " ]... " << "KO !" << endl;
|
|
exit(1);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
static bool checkGetNameAndEmail(const TQString& input, const TQString& expName, const TQString& expEmail, bool expRetVal)
|
|
{
|
|
TQString name, email;
|
|
bool retVal = KPIM::getNameAndMail(input, name, email);
|
|
check( "getNameAndMail " + input + " retVal", retVal?TQString::fromLatin1( "true" ):TQString::fromLatin1( "false" ), expRetVal?TQString::fromLatin1( "true" ):TQString::fromLatin1( "false" ) );
|
|
check( "getNameAndMail " + input + " name", name, expName );
|
|
check( "getNameAndMail " + input + " email", email, expEmail );
|
|
return true;
|
|
}
|
|
|
|
// convert this to a switch instead but hey, nothing speedy in here is needed but still.. it would be nice
|
|
static TQString emailTestParseResultToString( EmailParseResult errorCode )
|
|
{
|
|
if( errorCode == TooManyAts ) {
|
|
return "TooManyAts";
|
|
} else if( errorCode == TooFewAts ) {
|
|
return "TooFewAts";
|
|
} else if( errorCode == AddressEmpty ) {
|
|
return "AddressEmpty";
|
|
} else if( errorCode == MissingLocalPart ) {
|
|
return "MissingLocalPart";
|
|
} else if( errorCode == MissingDomainPart ) {
|
|
return "MissingDomainPart";
|
|
} else if( errorCode == UnbalancedParens ) {
|
|
return "UnbalancedParens";
|
|
} else if( errorCode == AddressOk ) {
|
|
return "AddressOk";
|
|
} else if( errorCode == UnclosedAngleAddr ) {
|
|
return "UnclosedAngleAddr";
|
|
} else if( errorCode == UnexpectedEnd ) {
|
|
return "UnexpectedEnd";
|
|
} else if( errorCode == UnopenedAngleAddr ) {
|
|
return "UnopenedAngleAddr";
|
|
} else if( errorCode == DisallowedChar ) {
|
|
return "DisallowedChar";
|
|
} else if( errorCode == UnexpectedComma ) {
|
|
return "UnexpectedComma";
|
|
} else if( errorCode == UnbalancedQuote ) {
|
|
return "UnbalancedQuote";
|
|
} else if( errorCode == InvalidDisplayName ) {
|
|
return "InvalidDisplayName";
|
|
}
|
|
return "unknown error code";
|
|
}
|
|
|
|
static TQString simpleEmailTestParseResultToString( bool validEmail )
|
|
{
|
|
if ( validEmail ) {
|
|
return "true";
|
|
}
|
|
return "false";
|
|
}
|
|
|
|
static bool checkIsValidEmailAddress( const TQString& input, const TQString& expErrorCode )
|
|
{
|
|
EmailParseResult errorCode = KPIM::isValidEmailAddress( input );
|
|
TQString errorC = emailTestParseResultToString( errorCode );
|
|
check( "isValidEmailAddress " + input + " errorCode ", errorC , expErrorCode );
|
|
return true;
|
|
}
|
|
|
|
static bool checkIsValidSimpleEmailAddress( const TQString& input, const TQString& expResult )
|
|
{
|
|
bool validEmail = KPIM::isValidSimpleEmailAddress( input );
|
|
TQString result = simpleEmailTestParseResultToString( validEmail );
|
|
check( "isValidSimpleEmailAddress " + input + " result ", result, expResult );
|
|
return true;
|
|
}
|
|
|
|
static bool checkGetEmailAddress( const TQString& input, const TQString& expResult )
|
|
{
|
|
TQString emailAddress = KPIM::getEmailAddress( input );
|
|
TQString result = emailAddress;
|
|
check( "getEmailAddress " + input + " result ", result, expResult );
|
|
return true;
|
|
}
|
|
|
|
static bool checkSplitEmailAddrList( const TQString& input, const TQStringList& expResult )
|
|
{
|
|
TQStringList emailAddresses = KPIM::splitEmailAddrList( input );
|
|
check( "splitEmailAddrList( \"" + input + "\" ) result ", emailAddresses, expResult );
|
|
return true;
|
|
}
|
|
|
|
static bool checkNormalizeAddressesAndEncodeIDNs( const TQString& input, const TQString& expResult )
|
|
{
|
|
TQString result = KPIM::normalizeAddressesAndEncodeIDNs( input );
|
|
check( "normalizeAddressesAndEncodeIDNs( \"" + input + "\" ) result ", result, expResult );
|
|
return true;
|
|
}
|
|
|
|
static bool checkNormalizeAddressesAndDecodeIDNs( const TQString& input, const TQString& expResult )
|
|
{
|
|
TQString result = KPIM::normalizeAddressesAndDecodeIDNs( input );
|
|
check( "normalizeAddressesAndDecodeIDNs( \"" + input + "\" ) result ", result, expResult );
|
|
return true;
|
|
}
|
|
|
|
static bool checkQuoteIfNecessary( const TQString& input, const TQString& expResult )
|
|
{
|
|
TQString result = quoteNameIfNecessary( input );
|
|
check( "quoteNameIfNecessary " + input + " result ", result, expResult );
|
|
return true;
|
|
}
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
TDEApplication::disableAutoDcopRegistration();
|
|
TDECmdLineArgs::init( argc, argv, "testemail", 0, 0, 0, 0 );
|
|
TDEApplication app( false, false );
|
|
|
|
// Empty input
|
|
checkGetNameAndEmail( TQString(), TQString(), TQString(), false );
|
|
|
|
// Email only
|
|
checkGetNameAndEmail( "faure@kde.org", TQString(), "faure@kde.org", false );
|
|
|
|
// Normal case
|
|
checkGetNameAndEmail( "David Faure <faure@kde.org>", "David Faure", "faure@kde.org", true );
|
|
|
|
// Double-quotes
|
|
checkGetNameAndEmail( "\"Faure, David\" <faure@kde.org>", "Faure, David", "faure@kde.org", true );
|
|
checkGetNameAndEmail( "<faure@kde.org> \"David Faure\"", "David Faure", "faure@kde.org", true );
|
|
|
|
// Parenthesis
|
|
checkGetNameAndEmail( "faure@kde.org (David Faure)", "David Faure", "faure@kde.org", true );
|
|
checkGetNameAndEmail( "(David Faure) faure@kde.org", "David Faure", "faure@kde.org", true );
|
|
checkGetNameAndEmail( "My Name (me) <me@home.net>", "My Name (me)", "me@home.net", true ); // #93513
|
|
|
|
// Nested parenthesis as per https://intevation.de/roundup/kolab/issue858
|
|
checkGetNameAndEmail( "faure@kde.org (David (The Man) Faure)", "David (The Man) Faure", "faure@kde.org", true );
|
|
|
|
// Double-quotes inside parenthesis
|
|
checkGetNameAndEmail( "faure@kde.org (David \"Crazy\" Faure)", "David \"Crazy\" Faure", "faure@kde.org", true );
|
|
checkGetNameAndEmail( "(David \"Crazy\" Faure) faure@kde.org", "David \"Crazy\" Faure", "faure@kde.org", true );
|
|
|
|
// Parenthesis inside double-quotes
|
|
checkGetNameAndEmail( "\"Faure (David)\" <faure@kde.org>", "Faure (David)", "faure@kde.org", true );
|
|
checkGetNameAndEmail( "<faure@kde.org> \"Faure (David)\"", "Faure (David)", "faure@kde.org", true );
|
|
|
|
// Space in email
|
|
checkGetNameAndEmail( "David Faure < faure@kde.org >", "David Faure", "faure@kde.org", true );
|
|
|
|
// Check that '@' in name doesn't confuse it
|
|
checkGetNameAndEmail( "faure@kde.org (a@b)", "a@b", "faure@kde.org", true );
|
|
// Interestingly, this isn't supported.
|
|
//checkGetNameAndEmail( "\"a@b\" <faure@kde.org>", "a@b", "faure@kde.org", true );
|
|
|
|
// While typing, when there's no '@' yet
|
|
checkGetNameAndEmail( "foo", "foo", TQString(), false );
|
|
checkGetNameAndEmail( "foo <", "foo", TQString(), false );
|
|
checkGetNameAndEmail( "foo <b", "foo", "b", true );
|
|
|
|
// If multiple emails are there, only return the first one
|
|
checkGetNameAndEmail( "\"Faure, David\" <faure@kde.org>, KHZ <khz@khz.khz>", "Faure, David", "faure@kde.org", true );
|
|
|
|
// domain literals also need to work
|
|
checkGetNameAndEmail( "Matt Douhan <matt@[123.123.123.123]>", "Matt Douhan", "matt@[123.123.123.123]", true );
|
|
|
|
// @ inside the comment
|
|
checkGetNameAndEmail( "\"Matt@Douhan\" <matt@fruitsalad.org>", "Matt@Douhan", "matt@fruitsalad.org", true );
|
|
|
|
// No '@'
|
|
checkGetNameAndEmail( "foo <distlist>", "foo", "distlist", true );
|
|
|
|
// To many @'s
|
|
checkIsValidEmailAddress( "matt@@fruitsalad.org", "TooManyAts" );
|
|
|
|
// To few @'s
|
|
checkIsValidEmailAddress( "mattfruitsalad.org", "TooFewAts" );
|
|
|
|
// An empty string
|
|
checkIsValidEmailAddress( TQString() , "AddressEmpty" );
|
|
|
|
// email address starting with a @
|
|
checkIsValidEmailAddress( "@mattfruitsalad.org", "MissingLocalPart" );
|
|
|
|
// make sure that starting @ and an additional @ in the same email address don't conflict
|
|
// trap the starting @ first and break
|
|
checkIsValidEmailAddress( "@matt@fruitsalad.org", "MissingLocalPart" );
|
|
|
|
// email address ending with a @
|
|
checkIsValidEmailAddress( "mattfruitsalad.org@", "MissingDomainPart" );
|
|
|
|
// make sure that ending with@ and an additional @ in the email address don't conflict
|
|
checkIsValidEmailAddress( "matt@fruitsalad.org@", "MissingDomainPart" );
|
|
|
|
// unbalanced Parens
|
|
checkIsValidEmailAddress( "mattjongel)@fruitsalad.org", "UnbalancedParens" );
|
|
|
|
// unbalanced Parens the other way around
|
|
checkIsValidEmailAddress( "mattjongel(@fruitsalad.org", "UnbalancedParens" );
|
|
|
|
// Correct parens just to make sure it works
|
|
checkIsValidEmailAddress( "matt(jongel)@fruitsalad.org", "AddressOk" );
|
|
|
|
// Check that anglebrackets are closed
|
|
checkIsValidEmailAddress( "matt douhan<matt@fruitsalad.org", "UnclosedAngleAddr" );
|
|
|
|
// Check that angle brackets are closed the other way around
|
|
checkIsValidEmailAddress( "matt douhan>matt@fruitsalad.org", "UnopenedAngleAddr" );
|
|
|
|
// Check that angle brackets are closed the other way around, and anglebrackets in domainpart
|
|
// instead of local part
|
|
checkIsValidEmailAddress( "matt douhan matt@<fruitsalad.org", "UnclosedAngleAddr" );
|
|
|
|
// check that a properly formated anglebrackets situation is OK
|
|
checkIsValidEmailAddress( "matt douhan<matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// a full email address with comments angle brackets and the works should be valid too
|
|
checkIsValidEmailAddress( "Matt (jongel) Douhan <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// Double quotes
|
|
checkIsValidEmailAddress( "\"Matt Douhan\" <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// Double quotes inside parens
|
|
checkIsValidEmailAddress( "Matt (\"jongel\") Douhan <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// DOuble quotes not closed
|
|
checkIsValidEmailAddress( "Matt \"jongel Douhan <matt@fruitsalad.org>", "UnbalancedQuote" );
|
|
|
|
// Parens inside double quotes
|
|
checkIsValidEmailAddress( "Matt \"(jongel)\" Douhan <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// Space in email
|
|
checkIsValidEmailAddress( "Matt Douhan < matt@fruitsalad.org >", "AddressOk" );
|
|
|
|
// @ is allowed inisde doublequotes
|
|
checkIsValidEmailAddress( "\"matt@jongel\" <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// anglebrackets inside dbl quotes
|
|
checkIsValidEmailAddress( "\"matt<blah blah>\" <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// a , inside a double quoted string is OK, how do I know this? well Ingo says so
|
|
// and it makes sense since it is also a seperator of email addresses
|
|
checkIsValidEmailAddress( "\"Douhan, Matt\" <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// Domains literals also need to work
|
|
checkIsValidEmailAddress( "Matt Douhan <matt@[123.123.123.123]>", "AddressOk" );
|
|
|
|
// Typo in domain literal address
|
|
checkIsValidEmailAddress( "Matt Douhan <matt@[123.123.123,123]>", "UnexpectedComma" );
|
|
|
|
// Some more insane tests but still valid so they must work
|
|
checkIsValidEmailAddress( "Matt Douhan <\"m@att\"@jongel.com>", "AddressOk" );
|
|
|
|
// BUG 99657
|
|
checkIsValidEmailAddress( "matt@jongel.fibbel.com", "AddressOk" );
|
|
|
|
// BUG 98720
|
|
checkIsValidEmailAddress( "mailto:@mydomain", "DisallowedChar" );
|
|
|
|
// correct error msg when a comma is inside <>
|
|
checkIsValidEmailAddress( "Matt Douhan <matt@fruitsalad,org>", "UnexpectedComma" );
|
|
|
|
//several commentlevels
|
|
checkIsValidEmailAddress( "Matt Douhan (hey(jongel)fibbel) <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// several comment levels and one (the outer) being unbalanced
|
|
checkIsValidEmailAddress( "Matt Douhan (hey(jongel)fibbel <matt@fruitsalad.org>", "UnbalancedParens" );
|
|
|
|
// several comment levels and one (the inner) being unbalanced
|
|
checkIsValidEmailAddress( "Matt Douhan (hey(jongelfibbel) <matt@fruitsalad.org>", "UnbalancedParens" );
|
|
|
|
// an error inside a double quote is no error
|
|
checkIsValidEmailAddress ( "Matt Douhan \"(jongel\" <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// inside a quoted string double quotes are only allowed in pairs as per rfc2822
|
|
checkIsValidEmailAddress( "Matt Douhan \"jongel\"fibbel\" <matt@fruitsalad.org>", "UnbalancedQuote" );
|
|
|
|
// a questionmark is valid in an atom
|
|
checkIsValidEmailAddress ( "Matt? <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// weird but OK
|
|
checkIsValidEmailAddress( "\"testing, \\\"testing\" <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// escape a quote to many to see if it makes it invalid
|
|
checkIsValidEmailAddress( "\"testing, \\\"testing\\\" <matt@fruitsalad.org>", "UnbalancedQuote" );
|
|
|
|
// escape a parens and thus make a comma appear
|
|
checkIsValidEmailAddress( "Matt (jongel, fibbel\\) <matt@fruitsalad.org>", "UnbalancedParens" );
|
|
|
|
// several errors inside doublequotes
|
|
checkIsValidEmailAddress( "Matt \"(jongel,\\\" < fibbel\\\\)\" <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
// BUG 105705
|
|
checkIsValidEmailAddress( "matt-@fruitsalad.org", "AddressOk" );
|
|
|
|
// underscore at the end of local part
|
|
checkIsValidEmailAddress( "matt_@fruitsalad.org", "AddressOk" );
|
|
|
|
// how about ( comment ) in the domain part
|
|
checkIsValidEmailAddress( "matt_@(this is a cool host)fruitsalad.org", "AddressOk" );
|
|
|
|
// To quote rfc2822 the test below is aesthetically displeasing, but perfectly legal.
|
|
checkIsValidEmailAddress( "Pete(A wonderful \\) chap) <pete(his account)@silly.test(his host)>", "AddressOk" );
|
|
|
|
// quoted pair or not quoted pair
|
|
checkIsValidEmailAddress( "\"jongel '\\\" fibbel\" <matt@fruitsalad.org>", "AddressOk" );
|
|
checkIsValidEmailAddress( "\"jongel '\" fibbel\" <matt@fruitsalad.org>", "UnbalancedQuote" );
|
|
|
|
// full atext support according to rfc2822
|
|
checkIsValidEmailAddress( "!matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "#matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "$matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "%matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "&matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "'matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "*matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "+matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "/matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "=matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "?matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "^matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "_matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "-matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "`matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "{matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "|matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "}matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "~matt@fruitsalad.org", "AddressOk" );
|
|
checkIsValidEmailAddress( "matt%matt@fruitsalad.org", "AddressOk" );
|
|
|
|
//bug 105405
|
|
checkIsValidEmailAddress( "[foobar] <matt@fruitsalad.org>", "InvalidDisplayName" );
|
|
checkIsValidEmailAddress( "matt \"[foobar]\" Douhan <matt@fruitsalad.org>", "AddressOk" );
|
|
|
|
checkIsValidEmailAddress( "Matt Douhan <matt\"@@\"fruitsalad.org>", "TooFewAts" );
|
|
|
|
// checks for "pure" email addresses in the form of xxx@yyy.tld
|
|
checkIsValidSimpleEmailAddress( "matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( TQString::fromUtf8("test@täst.invalid"), "true" );
|
|
// non-ASCII char as first char of IDN
|
|
checkIsValidSimpleEmailAddress( TQString::fromUtf8("i_want@øl.invalid"), "true" );
|
|
checkIsValidSimpleEmailAddress( "matt@[123.123.123.123]", "true" );
|
|
checkIsValidSimpleEmailAddress( "matt@[3.3.3.3]", "true" );
|
|
checkIsValidSimpleEmailAddress( "matt@[4.4.4.4]", "true" );
|
|
checkIsValidSimpleEmailAddress( "matt@[192.168.254.254]", "true" );
|
|
checkIsValidSimpleEmailAddress( "\"matt\"@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "-matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "\"-matt\"@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "matt@jongel.fibbel.com", "true" );
|
|
checkIsValidSimpleEmailAddress( "Matt Douhan <matt@fruitsalad.org>", "false" );
|
|
// BUG 105705
|
|
checkIsValidSimpleEmailAddress( "matt-@fibbel.com", "true" );
|
|
checkIsValidSimpleEmailAddress( "matt@fibbel-is-a-geek.com", "true" );
|
|
checkIsValidSimpleEmailAddress( "matt_@fibbel.com", "true" );
|
|
// Check the defined chars for atext according to rfc2822
|
|
checkIsValidSimpleEmailAddress( "!matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "#matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "$matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "%matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "&matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "'matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "*matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "+matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "/matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "=matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "?matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "^matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "_matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "-matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "`matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "{matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "|matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "}matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "~matt@fruitsalad.org", "true" );
|
|
// BUG 108476
|
|
checkIsValidSimpleEmailAddress( "foo+matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "bar=matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "jongel-matt@fruitsalad.org", "true" );
|
|
checkIsValidSimpleEmailAddress( "matt-@fruitsalad.org", "true" );
|
|
|
|
// check if the pure email address is wrong
|
|
checkIsValidSimpleEmailAddress( "mattfruitsalad.org", "false" );
|
|
checkIsValidSimpleEmailAddress( "matt@[123.123.123.123", "false" );
|
|
checkIsValidSimpleEmailAddress( "matt@123.123.123.123]", "false" );
|
|
checkIsValidSimpleEmailAddress( "\"matt@fruitsalad.org", "false" );
|
|
checkIsValidSimpleEmailAddress( "matt\"@fruitsalad.org", "false" );
|
|
checkIsValidSimpleEmailAddress( TQString(), "false" );
|
|
|
|
// and here some insane but still valid cases
|
|
checkIsValidSimpleEmailAddress( "\"m@tt\"@fruitsalad.org", "true" );
|
|
|
|
checkIsValidSimpleEmailAddress( "matt\"@@\"fruitsalad.org", "false" );
|
|
|
|
// check the getEmailAddress address method
|
|
checkGetEmailAddress( "matt@fruitsalad.org", "matt@fruitsalad.org" );
|
|
checkGetEmailAddress( "Matt Douhan <matt@fruitsalad.org>", "matt@fruitsalad.org" );
|
|
checkGetEmailAddress( "\"Matt Douhan <blah blah>\" <matt@fruitsalad.org>", "matt@fruitsalad.org" );
|
|
checkGetEmailAddress( "\"Matt <blah blah>\" <matt@fruitsalad.org>", "matt@fruitsalad.org" );
|
|
checkGetEmailAddress( "Matt Douhan (jongel) <matt@fruitsalad.org", TQString() );
|
|
checkGetEmailAddress( "Matt Douhan (m@tt) <matt@fruitsalad.org>", "matt@fruitsalad.org" );
|
|
checkGetEmailAddress( "\"Douhan, Matt\" <matt@fruitsalad.org>", "matt@fruitsalad.org" );
|
|
checkGetEmailAddress( "\"Matt Douhan (m@tt)\" <matt@fruitsalad.org>", "matt@fruitsalad.org" );
|
|
checkGetEmailAddress( "\"Matt Douhan\" (matt <matt@fruitsalad.org>", TQString() );
|
|
checkGetEmailAddress( "Matt Douhan <matt@[123.123.123.123]>", "matt@[123.123.123.123]" );
|
|
|
|
// check the splitEmailAddrList method
|
|
checkSplitEmailAddrList( "kloecker@kde.org (Kloecker, Ingo)", TQStringList() << "kloecker@kde.org (Kloecker, Ingo)" );
|
|
checkSplitEmailAddrList( "Matt Douhan <matt@fruitsalad.org>, Foo Bar <foo@bar.com>", TQStringList() << "Matt Douhan <matt@fruitsalad.org>" << "Foo Bar <foo@bar.com>" );
|
|
checkSplitEmailAddrList( "\"Matt, Douhan\" <matt@fruitsalad.org>, Foo Bar <foo@bar.com>", TQStringList() << "\"Matt, Douhan\" <matt@fruitsalad.org>" << "Foo Bar <foo@bar.com>" );
|
|
|
|
// check checkNormalizeAddressesAndEncodeIDNs
|
|
checkNormalizeAddressesAndEncodeIDNs( "matt@fruitsalad.org", "matt@fruitsalad.org" );
|
|
checkNormalizeAddressesAndEncodeIDNs( "Matt Douhan <matt@fruitsalad.org>", "Matt Douhan <matt@fruitsalad.org>" );
|
|
checkNormalizeAddressesAndEncodeIDNs( "Matt Douhan (jongel) <matt@fruitsalad.org>", "Matt Douhan (jongel) <matt@fruitsalad.org>" );
|
|
checkNormalizeAddressesAndEncodeIDNs( "Matt Douhan (jongel,fibbel) <matt@fruitsalad.org>", "Matt Douhan (jongel,fibbel) <matt@fruitsalad.org>" );
|
|
checkNormalizeAddressesAndEncodeIDNs( "matt@fruitsalad.org (jongel,fibbel)", "\"jongel,fibbel\" <matt@fruitsalad.org>" );
|
|
checkNormalizeAddressesAndEncodeIDNs( "matt@fruitsalad.org (\"jongel,fibbel\")", "\"jongel,fibbel\" <matt@fruitsalad.org>" );
|
|
|
|
// check checkNormalizeAddressesAndDecodeIDNs
|
|
checkNormalizeAddressesAndDecodeIDNs( "=?us-ascii?Q?Surname=2C=20Name?= <nobody@example.org>", "\"Surname, Name\" <nobody@example.org>" );
|
|
checkNormalizeAddressesAndDecodeIDNs( "=?iso-8859-1?B?5Hf8b2xmLPZBbmRyZWFz?= <nobody@example.org>", TQString::fromUtf8("\"äwüolf,öAndreas\" <nobody@example.org>") );
|
|
|
|
// check the "quote if necessary" method
|
|
checkQuoteIfNecessary( "Matt Douhan", "Matt Douhan");
|
|
checkQuoteIfNecessary( "Douhan, Matt", "\"Douhan, Matt\"");
|
|
checkQuoteIfNecessary( "Matt \"jongel\" Douhan", "\"Matt \\\"jongel\\\" Douhan\"");
|
|
checkQuoteIfNecessary( "Matt \\\"jongel\\\" Douhan", "\"Matt \\\"jongel\\\" Douhan\"");
|
|
checkQuoteIfNecessary( "trailing '\\\\' should never occur \\", "\"trailing '\\\\' should never occur \\\"");
|
|
checkQuoteIfNecessary( "\"don't quote again\"", "\"don't quote again\"" );
|
|
checkQuoteIfNecessary( "\"leading double quote", "\"\\\"leading double quote\"" );
|
|
checkQuoteIfNecessary( "trailing double quote\"", "\"trailing double quote\\\"\"" );
|
|
|
|
printf("\nTest OK !\n");
|
|
|
|
return 0;
|
|
}
|
|
|