package XML::Atom::Ext::Test; use base qw( XML::Atom::Base ); XML::Atom::Feed->mk_elem_accessors(qw(totalResults startIndex itemsPerPage), [ element_ns() ] ); XML::Atom::Feed->mk_object_list_accessor( ext_link => 'XML::Atom::Ext::Test::Link' ); #XML::Atom::Feed->mk_object_accessor( Query => 'XML::Atom::Ext::::Query' ); sub element_ns { return XML::Atom::Namespace->new("testext" => q{http://test.com/-/spec/test/0.1/} ); } 1; package XML::Atom::Ext::Test::Link; use base qw( XML::Atom::Base ); __PACKAGE__->mk_attr_accessors( qw( href hreflang rel type ) ); sub element_name { return 'link' } sub element_ns { return XML::Atom::Ext::Test->element_ns; } 1; package main; use strict; use warnings; use XML::Atom::Feed; use Test::More tests => 8; my $feed = XML::Atom::Feed->new; my $link = XML::Atom::Link->new; $link->href(q{http://www.legacy_link.com}); $feed->add_link($link); my $ext_link = XML::Atom::Ext::Test::Link->new; $ext_link->href(q{http://www.extended_link.org}); $feed->add_ext_link($ext_link); ok($ext_link, "creating extension link"); # Test simple accessors my @accessors = qw( totalResults startIndex itemsPerPage ); for ( @accessors ) { $feed->$_( 2 ); } for ( @accessors ) { is($feed->$_, 2, "extension accessors"); } my $xml = $feed->as_xml; like( $xml, qr{xmlns:testext="http://test.com/-/spec/test/0.1/"}, "ext namespace"); like( $xml, qr{}, "ext link match"); like( $xml, qr{2}, "ext method match"); like( $xml, qr{}, "standard link match"); __END__ =head2 Expected Output 2 2 2