Mobical: Add new suppressions to synccompare, README.mobical and test

cases patches (Bug#3009)

1. Add new suppressions to synccompare for vcard21, ical20, itodo20 and
text.
2. Add README.mobical for mobical interoperability test results
3. Add 3 test patches for vcard21, ical20, itodo20
This commit is contained in:
Zhu, Yongsheng 2009-08-11 09:53:01 +08:00
parent 0c0f750af1
commit fe202f27d3
5 changed files with 505 additions and 2 deletions

146
test/README.mobical Normal file
View File

@ -0,0 +1,146 @@
This document is used to show interoperability test information with Mobical server.
http://bugzilla.moblin.org/show_bug.cgi?id=3009
* The Mobical Server's device information
mobical Data Synchronization Server v.7.1.1
Man=Tactel AB
Mod=Mobical Sync Server
SwV=3.0
HwV=-
FwV=-
OEM=-
DevID=http://www.mobical.net/sync/server
DevTyp=server
VerDTD=1.2
UTC=-
SupportLargeObjs=-
SupportNumberOfChanges=-
* Test Environment Variables Settings
CLIENT_TEST_SERVER=mobical CLIENT_TEST_EVOLUTION_PREFIX=file:///tmp/test/ \
CLIENT_TEST_MAX_ITEMSIZE=1 \
CLIENT_TEST_NOCHECK_SYNCMODE=1 \
CLIENT_TEST_SKIP=Client::Sync::vcard21::testRefreshFromClientSync, \
Client::Sync::vcard21::testSlowSyncSemantic, \
Client::Sync::vcard21::testRefreshStatus, \
Client::Sync::vcard21::testDelete, \
Client::Sync::vcard21::testItemsXML, \
Client::Sync::vcard21::testOneWayFromServer, \
Client::Sync::vcard21::testRetry,Client::Sync::vcard21::Suspend, \
Client::Sync::ical20::testRefreshFromClientSync, \
Client::Sync::ical20::testSlowSyncSemantic, \
Client::Sync::ical20::testRefreshStatus, \
Client::Sync::ical20::testDelete, \
Client::Sync::ical20::testItemsXML, \
Client::Sync::ical20::testOneWayFromServer, \
Client::Sync::ical20::testRetry,Client::Sync::vcard21::Suspend, \
Client::Sync::itodo20::testRefreshFromClientSync, \
Client::Sync::itodo20::testSlowSyncSemantic, \
Client::Sync::itodo20::testRefreshStatus, \
Client::Sync::itodo20::testDelete, \
Client::Sync::itodo20::testItemsXML, \
Client::Sync::itodo20::testOneWayFromServer, \
Client::Sync::itodo20::testRetry,Client::Sync::vcard21::Suspend, \
Client::Sync::text::testRefreshFromClientSync, \
Client::Sync::text::testSlowSyncSemantic, \
Client::Sync::text::testRefreshStatus, \
Client::Sync::text::testDelete, \
Client::Sync::text::testItemsXML, \
Client::Sync::text::testOneWayFromServer, \
Client::Sync::text::testRetry,Client::Sync::vcard21::Suspend, \
* Test Profiles Settings
N/A
* Data formats we need to test:
Client::Sync::vcard21
Client::Sync::ical20
Client::Sync::itodo20
Client::Sync::text
* Know Limitations in Mobical server:
All
-- If no data of any type of PIM in Mobical server, it always initiates a slow-sync.
This causes failures of testSlowSyncSemantic, testRefreshStatus, testDelete,
testOneWayFromServer,testRefreshFromClientSync.
-- It fails in xml mode due to devinfo wrapped with cdata type
This causes failure of testItemsXML.
vCard21
-- Below properties are not supported:
CALURI, CATEGORIES, FBURL, NICKNAME, X-MOZILLA-HTML, X-EVOLUTION-FILE-AS, X-AIM,
X-ANNIVERSARY, X-SPOUSE, X-EVOLUTION-BLOG-URL, X-EVOLUTION-VIDEO-URL, X-GROUPWISE, X-ICQ,
X-YAHOO, X-ASSISTANT
-- The parameter 'X-EVOLUTION-URI-SLOT'of properties like 'TEL' and 'EMAIL' is lost
-- 'PHOTO' is compressed by server but still be correct
-- 'FN' is not reserved and is replaced by server's composition of 'N'
-- 'NOTE' length is less than 4000
-- vcard must have one of 'tel', 'email', or 'url','addr', otherwise, this vcard will
not treat as a full item and server won't send them to client when sync
-- 'ADR' if it has no type information,
-- 'N' has parser's bugs for escaped char "\;"
-- 'BDAY' is always one-day behind the date client sends to server
-- ORG property only reserves its first field org name
ical20
-- Only support vCalendar1.0
-- Only Below properties are support by server:
DTSTART, DTEND, SUMMARY, DESCRIPTION, LOCATION, CATEGORIES, LAST-MODIFIED, DCREATED, CLASS, RRULE, EXRULE, RDATE, EXDATE, DTSTART, AALARM, DALARM
-- Below properties are lost by server though they are in the support list:
CLASS, AALARM, DALARM
-- Below properties are not accepted but in our test:
TRANSP, SEQUENCE,UID,RECURRENCE-ID, ATTENDEE,ORGANIZER
-- Timezone related information is lost by server: TZ, DAYLIGHT
-- DTSTART, DTEND: if no timezone information and their value are not UTC time, server will convert them into UTC time according to your account timezone information
-- If RRULE is 'yearly', server converts it into dayofyear mode. That is not supported by synthesis
-- The 'UNTIL' component of the 'RRULE' property is converted to UTC time if it is floating time
-- The value of 'EXDATE' property is converted to UTC time if it is floating time
itodo20
-- Only support vCalendar1.0
-- Only below properties are supported by server:
DUE, COMPLETED, LAST-COMPLETED, DCREATED, DALARM, AALARM, DESCRIPTION, SUMMARY, STATUS, CATEGORIES, PRIORITY
-- 'PRIORITY': if value is '0', it is lost by server
-- Below properties are not accepted but in our test:
UID, DTSTART,PERCENT-COMPLETE,SEQUENCE, URL, CLASS
text
-- N/A
* Known test failures:
Client::Sync::vcard21
-- Client::Sync::vcard21::testRefreshFromClientSync
Client::Sync::vcard21::testRefreshStatus
Client::Sync::vcard21::testSlowSyncSemantic
Client::Sync::vcard21::testDelete
Client::Sync::vcard21::testItemsXML
Client::Sync::vcard21::testOneWayFromServer
Client::Sync::vcard21::testRetry
Client::Sync::vcard21::Suspend
Client::Sync::ical20
-- Client::Sync::ical20::testRefreshFromClientSync
Client::Sync::ical20::testRefreshStatus
Client::Sync::ical20::testSlowSyncSemantic
Client::Sync::ical20::testDelete
Client::Sync::ical20::testItemsXML
Client::Sync::ical20::testOneWayFromServer
Client::Sync::ical20::testRetry
Client::Sync::ical20::Suspend
Client::Sync::itodo20
-- Client::Sync::itodo20::testRefreshFromClientSync
Client::Sync::itodo20::testRefreshStatus
Client::Sync::itodo20::testSlowSyncSemantic
Client::Sync::itodo20::testDelete
Client::Sync::itodo20::testOneWayFromServer
Client::Sync::itodo20::testItemsXML
Client::Sync::itodo20::testRetry
Client::Sync::itodo20::Suspend
Client::Sync::text
-- Client::Sync::text::testRefreshFromClientSync
Client::Sync::text::testRefreshStatus
Client::Sync::text::testSlowSyncSemantic
Client::Sync::text::testDelete
Client::Sync::text::testOneWayFromServer
Client::Sync::text::testItemsXML
Client::Sync::text::testRetry
Client::Sync::text::Suspend

View File

@ -57,6 +57,8 @@ my $server = $ENV{CLIENT_TEST_SERVER};
my $client = $ENV{CLIENT_TEST_CLIENT} || "evolution";
my $scheduleworld = $server =~ /scheduleworld/;
my $synthesis = $server =~ /synthesis/;
#my $zyb = $server =~ /zyb/;
my $mobical = $server =~ /mobical/;
# TODO: this hack ensures that any synchronization is limited to
# properties supported by Synthesis. Remove this again.
@ -235,7 +237,7 @@ sub Normalize {
s;^BEGIN:VTIMEZONE.*?^TZID:/[^/\n]*/[^/\n]*/(\S+).*^END:VTIMEZONE;BEGIN:VTIMEZONE\nTZID:$1 [...]\nEND:VTIMEZONE;gms;
s;TZID=/[^/\n]*/[^/\n]*/(.*)$;TZID=$1;gm;
if ($scheduleworld || $egroupware || $synthesis || $addressbook || $funambol ||$google) {
if ($scheduleworld || $egroupware || $synthesis || $addressbook || $funambol ||$google || $mobical) {
# does not preserve X-EVOLUTION-UI-SLOT=
s/^(\w+)([^:\n]*);X-EVOLUTION-UI-SLOT=\d+/$1$2/mg;
}
@ -247,7 +249,7 @@ sub Normalize {
s;TZID(=|:)/(scheduleworld.com|softwarestudio.org)/Olson_\d+_\d+/;TZID$1/foo.com/Olson_20000101_1/;mg;
}
if ($synthesis) {
if ($synthesis || $mobical) {
# only preserves ORG "Company", but loses "Department" and "Office"
s/^ORG:([^;:\n]+)(;[^\n]*)/ORG:$1/mg;
}
@ -354,6 +356,22 @@ sub Normalize {
# NOTE may be truncated due to length resistrictions
s/^(NOTE(;[^:;\n]*)*:.{0,160}).*(\r?\n?)/$1$3/gm;
}
#if ($zyb || $mobical) {
if ($mobical) {
s/^(CALURI|CATEGORIES|FBURL|NICKNAME|X-MOZILLA-HTML|PHOTO|X-EVOLUTION-FILE-AS|X-ANNIVERSARY|X-ASSISTANT|X-EVOLUTION-BLOG-URL|X-EVOLUTION-VIDEO-URL|X-GROUPWISE|X-ICQ|X-MANAGER|X-SPOUSE|X-YAHOO|X-AIM)(;[^:;\n]*)*:.*\r?\n?//gm;
# some workrounds here for mobical's bug
s/^(FN|BDAY)(;[^:;\n]*)*:.*\r?\n?//gm;
if (/^BEGIN:VEVENT/m ) {
s/^(UID|SEQUENCE|CLASS|TRANSP|RECURRENCE-ID|ATTENDEE|ORGANIZER|AALARM|DALARM)(;[^:;\n]*)*:.*\r?\n?//gm;
}
if (/^BEGIN:VTODO/m ) {
s/^(UID|SEQUENCE|DTSTART|URL|PERCENT-COMPLETE|CLASS)(;[^:;\n]*)*:.*\r?\n?//gm;
s/^PRIORITY:0\r?\n?//gm;
}
}
# treat X-MOZILLA-HTML=FALSE as if the property didn't exist
s/^X-MOZILLA-HTML:FALSE\r?\n?//gm;

View File

@ -0,0 +1,115 @@
@@ -1,32 +1,12 @@
BEGIN:VCALENDAR
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
VERSION:2.0
-BEGIN:VTIMEZONE
-TZID:/softwarestudio.org/Olson_20011030_5/Europe/Berlin
-X-LIC-LOCATION:Europe/Berlin
-BEGIN:DAYLIGHT
-TZOFFSETFROM:+0100
-TZOFFSETTO:+0200
-TZNAME:CEST
-DTSTART:19700329T020000
-RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
-END:DAYLIGHT
-BEGIN:STANDARD
-TZOFFSETFROM:+0200
-TZOFFSETTO:+0100
-TZNAME:CET
-DTSTART:19701025T030000
-RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
-END:STANDARD
-END:VTIMEZONE
BEGIN:VEVENT
SUMMARY:phone meeting
DESCRIPTION:let's talk
CATEGORIES:MEETING
-DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Europe/Berlin:
- 20060406T163000
-DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Europe/Berlin:
- 20060406T160000
+DTEND:20060406T143000Z
+DTSTART:20060406T140000Z
UID:20060406T211449Z-4562-727-1-63@gollum
DTSTAMP:20060406T211449Z
LAST-MODIFIED:20060416T203532Z
@@ -53,7 +33,7 @@
CLASS:PUBLIC
CREATED:20060416T203724Z
LAST-MODIFIED:20060416T203758Z
-RRULE:FREQ=WEEKLY;UNTIL=20060427;INTERVAL=1;BYDAY=TH
+RRULE:FREQ=WEEKLY;UNTIL=20060427T173000Z;INTERVAL=1;BYDAY=TH
END:VEVENT
END:VCALENDAR
@@ -91,26 +71,7 @@
CLASS:PUBLIC
CREATED:20060416T203924Z
LAST-MODIFIED:20060416T203949Z
-RRULE:FREQ=MONTHLY;INTERVAL=1;UNTIL=20060606T173000Z
-END:VEVENT
-END:VCALENDAR
-
-BEGIN:VCALENDAR
-PRODID:-//Ximian//NONSGML Evolution Calendar//EN
-VERSION:2.0
-BEGIN:VEVENT
-UID:20060416T203954Z-4272-727-1-243@gollum
-DTSTAMP:20060416T203954Z
-DTSTART:20060406T180000Z
-DTEND:20060406T183000Z
-TRANSP:OPAQUE
-SEQUENCE:2
-SUMMARY:recurrence\, yearly\, two times
-DESCRIPTION:recurrence\, yearly\, two times
-CLASS:PUBLIC
-RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20070406T180000Z
-CREATED:20060416T204021Z
-LAST-MODIFIED:20060416T204021Z
+RRULE:FREQ=MONTHLY;BYMONTHDAY=6;INTERVAL=1;UNTIL=20060606T173000Z
END:VEVENT
END:VCALENDAR
@@ -197,11 +158,6 @@
^\npercent %\ntilde ~\ntick `\nbacktick `\ndouble quotation - not tested
because Evolution encodes it incorrectly\nsingle quotation '\ncolon :\n
semicolon \;\ncomma \,\n
-BEGIN:VALARM
-X-EVOLUTION-ALARM-UID:20060416T204833Z-4250-727-1-85@gollum
-ACTION:DISPLAY
-TRIGGER;VALUE=DURATION;RELATED=START:-PT1H
-END:VALARM
END:VEVENT
END:VCALENDAR
@@ -272,28 +228,11 @@
BEGIN:VCALENDAR
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
VERSION:2.0
-BEGIN:VTIMEZONE
-TZID:EST/EDT
-BEGIN:STANDARD
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-DTSTART:19671029T020000
-RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=-1SU
-END:STANDARD
-BEGIN:DAYLIGHT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-DTSTART:19870405T020000
-RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=1SU
-END:DAYLIGHT
-END:VTIMEZONE
BEGIN:VEVENT
UID:20060416T205224Z-4272-727-1-251@gollum
DTSTAMP:20060416T205224Z
-DTSTART;TZID=EST/EDT:20060406T140000
-DTEND;TZID=EST/EDT:20060406T143000
+DTSTART:20060406T180000Z
+DTEND:20060406T183000Z
TRANSP:OPAQUE
SEQUENCE:2
SUMMARY:timezone New York with custom definition for 2006

View File

@ -0,0 +1,35 @@
@@ -2,24 +2,6 @@
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
VERSION:2.0
METHOD:PUBLISH
-BEGIN:VTIMEZONE
-TZID:/softwarestudio.org/Tzfile/America/New_York
-X-LIC-LOCATION:America/New_York
-BEGIN:STANDARD
-TZNAME:EST
-DTSTART:19701101T010000
-RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-TZNAME:EDT
-DTSTART:19700308T030000
-RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
BEGIN:VTODO
UID:20090401T145153Z-22321-1000-1-18@pohly-MOBL
DTSTAMP:20090401T145153Z
@@ -29,8 +11,7 @@
LAST-MODIFIED:20090401T145153Z
DESCRIPTION:This is a test task in time zone New York\, to be started May
1st 2009\, due Mai 2st 2009.\n\nIt uses non-standard status values.
-DUE;TZID=/softwarestudio.org/Tzfile/America/New_York:20090502T130000
-DTSTART;TZID=/softwarestudio.org/Tzfile/America/New_York:20090501T100000
+DUE:20090502T170000Z
CLASS:PUBLIC
PERCENT-COMPLETE:99
STATUS:COMPLETED

View File

@ -0,0 +1,189 @@
@@ -4,6 +4,7 @@
NOTE:triggers parser bug in Funambol 3.0: trailing = is mistaken for soft line break=
FN:parserbug=
N:parserbug=
+URL:http://john.doe.com
X-EVOLUTION-FILE-AS:parserbug=
END:VCARD
@@ -14,6 +15,7 @@
FN:incomplete
N:incomplete
EMAIL:
+URL:http://john.doe.com
X-EVOLUTION-FILE-AS:incomplete
END:VCARD
@@ -26,6 +28,7 @@
before a space\, 3.0 inserts line break plus space.
FN:long line
N:line;long;;;
+URL:http://john.doe.com
X-EVOLUTION-FILE-AS:line\, long
END:VCARD
@@ -35,6 +38,7 @@
NOTE:ampersand entity &amp\; less-than entity &lt\;
FN:xml entities
N:xml;entities;;;
+URL:http://john.doe.com
X-EVOLUTION-FILE-AS:xml\, entities
END:VCARD
@@ -44,6 +48,7 @@
NOTE:a colon is not a special character so here it comes : and not quoting necessary
FN:colon
N:colon;unquoted;;;
+URL:http://john.doe.com
X-EVOLUTION-FILE-AS:colon\, unquoted
END:VCARD
@@ -53,6 +58,7 @@
NOTE:here are some quotation marks: single ' double " back ` - none of them is special
FN:quotation marks
N:marks;quotation;;;
+URL:http://john.doe.com
X-EVOLUTION-FILE-AS:marks\, quotation
END:VCARD
@@ -62,6 +68,7 @@
NOTE:Spouse's Name: foobar
FN:spouse name
N:name;spouse;;;
+URL:http://john.doe.com
X-EVOLUTION-FILE-AS:spouse\, name
END:VCARD
@@ -71,6 +78,7 @@
NOTE;CHARSET="UTF-8":Tests charset specification with quotation marks.
FN:charset
N:set;char;;;
+URL:http://john.doe.com
X-EVOLUTION-FILE-AS:set\, char
END:VCARD
@@ -118,6 +126,7 @@
NOTE:Here are some special characters: comma \, colon : semicolon \;
FN:special characters
N:characters;special;;;
+URL:http://john.doe.com
X-EVOLUTION-FILE-AS:characters\, special
X-EVOLUTION-BLOG-URL:
CALURI:
@@ -161,7 +170,7 @@
X-EVOLUTION-MANAGER:John Doe Senior
X-EVOLUTION-ASSISTANT:John Doe Junior
NICKNAME:user1
-BDAY:2006-01-08
+BDAY:2007-03-01
X-EVOLUTION-ANNIVERSARY:2006-01-09
X-EVOLUTION-SPOUSE:Joan Doe
NOTE:This is a test case which uses almost all Evolution fields.
@@ -182,7 +191,6 @@
5;Testovia
LABEL;TYPE=HOME:Test Drive 1\nTest Village\, Lower Test County\n12345\nTest
Box #1\nTestovia
-ADR:Test Box #3;;Test Drive 3;Test Megacity;Test County;12347;New Testonia
LABEL;TYPE=OTHER:Test Drive 3\nTest Megacity\, Test County\n12347\nTest Box
#3\nNew Testonia
UID:pas-id-43C0ED3900000001
@@ -206,7 +214,7 @@
BEGIN:VCARD
VERSION:3.0
-URL:
+URL:http://john.doe.com
TITLE:
ROLE:
X-EVOLUTION-MANAGER:
@@ -242,7 +250,7 @@
BEGIN:VCARD
VERSION:3.0
-URL:
+URL:http://john.doe.com
TITLE:
ROLE:
X-EVOLUTION-MANAGER:
@@ -273,7 +281,7 @@
BEGIN:VCARD
VERSION:3.0
-URL:
+URL:http://john.doe.com
TITLE:
ROLE:
X-EVOLUTION-MANAGER:
@@ -282,7 +290,7 @@
X-EVOLUTION-SPOUSE:
NOTE:The first name is "First \; special \;".
FN:Mr. First \; special \; middle Last
-N:Last;First \; special \;;middle;Mr.;
+N:Last;First special;middle;Mr.;
X-EVOLUTION-FILE-AS:Last\, First \; special \;
X-EVOLUTION-BLOG-URL:
CALURI:
@@ -294,7 +302,7 @@
BEGIN:VCARD
VERSION:3.0
-URL:
+URL:http://john.doe.com
TITLE:
ROLE:
X-EVOLUTION-MANAGER:
@@ -376,53 +384,8 @@
& < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
& < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
& < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
- & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & < & <
FN:large vcard
N:;vcard;;large;
+URL:http://john.doe.com
X-EVOLUTION-FILE-AS:large
END:VCARD