Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: How to Ask a Datastructures Question (with Test::More)

by demerphq (Chancellor)
on Oct 06, 2005 at 12:24 UTC ( [id://497897]=note: print w/replies, xml ) Need Help??


in reply to How to Ask a Datastructures Question (with Test::More)

Yeah, well, personally I'm not a huge fan of Test::More::is_deeply(). And I think I said it in that thread too. Anyway....

A quick look at the two data structures using a proper dumper reveals the problem, as does a cursory review of the code. Your problem is that the code doesnt change the array being pushed into when a new key is found. The following is more or less how I would implement it.

#!/usr/bin/perl -w use strict; use warnings; use Test::More qw(no_plan); use Data::Dump::Streamer; my $expected = { 'SET1' => [ [ '0','100','BOOK'], [ '1','150','PENCIL'], ], 'SET2' => [ [ '2','111','ERASER'], [ '2','200','PEN'], [ '0','220','BLACKBOARD'], [ '1','300','CHALK'], ] }; my %hoa; my $key; while ( <DATA> ) { chomp; next unless /^\S/; if ( /^SET/ ) { (undef,$key) = split (/[\s:]+/,$_,2); } elsif (/^\d/) { my @rec = split(/,/,$_); push @{$hoa{$key}}, \@rec; } } print Dump(\%hoa,$expected)->Names('got','expect')->Out(); Test::More::is_deeply (\%hoa, $expected); __DATA__ SET: SET1 0,100,BOOK 1,150,PENCIL ==== SET: SET2 2,111,ERASER 2,200,PEN 0,220,BLACKBOARD 1,300,CHALK ====
---
$world=~s/war/peace/g

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://497897]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (2)
As of 2024-04-26 05:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found