//ADR
{
List<AdrType> it = vcard.getAdrs();
assertEquals(1, it.size());
AdrType f = it.get(0);
assertEquals("item1", f.getGroup());
assertEquals("", f.getPostOfficeBox());
assertEquals("", f.getExtendedAddress());
assertEquals("25334\nSouth cresent drive, Building 5, 3rd floo r", f.getStreetAddress());
assertEquals("New York", f.getLocality());
assertEquals("New York", f.getRegion());
assertEquals("NYC887", f.getPostalCode());
assertEquals("U.S.A.", f.getCountryName());
List<AdrParamType> types = f.getParams();
assertEquals(2, types.size());
assertTrue(types.contains(AdrParamType.HOME));
assertTrue(types.contains(AdrParamType.PREF));
}
//NOTE
{
List<NoteType> it = vcard.getNotes();
assertEquals(1, it.size());
NoteType f = it.get(0);
assertEquals("THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO , THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR P URPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTOR S BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \nINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\nA RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.", f.getNote());
}
//URL
{
List<UrlType> it = vcard.getUrls();
assertEquals(1, it.size());
UrlType f = it.get(0);
assertEquals("item2", f.getGroup());
assertEquals("http://www.sun.com", f.getRawUrl());
List<UrlParamType> types = f.getParams();
assertEquals(1, types.size());
assertTrue(types.contains(UrlParamType.PREF));
}
//BDAY
{
BDayType f = vcard.getBDay();
assertEquals(1980, f.getBirthday().get(Calendar.YEAR));
assertEquals(Calendar.MAY, f.getBirthday().get(Calendar.MONTH));
assertEquals(21, f.getBirthday().get(Calendar.DAY_OF_MONTH));
assertEquals(ISOFormat.ISO8601_DATE_EXTENDED, f.getISO8601Format());
}
//PHOTO
{
List<PhotoType> it = vcard.getPhotos();
assertEquals(1, it.size());
PhotoType f = it.get(0);
assertEquals(EncodingType.BINARY, f.getEncodingType());
assertEquals(ImageMediaType.JPEG, f.getImageMediaType());
assertEquals(7957, f.getPhoto().length);
}
//UID
{
UidType f = vcard.getUid();
assertEquals("0e7602cc-443e-4b82-b4b1-90f62f99a199", f.getUid());
}
//GEO
{
GeoType f = vcard.getGeo();
assertEquals(-2.6, f.getLatitude(), .01);
assertEquals(3.4, f.getLongitude(), .01);
}
//CLASS
{
ClassType f = vcard.getSecurityClass();
assertEquals("Public", f.getSecurityClass());
}
//PROFILE
{
ProfileType f = vcard.getProfile();
assertEquals("VCard", f.getProfile());
}
//TZ
{
TzType f = vcard.getTz();
assertEquals(1, f.getHourOffset());
assertEquals(0, f.getMinuteOffset());
}
//LABEL
{
//This label does not get parsed because its parameter types
//do not match any of the parameter types of any of the existing
//addresses. In this case the parameter type PARCEL is extra from
//the address.
//
//This is an issue with the way Labels and Addresses are defined in
//the VCard RFC. There are 2 ways to go about it:
//
//1: An ADR may have only 1 LABEL associated to it, the LABEL directly under it
//2: An ADR may have only 1 LABEL associated to it by parameter types. Only
// one ADR and LABEL without zero parameter types may hold an association.
//
// Cardme takes approach 2.
/*
List<LabelType> it = vcard.getLables();
assertEquals(1, it.size());
LabelType f = it.get(0);
assertEquals("John Doe\nNew York, NewYork,\nSouth Crecent Drive,\nBuilding 5, floor 3,\nUSA", f.getLabel());
List<LabelParamType> types = f.getParams();
assertEquals(3, types.size());
assertTrue(types.contains(LabelParamType.HOME));
assertTrue(types.contains(LabelParamType.PARCEL));
assertTrue(types.contains(LabelParamType.PREF));
*/
}
//SORT-STRING
{
SortStringFeature f = vcard.getSortString();
assertEquals("JOHN", f.getSortString());
}
//ROLE
{
RoleFeature f = vcard.getRole();
assertEquals("Counting Money", f.getRole());
}
//SOURCE
{
SourceFeature f = vcard.getSource();
assertEquals("Whatever", f.getSource());
}
//MAILER
{
MailerFeature f = vcard.getMailer();
assertEquals("Mozilla Thunderbird", f.getMailer());
}
//NAME
{
NameType f = vcard.getName();
assertEquals("VCard for John Doe", f.getName());
}
//custom types
{
List<ExtendedType> it = vcard.getExtendedTypes();
assertEquals(4, it.size());
ExtendedType f = it.get(0);
assertEquals("item2", f.getGroup());
assertEquals("X-ABLABEL", f.getExtendedName());
assertEquals("_$!<HomePage>!$_", f.getExtendedValue());
f = it.get(1);
assertEquals("X-ABUID", f.getExtendedName());
assertEquals("0E7602CC-443E-4B82-B4B1-90F62F99A199:ABPerson", f.getExtendedValue());
f = it.get(2);
assertEquals("X-GENERATOR", f.getExtendedName());
assertEquals("Cardme Generator", f.getExtendedValue());
f = it.get(3);
assertEquals("X-LONG-STRING", f.getExtendedName());
assertEquals("1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", f.getExtendedValue());
}
VCardImpl vcard2 = (VCardImpl)vcard;
if(vcard2.hasErrors()) {