#!/usr/bin/perl -wT
# $Id: 20-NLRI.t,v 1.1 2003/10/27 23:57:14 unimlo Exp $
use strict;
use Test::More tests => 28;
# Use
use_ok('Net::BGP::NLRI');
use Net::BGP::NLRI qw( :origin );
# Construction
my $empty = new Net::BGP::NLRI;
ok(ref $empty eq 'Net::BGP::NLRI','Simple construction');
my $data = new Net::BGP::NLRI(
Aggregator => [ 65020, '10.0.0.10' ],
AtomicAggregate => 1,
AsPath => '65002 65010 65020 {65030,65050}',
Communities => [ '65002:10','65002:200' ],
LocalPref => 10,
MED => 42,
Nexthop => '10.0.0.9',
Origin => EGP,
);
ok(ref $data eq 'Net::BGP::NLRI','Complex construction');
# Copying
my $clone1 = clone Net::BGP::NLRI($data);
ok(ref $clone1 eq 'Net::BGP::NLRI','Clone construction');
my $clone = $clone1->clone;
ok(ref $clone eq 'Net::BGP::NLRI','Cloning');
# Aggregator
ok($clone->aggregator->[0] == 65020,'Accessor: Aggregator AS');
ok($clone->aggregator->[1] eq '10.0.0.10','Accessor: Aggregator IP');
$clone->aggregator([65000,'127.0.0.1']);
ok($clone->aggregator->[0] == 65000,'Accessor: Aggregator modifyer');
# Atomic aggregate
ok($clone->atomic_aggregate,'Accessor: Atomic aggregate');
$clone->atomic_aggregate(0);
ok(! $clone->atomic_aggregate,'Accessor: Atomic aggregate modifyer');
# AS Path
ok($clone->as_path->asstring eq '65002 65010 65020 {65030,65050}','Accessor: AS Path');
$clone->as_path->prepend(65000);
ok($clone->as_path->asstring eq '65000 65002 65010 65020 {65030,65050}','Accessor: AS Path reference');
$clone->as_path('(65001) 65002');
ok($clone->as_path->asstring eq '(65001) 65002','Accessor: AS Path modifyer');
# Communities
ok($clone->communities->[0] eq '65002:10','Accessor: Communities');
$clone->communities->[0] = '65002:20';
ok($clone->communities->[0] eq '65002:20','Accessor: Communities reference');
$clone->communities(['65002:42']);
ok($clone->communities->[0] eq '65002:42','Accessor: Communities modifyer');
# LocalPref
ok($clone->local_pref == 10,'Accessor: Local Preference');
$clone->local_pref(20);
ok($clone->local_pref == 20,'Accessor: Local Preference modifyer');
# MED
ok($clone->med == 42,'Accessor: Multi Exit Discriminator');
$clone->med(20);
ok($clone->med == 20,'Accessor: Multi Exit Discriminator modifyer');
# Nexthop
ok($clone->next_hop eq '10.0.0.9','Accessor: Nexthop');
$clone->next_hop('10.0.0.42');
ok($clone->next_hop eq '10.0.0.42','Accessor: Nexthop modifyer');
# Preference comparison
ok($data > $clone,'Preference: Greater then (>)');
ok($clone < $data,'Preference: Less then (<)');
ok($clone1 == $data,'Preference: Equal (==)');
ok($clone != $data,'Preference: Not equal (!=)');
# Comparison
ok($clone1 eq $data,'Comparison: Equal (eq)');
ok($clone ne $data,'Comparison: Not equal (ne)');
__END__
syntax highlighted by Code2HTML, v. 0.9.1