The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 100;

use Math::GrahamFunction;

my @results_array=
(
{ n => 1, factors => [1], },
{ n => 2, factors => [2,3,6], },
{ n => 3, factors => [3,6,8], },
{ n => 4, factors => [4], },
{ n => 5, factors => [5,8,10], },
{ n => 6, factors => [6,8,12], },
{ n => 7, factors => [7,8,14], },
{ n => 8, factors => [8,10,12,15], },
{ n => 9, factors => [9], },
{ n => 10, factors => [10,12,15,18], },
{ n => 11, factors => [11,18,22], },
{ n => 12, factors => [12,15,20], },
{ n => 13, factors => [13,18,26], },
{ n => 14, factors => [14,15,18,20,21], },
{ n => 15, factors => [15,18,20,24], },
{ n => 16, factors => [16], },
{ n => 17, factors => [17,18,34], },
{ n => 18, factors => [18,24,27], },
{ n => 19, factors => [19,32,38], },
{ n => 20, factors => [20,24,30], },
{ n => 21, factors => [21,27,28], },
{ n => 22, factors => [22,24,33], },
{ n => 23, factors => [23,32,46], },
{ n => 24, factors => [24,27,32], },
{ n => 25, factors => [25], },
{ n => 26, factors => [26,27,32,39], },
{ n => 27, factors => [27,28,30,32,35], },
{ n => 28, factors => [28,32,35,40], },
{ n => 29, factors => [29,32,58], },
{ n => 30, factors => [30,35,42], },
{ n => 31, factors => [31,32,62], },
{ n => 32, factors => [32,40,45], },
{ n => 33, factors => [33,35,40,42,44], },
{ n => 34, factors => [34,35,42,45,51], },
{ n => 35, factors => [35,40,42,48], },
{ n => 36, factors => [36], },
{ n => 37, factors => [37,50,74], },
{ n => 38, factors => [38,54,57], },
{ n => 39, factors => [39,48,52], },
{ n => 40, factors => [40,45,50], },
{ n => 41, factors => [41,50,82], },
{ n => 42, factors => [42,48,56], },
{ n => 43, factors => [43,50,86], },
{ n => 44, factors => [44,45,55], },
{ n => 45, factors => [45,48,60], },
{ n => 46, factors => [46,54,69], },
{ n => 47, factors => [47,50,94], },
{ n => 48, factors => [48,50,54], },
{ n => 49, factors => [49], },
{ n => 50, factors => [50,56,63], },
{ n => 51, factors => [51,54,56,63,68], },
{ n => 52, factors => [52,54,56,60,63,65], },
{ n => 53, factors => [53,72,106], },
{ n => 54, factors => [54,60,63,70], },
{ n => 55, factors => [55,56,60,63,66], },
{ n => 56, factors => [56,63,72], },
{ n => 57, factors => [57,75,76], },
{ n => 58, factors => [58,60,63,70,87], },
{ n => 59, factors => [59,72,118], },
{ n => 60, factors => [60,63,70,72,75], },
{ n => 61, factors => [61,72,122], },
{ n => 62, factors => [62,72,75,93], },
{ n => 63, factors => [63,66,72,75,77], },
{ n => 64, factors => [64], },
{ n => 65, factors => [65,66,70,72,77,78], },
{ n => 66, factors => [66,70,75,77,80], },
{ n => 67, factors => [67,72,134], },
{ n => 68, factors => [68,80,85], },
{ n => 69, factors => [69,75,92], },
{ n => 70, factors => [70,72,75,80,84], },
{ n => 71, factors => [71,72,142], },
{ n => 72, factors => [72,75,77,84,88], },
{ n => 73, factors => [73,98,146], },
{ n => 74, factors => [74,96,111], },
{ n => 75, factors => [75,77,80,84,88,90], },
{ n => 76, factors => [76,80,95], },
{ n => 77, factors => [77,84,88,96], },
{ n => 78, factors => [78,80,84,90,91], },
{ n => 79, factors => [79,98,158], },
{ n => 80, factors => [80,90,98], },
{ n => 81, factors => [81], },
{ n => 82, factors => [82,96,123], },
{ n => 83, factors => [83,98,166], },
{ n => 84, factors => [84,91,96,104], },
{ n => 85, factors => [85,90,96,98,102], },
{ n => 86, factors => [86,96,129], },
{ n => 87, factors => [87,108,116], },
{ n => 88, factors => [88,98,99], },
{ n => 89, factors => [89,98,178], },
{ n => 90, factors => [90,91,96,98,104,105], },
{ n => 91, factors => [91,96,98,99,104,105,110], },
{ n => 92, factors => [92,98,99,110,115], },
{ n => 93, factors => [93,108,124], },
{ n => 94, factors => [94,96,141], },
{ n => 95, factors => [95,96,98,99,110,114], },
{ n => 96, factors => [96,98,108], },
{ n => 97, factors => [97,98,194], },
{ n => 98, factors => [98,99,105,108,110,112], },
{ n => 99, factors => [99,104,105,108,110,112,117], },
{ n => 100, factors => [100], },
);

# TEST:$num_results=100
# TEST*$num_results
foreach my $test_me (@results_array)
{
    my $n = $test_me->{'n'};
    my $solver = Math::GrahamFunction->new({ 'n' => $n, });
    my $factors = $solver->solve()->{'factors'};
    is_deeply ( $factors, $test_me->{'factors'},
        "Testing the Graham Function Factors of $n"
    );
}