initial commit
[urisagit/Sort-Maker.git] / t / numbers.t
CommitLineData
7468c584 1#!/usr/local/bin/perl -sw
2
3use strict ;
4
5use lib 't' ;
6use lib '..' ;
7require 'common.pm' ;
8
9my @sort_styles = qw( plain orcish ST GRT ) ;
10
11my $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
140common_driver( $sort_tests, \@sort_styles ) ;
141
142exit ;