/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #include <cppunit/extensions/HelperMacros.h> #include <cppunit/extensions/TestFactoryRegistry.h> #include <Swiften/Serializer/PayloadSerializers/VCardSerializer.h> using namespace Swift; class VCardSerializerTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(VCardSerializerTest); CPPUNIT_TEST(testSerialize); CPPUNIT_TEST_SUITE_END(); public: void testSerialize() { VCardSerializer testling; boost::shared_ptr<VCard> vcard(new VCard()); vcard->setVersion("2.0"); vcard->setFullName("Alice In Wonderland"); vcard->setPrefix("Mrs"); vcard->setGivenName("Alice"); vcard->setMiddleName("In"); vcard->setFamilyName("Wonderland"); vcard->setSuffix("PhD"); vcard->setNickname("DreamGirl"); vcard->setPhoto(createByteArray("abcdef")); vcard->setPhotoType("image/png"); vcard->setBirthday(boost::posix_time::ptime(boost::gregorian::date(1865, 5, 4))); vcard->addUnknownContent("<MAILER>mutt</MAILER>"); VCard::EMailAddress emailAddress1; emailAddress1.address = "alice@wonderland.lit"; emailAddress1.isHome = true; emailAddress1.isPreferred = true; emailAddress1.isInternet = true; vcard->addEMailAddress(emailAddress1); VCard::EMailAddress address2; address2.address = "alice@teaparty.lit"; address2.isWork = true; address2.isX400 = true; vcard->addEMailAddress(address2); VCard::Telephone telephone1; telephone1.number = "555-6273"; telephone1.isHome = true; telephone1.isVoice = true; vcard->addTelephone(telephone1); VCard::Address address1; address1.locality = "Any Town"; address1.street = "Fake Street 123"; address1.postalCode = "12345"; address1.country = "USA"; address1.isHome = true; vcard->addAddress(address1); VCard::AddressLabel label1; label1.lines.push_back("Fake Street 123"); label1.lines.push_back("12345 Any Town"); label1.lines.push_back("USA"); label1.isHome = true; vcard->addAddressLabel(label1); vcard->addJID(JID("alice@teaparty.lit")); vcard->addJID(JID("alice@wonderland.lit")); vcard->setDescription("I once fell down a rabbit hole."); VCard::Organization org1; org1.name = "Alice In Wonderland Inc."; vcard->addOrganization(org1); vcard->addTitle("Some Title"); vcard->addRole("Main Character"); vcard->addURL("http://wonderland.lit/~alice"); vcard->addURL("http://teaparty.lit/~alice2"); std::string expectedResult = "<vCard xmlns=\"vcard-temp\">" "<VERSION>2.0</VERSION>" "<FN>Alice In Wonderland</FN>" "<N>" "<FAMILY>Wonderland</FAMILY>" "<GIVEN>Alice</GIVEN>" "<MIDDLE>In</MIDDLE>" "<PREFIX>Mrs</PREFIX>" "<SUFFIX>PhD</SUFFIX>" "</N>" "<EMAIL>" "<USERID>alice@wonderland.lit</USERID>" "<HOME/>" "<INTERNET/>" "<PREF/>" "</EMAIL>" "<EMAIL>" "<USERID>alice@teaparty.lit</USERID>" "<WORK/>" "<X400/>" "</EMAIL>" "<NICKNAME>DreamGirl</NICKNAME>" "<PHOTO>" "<TYPE>image/png</TYPE>" "<BINVAL>YWJjZGVm</BINVAL>" "</PHOTO>" "<BDAY>1865-05-04T00:00:00Z</BDAY>" "<TEL>" "<NUMBER>555-6273</NUMBER>" "<HOME/>" "<VOICE/>" "</TEL>" "<ADR>" "<STREET>Fake Street 123</STREET>" "<LOCALITY>Any Town</LOCALITY>" "<PCODE>12345</PCODE>" "<CTRY>USA</CTRY>" "<HOME/>" "</ADR>" "<LABEL>" "<LINE>Fake Street 123</LINE>" "<LINE>12345 Any Town</LINE>" "<LINE>USA</LINE>" "<HOME/>" "</LABEL>" "<JID>alice@teaparty.lit</JID>" "<JID>alice@wonderland.lit</JID>" "<DESC>I once fell down a rabbit hole.</DESC>" "<ORG>" "<ORGNAME>Alice In Wonderland Inc.</ORGNAME>" "</ORG>" "<TITLE>Some Title</TITLE>" "<ROLE>Main Character</ROLE>" "<URL>http://wonderland.lit/~alice</URL>" "<URL>http://teaparty.lit/~alice2</URL>" "<MAILER>mutt</MAILER>" "</vCard>"; CPPUNIT_ASSERT_EQUAL(expectedResult, testling.serialize(vcard)); } }; CPPUNIT_TEST_SUITE_REGISTRATION(VCardSerializerTest);