summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften')
-rw-r--r--Swiften/Parser/PayloadParsers/UnitTest/FormParserTest.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/FormParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/FormParserTest.cpp
index ace6bcb..610c4f3 100644
--- a/Swiften/Parser/PayloadParsers/UnitTest/FormParserTest.cpp
+++ b/Swiften/Parser/PayloadParsers/UnitTest/FormParserTest.cpp
@@ -6,92 +6,94 @@
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <Swiften/Elements/Form.h>
#include <Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h>
using namespace Swift;
class FormParserTest : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(FormParserTest);
CPPUNIT_TEST(testParse_FormInformation);
CPPUNIT_TEST(testParse_FormLayout);
CPPUNIT_TEST(testParse);
CPPUNIT_TEST(testParse_FormItems);
CPPUNIT_TEST_SUITE_END();
public:
void testParse_FormInformation() {
PayloadsParserTester parser;
CPPUNIT_ASSERT(parser.parse(
"<x type=\"submit\" xmlns=\"jabber:x:data\">"
"<title>Bot Configuration</title>"
"<instructions>Hello!</instructions>"
"<instructions>Fill out this form to configure your new bot!</instructions>"
"</x>"
));
Form* payload = dynamic_cast<Form*>(parser.getPayload().get());
+ CPPUNIT_ASSERT(payload);
CPPUNIT_ASSERT_EQUAL(std::string("Bot Configuration"), payload->getTitle());
CPPUNIT_ASSERT_EQUAL(std::string("Hello!\nFill out this form to configure your new bot!"), payload->getInstructions());
CPPUNIT_ASSERT_EQUAL(Form::SubmitType, payload->getType());
}
void testParse_FormLayout() {
PayloadsParserTester parser;
// P1 = page one, S1 = section one, F1 = field one, T1 = text one
CPPUNIT_ASSERT(parser.parse(
"<x type=\"form\" xmlns=\"jabber:x:data\">"
"<page label=\"P1\" xmlns=\"http://jabber.org/protocol/xdata-layout\">"
"<reportedref/>"
"<text>P1T1</text>"
"<fieldref var=\"P1F1\"/>"
"<section label=\"P1S1\">"
"<text>P1S1T1</text>"
"<fieldref var=\"P1S1F1\"/>"
"</section>"
"</page>"
"<page label=\"P2\" xmlns=\"http://jabber.org/protocol/xdata-layout\">"
"<section label=\"P2S1\">"
"<section label=\"P2S2\">"
"<section label=\"P2S3\"/>"
"</section>"
"</section>"
"</page>"
"<field label=\"field one\" type=\"text-single\" var=\"P1F1\"/>"
"<field label=\"field two\" type=\"text-single\" var=\"P1S1F1\"/>"
"</x>"));
Form* payload = dynamic_cast<Form*>(parser.getPayload().get());
+ CPPUNIT_ASSERT(payload);
CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(payload->getFields().size()));
// PAGE ONE - parsing of element types
CPPUNIT_ASSERT_EQUAL(std::string("P1"), payload->getPages()[0]->getLabel());
CPPUNIT_ASSERT(payload->getPages()[0]->getReportedRefs()[0]);
CPPUNIT_ASSERT_EQUAL(std::string("P1T1"), payload->getPages()[0]->getTextElements()[0]->getTextString());
CPPUNIT_ASSERT_EQUAL(std::string("P1F1"), payload->getPages()[0]->getFields()[0]->getName());
CPPUNIT_ASSERT_EQUAL(std::string("P1S1"), payload->getPages()[0]->getChildSections()[0]->getLabel());
CPPUNIT_ASSERT_EQUAL(std::string("P1S1T1"), payload->getPages()[0]->getChildSections()[0]->getTextElements()[0]->getTextString());
CPPUNIT_ASSERT_EQUAL(std::string("P1S1F1"), payload->getPages()[0]->getChildSections()[0]->getFields()[0]->getName());
// PAGE TWO - parsing of nested elements
CPPUNIT_ASSERT_EQUAL(std::string("P2"), payload->getPages()[1]->getLabel());
CPPUNIT_ASSERT_EQUAL(std::string("P2S1"), payload->getPages()[1]->getChildSections()[0]->getLabel());
CPPUNIT_ASSERT_EQUAL(std::string("P2S2"), payload->getPages()[1]->getChildSections()[0]->getChildSections()[0]->getLabel());
CPPUNIT_ASSERT_EQUAL(std::string("P2S3"), payload->getPages()[1]->getChildSections()[0]->getChildSections()[0]->getChildSections()[0]->getLabel());
}
void testParse() {
PayloadsParserTester parser;
CPPUNIT_ASSERT(parser.parse(
"<x type=\"form\" xmlns=\"jabber:x:data\">"
"<field type=\"hidden\" var=\"FORM_TYPE\">"
"<value>jabber:bot</value>"
"</field>"
"<field type=\"fixed\"><value>Section 1: Bot Info</value></field>"
"<field label=\"The name of your bot\" type=\"text-single\" var=\"botname\"/>"
"<field label=\"Helpful description of your bot\" type=\"text-multi\" var=\"description\"><value>This is a bot.</value><value>A quite good one actually</value></field>"
"<field label=\"Public bot?\" type=\"boolean\" var=\"public\">"
"<required/>"
"<value>1</value>"
@@ -99,60 +101,61 @@ class FormParserTest : public CppUnit::TestFixture {
"<field label=\"Password for special access\" type=\"text-private\" var=\"password\"/>"
"<field label=\"What features will the bot support?\" type=\"list-multi\" var=\"features\">"
"<option label=\"Contests\"><value>contests</value></option>"
"<option label=\"News\"><value>news</value></option>"
"<option label=\"Polls\"><value>polls</value></option>"
"<option label=\"Reminders\"><value>reminders</value></option>"
"<option label=\"Search\"><value>search</value></option>"
"<value>news</value>"
"<value>search</value>"
"</field>"
"<field label=\"Maximum number of subscribers\" type=\"list-single\" var=\"maxsubs\">"
"<value>20</value>"
"<option label=\"10\"><value>10</value></option>"
"<option label=\"20\"><value>20</value></option>"
"<option label=\"30\"><value>30</value></option>"
"<option label=\"50\"><value>50</value></option>"
"<option label=\"100\"><value>100</value></option>"
"<option label=\"None\"><value>none</value></option>"
"</field>"
"<field label=\"People to invite\" type=\"jid-multi\" var=\"invitelist\">"
"<desc>Tell all your friends about your new bot!</desc>"
"<value>foo@bar.com</value>"
"<value>baz@fum.org</value>"
"</field>"
"<field var=\"untyped\">"
"<value>foo</value>"
"</field>"
"</x>"));
Form* payload = dynamic_cast<Form*>(parser.getPayload().get());
+ CPPUNIT_ASSERT(payload);
CPPUNIT_ASSERT_EQUAL(10, static_cast<int>(payload->getFields().size()));
CPPUNIT_ASSERT_EQUAL(std::string("jabber:bot"), payload->getFields()[0]->getValues()[0]);
CPPUNIT_ASSERT_EQUAL(std::string("FORM_TYPE"), payload->getFields()[0]->getName());
CPPUNIT_ASSERT(!payload->getFields()[0]->getRequired());
CPPUNIT_ASSERT_EQUAL(std::string("Section 1: Bot Info"), payload->getFields()[1]->getValues()[0]);
CPPUNIT_ASSERT_EQUAL(std::string("The name of your bot"), payload->getFields()[2]->getLabel());
CPPUNIT_ASSERT_EQUAL(std::string("This is a bot.\nA quite good one actually"), payload->getFields()[3]->getTextMultiValue());
CPPUNIT_ASSERT_EQUAL(true, payload->getFields()[4]->getBoolValue());
CPPUNIT_ASSERT(payload->getFields()[4]->getRequired());
CPPUNIT_ASSERT_EQUAL(std::string("1"), payload->getFields()[4]->getValues()[0]);
CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(payload->getFields()[6]->getValues().size()));
CPPUNIT_ASSERT_EQUAL(std::string("news"), payload->getFields()[6]->getValues()[0]);
CPPUNIT_ASSERT_EQUAL(std::string("search"), payload->getFields()[6]->getValues()[1]);
CPPUNIT_ASSERT_EQUAL(5, static_cast<int>(payload->getFields()[6]->getOptions().size()));
CPPUNIT_ASSERT_EQUAL(std::string("Contests"), payload->getFields()[6]->getOptions()[0].label);
CPPUNIT_ASSERT_EQUAL(std::string("contests"), payload->getFields()[6]->getOptions()[0].value);
CPPUNIT_ASSERT_EQUAL(std::string("News"), payload->getFields()[6]->getOptions()[1].label);
CPPUNIT_ASSERT_EQUAL(std::string("news"), payload->getFields()[6]->getOptions()[1].value);
CPPUNIT_ASSERT_EQUAL(std::string("20"), payload->getFields()[7]->getValues()[0]);
CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com"), payload->getFields()[8]->getJIDMultiValue(0));
CPPUNIT_ASSERT_EQUAL(JID("baz@fum.org"), payload->getFields()[8]->getJIDMultiValue(1));
CPPUNIT_ASSERT_EQUAL(std::string("Tell all your friends about your new bot!"), payload->getFields()[8]->getDescription());