Commit | Line | Data |
7468c584 |
1 | #!/usr/local/bin/perl -sw |
2 | |
3 | use strict ; |
4 | |
5 | use lib 't' ; |
6 | use lib '..' ; |
7 | require 'common.pm' ; |
8 | |
9 | my @sort_styles = qw( plain orcish ST GRT ) ; |
10 | |
11 | my $sort_tests = [ |
12 | |
13 | { |
14 | skip => 0, |
15 | name => 'unsigned float', |
16 | gold => sub { $a <=> $b }, |
17 | gen => sub { |
18 | rand_number( 0, 99999 ) * |
19 | 10 ** rand_number( -10, 3 ) |
20 | }, |
21 | args => [ qw( number unsigned_float ) ], |
22 | }, |
23 | { |
24 | skip => 0, |
25 | name => 'signed float', |
26 | gold => sub { $a <=> $b }, |
27 | gen => sub { |
28 | rand_number( -99999, 99999 ) * |
29 | 10 ** rand_number( -10, 3 ) |
30 | }, |
31 | args => [ qw( number signed_float ) ], |
32 | }, |
33 | { |
34 | skip => 0, |
35 | name => 'unsigned integer', |
36 | gold => sub { $a <=> $b }, |
37 | gen => sub { int rand_number( 0, 99999999 ) }, |
38 | args => [ qw( number unsigned ) ], |
39 | }, |
40 | { |
41 | skip => 0, |
42 | name => 'signed integer', |
43 | gold => sub { $a <=> $b }, |
44 | gen => sub { int rand_number( -99999, 99999 ) }, |
45 | args => [ qw( number signed ) ], |
46 | }, |
47 | { |
48 | skip => 0, |
49 | name => 'unsigned float edge case', |
50 | gold => sub { $a <=> $b }, |
51 | data => [ reverse 0 .. 100 ], |
52 | args => [ qw( number unsigned_float ) ], |
53 | }, |
54 | { |
55 | skip => 0, |
56 | name => 'signed float edge case', |
57 | gold => sub { $a <=> $b }, |
58 | data => [ reverse -100 .. 100 ], |
59 | args => [ qw( number signed_float ) ], |
60 | }, |
61 | { |
62 | skip => 0, |
63 | name => 'unsigned integer edge case', |
64 | gold => sub { $a <=> $b }, |
65 | data => [ reverse 0 .. 100 ], |
66 | args => [ qw( number unsigned ) ], |
67 | }, |
68 | { |
69 | skip => 0, |
70 | name => 'signed integer edge case', |
71 | gold => sub { $a <=> $b }, |
72 | data => [ -99999, 0, -999 .. 999, 99999 ], |
73 | args => [ qw( number signed ) ], |
74 | }, |
75 | { |
76 | skip => 0, |
77 | name => 'unsigned float descending', |
78 | gold => sub { $b <=> $a }, |
79 | gen => sub { |
80 | rand_number( 0, 99999 ) * |
81 | 10 ** rand_number( -10, 3 ) |
82 | }, |
83 | args => [ qw( number unsigned_float descending ) ], |
84 | }, |
85 | { |
86 | skip => 0, |
87 | name => 'signed float descending', |
88 | gold => sub { $b <=> $a }, |
89 | gen => sub { |
90 | rand_number( -99999, 99999 ) * |
91 | 10 ** rand_number( -10, 3 ) |
92 | }, |
93 | args => [ qw( number signed_float descending ) ], |
94 | }, |
95 | { |
96 | skip => 0, |
97 | name => 'unsigned integer descending', |
98 | gold => sub { $b <=> $a }, |
99 | gen => sub { int rand_number( 0, 99999999 ) }, |
100 | args => [ qw( number unsigned descending) ], |
101 | }, |
102 | { |
103 | skip => 0, |
104 | name => 'signed integer descending', |
105 | gold => sub { $b <=> $a }, |
106 | gen => sub { int rand_number( -99999, 99999 ) }, |
107 | args => [ qw( number signed descending ) ], |
108 | }, |
109 | { |
110 | skip => 0, |
111 | name => 'unsigned float edge case descending', |
112 | gold => sub { $b <=> $a }, |
113 | data => [ reverse 0 .. 100 ], |
114 | args => [ qw( number unsigned_float descending ) ], |
115 | }, |
116 | { |
117 | skip => 0, |
118 | name => 'signed float edge case descending', |
119 | gold => sub { $b <=> $a }, |
120 | data => [ reverse -100 .. 100 ], |
121 | args => [ qw( number signed_float descending ) ], |
122 | }, |
123 | { |
124 | skip => 0, |
125 | name => 'unsigned integer edge case descending', |
126 | gold => sub { $b <=> $a }, |
127 | data => [ reverse 0 .. 100 ], |
128 | args => [ qw( number unsigned descending ) ], |
129 | }, |
130 | { |
131 | skip => 0, |
132 | name => 'signed integer edge case descending', |
133 | gold => sub { $b <=> $a }, |
134 | data => [ -99999, 0, -999 .. 999, 99999 ], |
135 | args => [ qw( number signed descending ) ], |
136 | }, |
137 | |
138 | ] ; |
139 | |
140 | common_driver( $sort_tests, \@sort_styles ) ; |
141 | |
142 | exit ; |