use lib 't'; BEGIN { # to handle systems with no installed Test module # we include the t dir (where a copy of Test.pm is located) # as a fallback eval { require Test; }; use Test; plan tests => 14; } use XML::NestArray qw(:all); use FileHandle; use strict; use Data::Dumper; my $tree1 = [ geneset=>[ [gene=>[ [id=>"g1"], [name=>"blah"], [function=>"receptor"], ] ], [gene=>[ [id=>"g2"], [name=>"fred"], [function=>"enzyme"], ] ], [gene=>[ [id=>"g3"], [name=>"zog"], [function=>"binding"], [function=>"dna repair"], ] ], [gene=>[ [id=>"g4"], [name=>"quah"], [function=>"transport"], ] ], ], ]; my $tree2 = [ geneset=>[ [gene=>[ [id=>"g1"], [allele=>[ [allele_id=>'g1[a]'], [phenotype=>'wing'], ] ], ], ], [gene=>[ [id=>"g1"], [allele=>[ [allele_id=>'g1[b]'], [phenotype=>'lethal'], [mutagen=>'X-ray'], ] ], ] ], [gene=>[ [id=>"g2"], [allele=>[ [allele_id=>'g2[a]'], [phenotype=>'segment A6'], [phenotype=>'segment A5'], ] ], ] ], [gene=>[ [id=>"g3"], [allele=>[ [allele_id=>'g3[a]'], [phenotype=>'eye'], ] ], ] ], [gene=>[ [id=>"g4"], [allele=>[ [allele_id=>'g4[a]'], [phenotype=>'antenna'], ] ], ] ], ], ]; my @genes = findSubTree($tree2, "gene"); mergeElements($tree1, \@genes, "id"); print tree2xml($tree1); ok(1); collapseElement($tree2, "gene", "id"); print tree2xml($tree2);