difference-of-squares.t (2574B) - raw
1 #!/usr/bin/env perl 2 use Test2::V0; 3 use JSON::PP; 4 use constant JSON => JSON::PP->new; 5 6 use FindBin qw<$Bin>; 7 use lib $Bin, "$Bin/local/lib/perl5"; 8 9 use DifferenceOfSquares 10 qw<square_of_sum sum_of_squares difference_of_squares>; 11 12 my @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; }; 13 14 imported_ok qw<square_of_sum sum_of_squares difference_of_squares> 15 or bail_out; 16 17 for my $case (@test_cases) { 18 my $func; 19 if ( $case->{property} eq 'squareOfSum' ) { 20 $func = \&square_of_sum; 21 } 22 elsif ( $case->{property} eq 'sumOfSquares' ) { 23 $func = \&sum_of_squares; 24 } 25 elsif ( $case->{property} eq 'differenceOfSquares' ) { 26 $func = \&difference_of_squares; 27 } 28 29 is( $func->( $case->{input}{number} ), 30 $case->{expected}, $case->{description}, ); 31 } 32 33 done_testing; 34 35 __DATA__ 36 [ 37 { 38 "description": "Square the sum of the numbers up to the given number: square of sum 1", 39 "expected": 1, 40 "input": { 41 "number": 1 42 }, 43 "property": "squareOfSum" 44 }, 45 { 46 "description": "Square the sum of the numbers up to the given number: square of sum 5", 47 "expected": 225, 48 "input": { 49 "number": 5 50 }, 51 "property": "squareOfSum" 52 }, 53 { 54 "description": "Square the sum of the numbers up to the given number: square of sum 100", 55 "expected": 25502500, 56 "input": { 57 "number": 100 58 }, 59 "property": "squareOfSum" 60 }, 61 { 62 "description": "Sum the squares of the numbers up to the given number: sum of squares 1", 63 "expected": 1, 64 "input": { 65 "number": 1 66 }, 67 "property": "sumOfSquares" 68 }, 69 { 70 "description": "Sum the squares of the numbers up to the given number: sum of squares 5", 71 "expected": 55, 72 "input": { 73 "number": 5 74 }, 75 "property": "sumOfSquares" 76 }, 77 { 78 "description": "Sum the squares of the numbers up to the given number: sum of squares 100", 79 "expected": 338350, 80 "input": { 81 "number": 100 82 }, 83 "property": "sumOfSquares" 84 }, 85 { 86 "description": "Subtract sum of squares from square of sums: difference of squares 1", 87 "expected": 0, 88 "input": { 89 "number": 1 90 }, 91 "property": "differenceOfSquares" 92 }, 93 { 94 "description": "Subtract sum of squares from square of sums: difference of squares 5", 95 "expected": 170, 96 "input": { 97 "number": 5 98 }, 99 "property": "differenceOfSquares" 100 }, 101 { 102 "description": "Subtract sum of squares from square of sums: difference of squares 100", 103 "expected": 25164150, 104 "input": { 105 "number": 100 106 }, 107 "property": "differenceOfSquares" 108 } 109 ]