exercism-perl5

Repository for my Perl 5 Exercism exercises
git clone git://git.samirparikh.com/exercism-perl5
Log | Files | Refs | README

pascals-triangle.t (3228B) - 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 PascalsTriangle qw<pascal_rows>;
     10 
     11 my @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; };
     12 plan 9;
     13 
     14 imported_ok qw<pascal_rows> or bail_out;
     15 
     16 for my $case (@test_cases) {
     17   is pascal_rows( $case->{input}{count} ),
     18     join( "\n", map { join ' ', @$_ } @{ $case->{expected} } ),
     19     $case->{description};
     20 }
     21 
     22 __DATA__
     23 [
     24   {
     25     "description": "zero rows",
     26     "expected": [],
     27     "input": {
     28       "count": 0
     29     },
     30     "property": "rows"
     31   },
     32   {
     33     "description": "single row",
     34     "expected": [
     35       [
     36         1
     37       ]
     38     ],
     39     "input": {
     40       "count": 1
     41     },
     42     "property": "rows"
     43   },
     44   {
     45     "description": "two rows",
     46     "expected": [
     47       [
     48         1
     49       ],
     50       [
     51         1,
     52         1
     53       ]
     54     ],
     55     "input": {
     56       "count": 2
     57     },
     58     "property": "rows"
     59   },
     60   {
     61     "description": "three rows",
     62     "expected": [
     63       [
     64         1
     65       ],
     66       [
     67         1,
     68         1
     69       ],
     70       [
     71         1,
     72         2,
     73         1
     74       ]
     75     ],
     76     "input": {
     77       "count": 3
     78     },
     79     "property": "rows"
     80   },
     81   {
     82     "description": "four rows",
     83     "expected": [
     84       [
     85         1
     86       ],
     87       [
     88         1,
     89         1
     90       ],
     91       [
     92         1,
     93         2,
     94         1
     95       ],
     96       [
     97         1,
     98         3,
     99         3,
    100         1
    101       ]
    102     ],
    103     "input": {
    104       "count": 4
    105     },
    106     "property": "rows"
    107   },
    108   {
    109     "description": "five rows",
    110     "expected": [
    111       [
    112         1
    113       ],
    114       [
    115         1,
    116         1
    117       ],
    118       [
    119         1,
    120         2,
    121         1
    122       ],
    123       [
    124         1,
    125         3,
    126         3,
    127         1
    128       ],
    129       [
    130         1,
    131         4,
    132         6,
    133         4,
    134         1
    135       ]
    136     ],
    137     "input": {
    138       "count": 5
    139     },
    140     "property": "rows"
    141   },
    142   {
    143     "description": "six rows",
    144     "expected": [
    145       [
    146         1
    147       ],
    148       [
    149         1,
    150         1
    151       ],
    152       [
    153         1,
    154         2,
    155         1
    156       ],
    157       [
    158         1,
    159         3,
    160         3,
    161         1
    162       ],
    163       [
    164         1,
    165         4,
    166         6,
    167         4,
    168         1
    169       ],
    170       [
    171         1,
    172         5,
    173         10,
    174         10,
    175         5,
    176         1
    177       ]
    178     ],
    179     "input": {
    180       "count": 6
    181     },
    182     "property": "rows"
    183   },
    184   {
    185     "description": "ten rows",
    186     "expected": [
    187       [
    188         1
    189       ],
    190       [
    191         1,
    192         1
    193       ],
    194       [
    195         1,
    196         2,
    197         1
    198       ],
    199       [
    200         1,
    201         3,
    202         3,
    203         1
    204       ],
    205       [
    206         1,
    207         4,
    208         6,
    209         4,
    210         1
    211       ],
    212       [
    213         1,
    214         5,
    215         10,
    216         10,
    217         5,
    218         1
    219       ],
    220       [
    221         1,
    222         6,
    223         15,
    224         20,
    225         15,
    226         6,
    227         1
    228       ],
    229       [
    230         1,
    231         7,
    232         21,
    233         35,
    234         35,
    235         21,
    236         7,
    237         1
    238       ],
    239       [
    240         1,
    241         8,
    242         28,
    243         56,
    244         70,
    245         56,
    246         28,
    247         8,
    248         1
    249       ],
    250       [
    251         1,
    252         9,
    253         36,
    254         84,
    255         126,
    256         126,
    257         84,
    258         36,
    259         9,
    260         1
    261       ]
    262     ],
    263     "input": {
    264       "count": 10
    265     },
    266     "property": "rows"
    267   }
    268 ]