[Freegis-list] Strange behavior in Tree::R CPAN module
Ari Jolma
ari.jolma at gmail.com
Mon Aug 10 13:31:40 CEST 2009
Brandon,
Thanks, I've fixed this by explicitly removing the root node in the case
when last object is removed from the tree. I also now check for empty
trees in methods objects and dump. I added your tests to the test suite.
The new version 0.06 is (or will soon be) in CPAN.
Best regards,
Ari
Brandon Forehand kirjoitti:
> So, I was using the Tree::R module, and I ran into a strange problem, so
> I wrote a small unit test to test the problem, and it appears the source
> of the bug may be in Tree::R itself. The underlying cause seems to be
> that when you remove everything from a Tree::R object and then insert
> something back into the same Tree::R object, the resulting number of
> objects in the Tree is no longer correct. Here's a small unit test that
> reproduces the bug:
>
> use strict;
> use warnings;
>
> use Test::More tests => 5;
>
> BEGIN { use_ok('Tree::R'); }
>
> my $r_tree = Tree::R->new();
>
> isa_ok($r_tree, 'Tree::R');
>
> my $rects = {
> 1 => [0, 0, 10, 20],
> 2 => [20, 0, 10, 20],
> 3 => [0, 30, 10, 20],
> 4 => [20, 30, 10, 20],
> };
>
> for my $rect (keys %$rects) {
> $r_tree->insert($rect, @{$rects->{$rect}});
> }
>
> {
> my @objects;
> $r_tree->objects(\@objects);
>
> is(scalar(@objects), 4);
> }
>
> for my $rect (keys %$rects) {
> $r_tree->remove($rect);
> }
>
> {
> my @objects;
> $r_tree->objects(\@objects);
>
> is(scalar(@objects), 0);
> }
>
> $r_tree->insert($rects->{1}, @{$rects->{1}});
>
> {
> my @objects;
> $r_tree->objects(\@objects);
>
> is(scalar(@objects), 1);
> }
>
> In this unit test, the last test fails for me. Instead of the value 1,
> I got 2. I don't believe that this is the intended behavior
>
>
--
Prof. Ari Jolma
Environmental Management Information Technology
Teknillinen Korkeakoulu / Helsinki University of Technology
tel: +358 9 4511 address: POBox 5300, 02015 TKK, Finland
Email: ari.jolma at tkk.fi URL: http://geoinformatics.tkk.fi
More information about the Freegis-list
mailing list
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)