static #if HAVE_SWIFTEN_3 FormField::ref #else ListSingleFormField::ref #endif createListSingleField(const std::string &name, Swift::FormField::Option value, const std::string &label, const std::string &def, bool required) { #if HAVE_SWIFTEN_3 FormField::ref field = SWIFTEN_SHRPTR_NAMESPACE::make_shared<FormField>(FormField::ListSingleType); #else ListSingleFormField::ref field = ListSingleFormField::create(); #endif field->setName(name); field->setLabel(label); field->addOption(value); #if HAVE_SWIFTEN_3 field->addValue(def); #else field->setValue(def); #endif return field; }
void testGenerate_XEP0115ComplexExample() { DiscoInfo discoInfo; discoInfo.addIdentity(DiscoInfo::Identity("Psi 0.11", "client", "pc", "en")); discoInfo.addIdentity(DiscoInfo::Identity("\xce\xa8 0.11", "client", "pc", "el")); discoInfo.addFeature("http://jabber.org/protocol/disco#items"); discoInfo.addFeature("http://jabber.org/protocol/caps"); discoInfo.addFeature("http://jabber.org/protocol/disco#info"); discoInfo.addFeature("http://jabber.org/protocol/muc"); Form::ref extension(new Form(Form::ResultType)); FormField::ref field = std::make_shared<FormField>(FormField::HiddenType, "urn:xmpp:dataforms:softwareinfo"); field->setName("FORM_TYPE"); extension->addField(field); field = std::make_shared<FormField>(FormField::ListMultiType); field->addValue("ipv6"); field->addValue("ipv4"); field->setName("ip_version"); extension->addField(field); field = std::make_shared<FormField>(FormField::TextSingleType, "Psi"); field->setName("software"); extension->addField(field); field = std::make_shared<FormField>(FormField::TextSingleType, "0.11"); field->setName("software_version"); extension->addField(field); field = std::make_shared<FormField>(FormField::TextSingleType, "Mac"); field->setName("os"); extension->addField(field); field = std::make_shared<FormField>(FormField::TextSingleType, "10.5.1"); field->setName("os_version"); extension->addField(field); discoInfo.addExtension(extension); CapsInfoGenerator testling("http://psi-im.org", crypto.get()); CapsInfo result = testling.generateCapsInfo(discoInfo); CPPUNIT_ASSERT_EQUAL(std::string("q07IKJEyjvHSyhy//CH0CxmKi8w="), result.getVersion()); }