1 #!/usr/local/bin/perl -w
10 use Sort::Maker qw( sorter_source ) ;
15 $ok = use_ok( 'Sort::Maker' ) ;
16 print "OK [$ok] $@\n" ;
25 name => 'simple string',
26 data => [ qw( z e a k ) ],
27 sort => sub { $a cmp $b },
28 opts => [ qw( string ) ],
32 name => 'simple number',
33 data => [ 32, 2, 9, 7 ],
34 sort => sub { $a <=> $b },
35 opts => [ qw( number ) ],
39 name => 'simple string ref_in',
40 data => [ qw( z e a k ) ],
41 sort => sub { $a cmp $b },
42 opts => [ qw( ref_in string ) ],
47 name => 'simple string ref_out',
48 data => [ qw( z e a k ) ],
49 sort => sub { $a cmp $b },
50 opts => [ qw( ref_out string ) ],
55 plan tests => @sort_tests * 2 ;
57 foreach my $test ( @sort_tests ) {
59 next if $test->{skip} ;
61 my( $name, $data, $sort, $opts ) = @{$test}{qw( name data sort opts )} ;
63 my @sorted = sort { $sort->() } @{$data} ;
65 #print "gold SORTED [@sorted]\n" ;
67 foreach my $style ( qw( plain ST ) ) {
69 my $sorter = make_sorter( $style, @{$opts} ) ;
71 print "SORT [$sorter] [$@]\n" ;
73 print sorter_source( $sorter ) || '' ;
77 my @in = $test->{ref_in} ? $data : @{$data} ;
79 my @test_sorted = $sorter->( @in ) ;
81 @test_sorted = @{$test_sorted[0]} if $test->{ref_out} ;
83 #print "style SORTED [@test_sorted]\n" ;
85 ok( eq_array( \@sorted, \@test_sorted ),
86 "$style sort of $name" ) ;