BEGIN {
plan
tests
=> 160;
}
$biosql
= DBTestHarness->new(
"biosql"
);
$db
=
$biosql
->get_DBAdaptor();
ok
$db
;
my
$objio
= Bio::ClusterIO->new(
'-format'
=>
'unigene'
,
'-file'
=> Bio::Root::IO->catfile(
't'
,
'data'
,
'unigene.data'
));
my
$clu
=
$objio
->next_cluster();
ok
$clu
;
my
$pclu
=
$db
->create_persistent(
$clu
);
ok
$pclu
;
ok
$pclu
->isa(
"Bio::DB::PersistentObjectI"
);
ok
$pclu
->isa(
"Bio::ClusterI"
);
$pclu
->namespace(
"mytestnamespace"
);
$pclu
->create();
my
$dbid
=
$pclu
->primary_key();
ok
$dbid
;
my
$adp
=
$db
->get_object_adaptor(
$clu
);
ok
$adp
;
ok
$adp
->isa(
"Bio::DB::PersistenceAdaptorI"
);
eval
{
$dbclu
=
$adp
->find_by_primary_key(
$dbid
);
ok
$dbclu
;
ok (
$dbclu
->display_id,
$clu
->display_id);
ok (
$dbclu
->description,
$clu
->description);
ok (
$dbclu
->size,
$clu
->size);
ok (
scalar
(
$dbclu
->get_members),
scalar
(
$clu
->get_members));
ok (
scalar
(
$dbclu
->get_members),
$clu
->size);
ok (
$dbclu
->species->binomial,
$clu
->species->binomial);
my
@dbkeys
=
sort
{
$a
cmp
$b
}
$dbclu
->annotation->get_all_annotation_keys();
my
@keys
=
sort
{
$a
cmp
$b
}
$clu
->annotation->get_all_annotation_keys();
ok (
scalar
(
@dbkeys
),
scalar
(
@keys
));
my
$i
= 0;
while
(
$i
<
@dbkeys
) {
ok (
$dbkeys
[
$i
],
$keys
[
$i
]);
my
@dbanns
=
sort
{
$a
->as_text cmp
$b
->as_text;
}
$dbclu
->annotation->get_Annotations(
$dbkeys
[
$i
]);
my
@anns
=
sort
{
$a
->as_text cmp
$b
->as_text;
}
$clu
->annotation->get_Annotations(
$dbkeys
[
$i
]);
ok (
scalar
(
@dbanns
),
scalar
(
@anns
),
"number of annotations don't match for key "
.
$dbkeys
[
$i
]);
my
$j
= 0;
while
(
$j
<
@dbanns
) {
ok (
$dbanns
[
$j
]->as_text,
$anns
[
$j
]->as_text,
"values for annotation element $j don't match for key "
.
$dbkeys
[
$i
]);
$j
++;
}
$i
++;
}
my
@dbmems
=
sort
{
$a
->accession_number() cmp
$b
->accession_number();
}
$dbclu
->get_members();
my
@mems
=
sort
{
$a
->accession_number() cmp
$b
->accession_number();
}
$clu
->get_members();
$i
= 0;
while
((
$i
<
@mems
) && (
$i
<
@dbmems
)) {
ok (
$dbmems
[
$i
]->accession_number,
$mems
[
$i
]->accession_number);
ok (
$dbmems
[
$i
]->display_id,
$mems
[
$i
]->display_id);
ok (
$dbmems
[
$i
]->namespace,
$mems
[
$i
]->namespace);
$i
++;
}
ok
$adp
->remove_members(
$dbclu
);
$dbclu
=
$adp
->find_by_primary_key(
$dbid
);
ok
$dbclu
;
ok (
scalar
(
$dbclu
->get_members()), 0);
my
$seq
=
$dbmems
[0]->adaptor->find_by_primary_key(
$dbmems
[0]->primary_key);
ok
$seq
;
ok (
$seq
->accession_number,
$dbmems
[0]->accession_number);
ok (
$dbclu
->size, 29);
$dbclu
->size(10);
$dbclu
->store();
$dbclu
=
$adp
->find_by_primary_key(
$dbid
);
ok (
$dbclu
->size, 10);
};
print
STDERR $@
if
$@;
ok (
$pclu
->remove(), 1);
my
$ns
= Bio::DB::Persistent::BioNamespace->new(
-identifiable
=>
$pclu
);
ok
$ns
=
$db
->get_object_adaptor(
$ns
)->find_by_unique_key(
$ns
);
ok
$ns
->primary_key();
ok (
$ns
->remove(), 1);