use lib "t/lib"; use Test::More tests=>70; BEGIN{ use_ok( "Net::Jabber" ); } require "t/mytestlib.pl"; my $client = new Net::Jabber::Client(); ok( defined($client), "new()" ); isa_ok( $client, "Net::Jabber::Client" ); $client->DefineNamespace(xmlns=>"foo:bar:1", type=>"X", functions=>[{name=>"Data", get=>"data", set=>["scalar","data"], defined=>"data", hash=>"data" }, {name=>"Attrib", get=>"attrib", set=>["scalar","attrib"], defined=>"attrib", hash=>"att" }, {name=>"ChildFlag", get=>"childflag", set=>["flag","childflag"], defined=>"childflag", hash=>"child-flag", }, { name=>"ChildData", get=>"childdata", set=>["scalar","childdata"], defined=>"childdata", hash=>"child-data", }, { name=>"AttTagAtt", get=>"atttagatt", set=>["scalar","atttagatt"], defined=>"atttagatt", hash=>"att-tag-att", }, {name=>"FooBar", get=>"__netjabber__:master", set=>["master"] } ] ); my $message = new Net::Jabber::Message(); ok( defined($message), "new()"); isa_ok( $message, "Net::Jabber::Message" ); my $x = $message->NewChild("foo:bar:1"); ok( defined($x), "NewChild()"); isa_ok( $x, "Net::Jabber::Stanza" ); isa_ok( $x, "Net::XMPP::Stanza" ); testSetScalar($x,"Data","data"); testScalar($x,"Attrib","attrib"); testFlag($x,"ChildFlag"); testScalar($x,"ChildData","data"); testScalar($x,"AttTagAtt","attrib"); is( $message->GetXML(), "datadata", "GetXML()" ); eval { $client->DefineNamespace(xmlns=>"foo:bar:2", type=>"X", functions=>[{name=>"Data", get=>"data", set=>["scalar","data"], defined=>"data", hash=>"data" }, {name=>"Attrib", get=>"attrib", set=>["scalar","attrib"], defined=>"attrib", hash=>"att" }, {name=>"ChildFlag", get=>"childflag", set=>["flag","childflag"], defined=>"childflag", hash=>"child-flag", }, { name=>"ChildData", get=>"childdata", set=>["scalar","childdata"], defined=>"childdata", hash=>"child-data", }, { name=>"ChildAdd", get=>"childadd", set=>["add","X","__netjabber__:foo:bar"], add=>["X","__netjabber__:foo:bar","FooBar","childadd"], defined=>"childdata", hash=>"child-add", }, { name=>"AttTagAtt", get=>"atttagatt", set=>["scalar","atttagatt"], defined=>"atttagatt", hash=>"att-tag-att", }, { name=>"ChildAdds", get=>["__netjabber__:children:x","__netjabber__:foo:bar"] }, {name=>"FooBar", get=>"__netjabber__:master", set=>["master"] } ] ); }; ok( $@ ne "", "croak test" ); $client->DefineNamespace(xmlns=>"foo:bar:3", type=>"X", functions=>[{name=>"Data", path=>"text()", }, {name=>"Attrib", path=>"\@attrib", }, {name=>"ChildFlag", type=>"flag", path=>"childflag", }, { name=>"ChildData", path=>"childdata/text()", }, { name=>"AttTagAtt", path=>"tag/\@att", }, {name=>"FooBar", type=>"master", } ] ); my $message2 = new Net::Jabber::Message(); ok( defined($message2), "new()"); isa_ok( $message2, "Net::Jabber::Message" ); my $x2 = $message2->NewChild("foo:bar:3"); ok( defined($x2), "NewChild()"); isa_ok( $x2, "Net::Jabber::Stanza" ); isa_ok( $x2, "Net::XMPP::Stanza" ); testSetScalar($x2,"Data","data"); testScalar($x2,"Attrib","attrib"); testFlag($x2,"ChildFlag"); testScalar($x2,"ChildData","data"); testScalar($x2,"AttTagAtt","attrib"); is( $message2->GetXML(), "datadata", "GetXML()" ); $client->DefineNamespace(xmlns=>"foo:bar:4", type=>"X", functions=>[{name=>"Data", path=>"text()", }, {name=>"Attrib", path=>"\@attrib", }, {name=>"ChildFlag", type=>"flag", path=>"childflag", }, { name=>"ChildData", path=>"childdata/text()", }, { name=>"AttTagAtt", path=>"tag/\@att", }, { name=>"ChildAdd", path=>"childadd", type=>"node", child=>["X","__netjabber__:foo:bar:4"], calls=>["Add"] }, { name=>"ChildAdds", type=>"children", path=>"childadd", child=>["X","__netjabber__:foo:bar:4"], }, {name=>"FooBar", type=>"master", } ] ); $client->DefineNamespace(xmlns=>"__netjabber__:foo:bar:4", type=>"X", functions=>[{name=>"Data", path=>"text()", }, {name=>"AddedChild", type=>"master", } ] ); my $message3 = new Net::Jabber::Message(); ok( defined($message3), "new()"); isa_ok( $message3, "Net::Jabber::Message" ); my $x3 = $message3->NewChild("foo:bar:4"); ok( defined($x3), "NewChild()"); isa_ok( $x3, "Net::Jabber::Stanza" ); isa_ok( $x3, "Net::XMPP::Stanza" ); testSetScalar($x3,"Data","data"); testScalar($x3,"Attrib","attrib"); testFlag($x3,"ChildFlag"); testScalar($x3,"ChildData","data"); testScalar($x3,"AttTagAtt","attrib"); my $childadd1 = $x3->AddChildAdd(); testSetScalar($childadd1,"Data","data1"); my $childadd2 = $x3->AddChildAdd(data=>"data2"); my @children = $x3->GetChildAdds(); is( $#children, 1, "are there two kids?" ); is( $message3->GetXML(), "datadatadata1data2", "GetXML()" );