my
$scenario
= PNI::Scenario->new;
isa_ok
$scenario
,
'PNI::Scenario'
;
is
$scenario
->comments->list, 0,
'default comments'
;
is
$scenario
->nodes->list, 0,
'default nodes'
;
is
$scenario
->edges->list, 0,
'default edges'
;
is
$scenario
->scenarios->list, 0,
'default scenarios'
;
my
$scen
=
$scenario
->add_scenario;
isa_ok
$scen
,
'PNI::Scenario'
,
'add_scenario'
;
my
$node1
=
$scen
->add_node;
isa_ok
$node1
,
'PNI::Node'
,
'add_node'
;
my
$node2
=
$scen
->add_node;
is
$scen
->nodes->list, 2,
'nodes list'
;
my
$source1
=
$node1
->out;
my
$target1
=
$node2
->in;
my
$edge
=
$scen
->add_edge(
source
=>
$source1
,
target
=>
$target1
);
isa_ok
$edge
,
'PNI::Edge'
,
'add_edge'
;
is
$scen
->edges->list, 1,
'edges list'
;
my
$comment1
=
$scen
->add_comment;
isa_ok
$comment1
,
'PNI::Comment'
,
'add_comment'
;
my
$comment2
=
$scen
->add_comment;
is
$scen
->comments->list, 2,
'comments list'
;
$scen
->del_comment(
$comment1
);
ok !
exists
$scen
->comments->{
$comment1
->id },
'del_comment'
;
my
$node3
=
$scen
->add_node;
my
$source2
=
$node2
->out;
my
$target2
=
$node3
->in;
$scen
->add_edge(
source
=>
$source2
,
target
=>
$target2
);
$scen
->del_node(
$node2
);
is
$scen
->nodes->list, 2,
'del_node'
;
is
$scen
->edges->list, 0,
'del_node cleans edges'
;
my
$edge2
=
$scen
->add_edge(
source
=>
$source1
,
target
=>
$target2
);
$scen
->del_edge(
$edge2
);
ok !
$source1
->is_connected,
'del_edge cleans source'
;
ok !
$target2
->is_connected,
'del_edge cleans target'
;
my
$n1
=
$scen
->add_node(
'Twice'
);
my
$n2
=
$scen
->add_node(
'Twice'
);
my
$n3
=
$scen
->add_node(
'Twice'
);
my
$n4
=
$scen
->add_node(
'Twice'
);
my
$i1
=
$n1
->in;
my
$o1
=
$n1
->out;
my
$i2
=
$n2
->in;
my
$o2
=
$n2
->out;
my
$i3
=
$n3
->in;
my
$o3
=
$n3
->out;
my
$i4
=
$n4
->in;
my
$o4
=
$n4
->out;
my
$num
=
rand
(100);
$i1
->data(
$num
);
$scen
->add_edge(
source
=>
$o1
,
target
=>
$i2
);
$scen
->add_edge(
source
=>
$o2
,
target
=>
$i3
);
$scen
->add_edge(
source
=>
$o3
,
target
=>
$i4
);
$scen
->task;
is
$o4
->data, 16 *
$num
,
'task'
;
$i1
->data(1);
$n3
->off;
$scen
->task;
ok !
$n4
->is_on,
'n4 is off cause n3 is off'
;
is
$o1
->data, 2,
'o1'
;
is
$o2
->data, 4,
'o2'
;
is
$o3
->data, 8 *
$num
,
'o3 has the same data'
;
is
$o4
->data, 16 *
$num
,
'o4 has the same data'
;
$scenario
->del_scenario(
$scen
);
is
$scenario
->scenarios->list, 0,
'del_scenario'
;
is
$scen
->comments->list, 0,
'del_scenario cleans comments'
;
is
$scen
->edges->list, 0,
'del_scenario cleans edges'
;
is
$scen
->nodes->list, 0,
'del_scenario cleans nodes'
;
is
$scen
->scenarios->list, 0,
'del_scenario cleans scenarios'
;