initial commit
[urisagit/Sort-Maker.git] / t / string_data.t
CommitLineData
7468c584 1#!/usr/local/bin/perl -sw
2
3use strict ;
4
5use lib 't' ;
6use lib '..' ;
7require 'common.pm' ;
8
9use vars '$bench' ;
10
11my @sort_styles = qw( GRT ) ;
12
13my @string_keys = map rand_alpha( 4, 8 ), 1 .. 100 ;
14my @number_keys = map int( rand_number( 100, 10000 ) ), 1 .. 100 ;
15
16#print "STR @string_keys NUM @number_keys\n" ;
17
18my $sort_tests = [
19 {
20 skip => 0,
21 name => 'simple string',
22 sizes => [100, 1000],
23 gen => sub { rand_choice( @string_keys ) },
24 gold => sub { $a cmp $b },
25 args => {
26 string => [ qw( string_data string ) ],
27 index => [ qw( string ) ],
28 }
29 },
30 {
31 skip => 0,
32 name => 'simple string no-case',
33 sizes => [100, 1000],
34 gen => sub { rand_choice( @string_keys ) },
35 gold => sub { uc($a) cmp uc($b) },
36 args => {
37 string => [ qw( string_data string no_case ) ],
38 index => [ qw( string no_case ) ],
39 }
40 },
41 {
42 skip => 0,
43 source => 0,
44 name => 'simple string descending',
45 sizes => [100, 1000],
46 gen => sub { rand_choice( @string_keys ) },
47 gold => sub { $b cmp $a },
48 args => {
49 string => [ qw( string_data string
50 descending varying ) ],
51 index => [ qw( string descending varying ) ],
52 }
53 },
54 {
55 skip => 0,
56 name => 'simple string no-case descending',
57 sizes => [100, 1000],
58 gen => sub { rand_choice( @string_keys ) },
59 gold => sub { uc($b) cmp uc($a) },
60 args => {
61 string => [ qw( string_data string no_case
62 descending varying ) ],
63 index => [ qw( string no_case descending varying ) ],
64 }
65 },
66 {
67 skip => 0,
68 name => 'simple number',
69 sizes => [100, 1000],
70 gen => sub { rand_choice( @number_keys ) },
71 gold => sub { $a <=> $b },
72 args => {
73 string => [ qw( string_data number ) ],
74 index => [ qw( number ) ],
75 }
76 },
77 {
78 skip => 0,
79 source => 0,
80 sizes => [100, 1000],
81 name => 'string:number',
82 gen => sub { rand_choice( @string_keys ) . ':' .
83 rand_choice( @number_keys )
84 },
85 gold => sub {
86 ($a =~ /^(\w+)/)[0] cmp ($b =~ /^(\w+)/)[0]
87 ||
88 ($a =~ /(\d+)$/)[0] <=> ($b =~ /(\d+)$/)[0]
89 },
90 args => {
91 index => [ string => '/^(\w+)/',
92 number => '/(\d+)$/'
93 ],
94 string => [ 'string_data',
95 string => '/^(\w+)/',
96 number => '/(\d+)$/'
97 ],
98 },
99 },
100] ;
101
102common_driver( $sort_tests, \@sort_styles ) ;
103
104exit ;