exercism-perl5

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

sublist.t (4759B) - 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 Sublist qw<compare_lists>;
     10 
     11 my @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; };
     12 
     13 imported_ok qw<compare_lists> or bail_out;
     14 
     15 for my $case (@test_cases) {
     16   is( compare_lists( $case->{input} ),
     17     $case->{expected}, $case->{description}, );
     18 }
     19 
     20 done_testing;
     21 
     22 __DATA__
     23 [
     24   {
     25     "description": "empty lists",
     26     "expected": "equal",
     27     "input": {
     28       "listOne": [],
     29       "listTwo": []
     30     },
     31     "property": "sublist"
     32   },
     33   {
     34     "description": "empty list within non empty list",
     35     "expected": "sublist",
     36     "input": {
     37       "listOne": [],
     38       "listTwo": [
     39         1,
     40         2,
     41         3
     42       ]
     43     },
     44     "property": "sublist"
     45   },
     46   {
     47     "description": "non empty list contains empty list",
     48     "expected": "superlist",
     49     "input": {
     50       "listOne": [
     51         1,
     52         2,
     53         3
     54       ],
     55       "listTwo": []
     56     },
     57     "property": "sublist"
     58   },
     59   {
     60     "description": "list equals itself",
     61     "expected": "equal",
     62     "input": {
     63       "listOne": [
     64         1,
     65         2,
     66         3
     67       ],
     68       "listTwo": [
     69         1,
     70         2,
     71         3
     72       ]
     73     },
     74     "property": "sublist"
     75   },
     76   {
     77     "description": "different lists",
     78     "expected": "unequal",
     79     "input": {
     80       "listOne": [
     81         1,
     82         2,
     83         3
     84       ],
     85       "listTwo": [
     86         2,
     87         3,
     88         4
     89       ]
     90     },
     91     "property": "sublist"
     92   },
     93   {
     94     "description": "false start",
     95     "expected": "sublist",
     96     "input": {
     97       "listOne": [
     98         1,
     99         2,
    100         5
    101       ],
    102       "listTwo": [
    103         0,
    104         1,
    105         2,
    106         3,
    107         1,
    108         2,
    109         5,
    110         6
    111       ]
    112     },
    113     "property": "sublist"
    114   },
    115   {
    116     "description": "consecutive",
    117     "expected": "sublist",
    118     "input": {
    119       "listOne": [
    120         1,
    121         1,
    122         2
    123       ],
    124       "listTwo": [
    125         0,
    126         1,
    127         1,
    128         1,
    129         2,
    130         1,
    131         2
    132       ]
    133     },
    134     "property": "sublist"
    135   },
    136   {
    137     "description": "sublist at start",
    138     "expected": "sublist",
    139     "input": {
    140       "listOne": [
    141         0,
    142         1,
    143         2
    144       ],
    145       "listTwo": [
    146         0,
    147         1,
    148         2,
    149         3,
    150         4,
    151         5
    152       ]
    153     },
    154     "property": "sublist"
    155   },
    156   {
    157     "description": "sublist in middle",
    158     "expected": "sublist",
    159     "input": {
    160       "listOne": [
    161         2,
    162         3,
    163         4
    164       ],
    165       "listTwo": [
    166         0,
    167         1,
    168         2,
    169         3,
    170         4,
    171         5
    172       ]
    173     },
    174     "property": "sublist"
    175   },
    176   {
    177     "description": "sublist at end",
    178     "expected": "sublist",
    179     "input": {
    180       "listOne": [
    181         3,
    182         4,
    183         5
    184       ],
    185       "listTwo": [
    186         0,
    187         1,
    188         2,
    189         3,
    190         4,
    191         5
    192       ]
    193     },
    194     "property": "sublist"
    195   },
    196   {
    197     "description": "at start of superlist",
    198     "expected": "superlist",
    199     "input": {
    200       "listOne": [
    201         0,
    202         1,
    203         2,
    204         3,
    205         4,
    206         5
    207       ],
    208       "listTwo": [
    209         0,
    210         1,
    211         2
    212       ]
    213     },
    214     "property": "sublist"
    215   },
    216   {
    217     "description": "in middle of superlist",
    218     "expected": "superlist",
    219     "input": {
    220       "listOne": [
    221         0,
    222         1,
    223         2,
    224         3,
    225         4,
    226         5
    227       ],
    228       "listTwo": [
    229         2,
    230         3
    231       ]
    232     },
    233     "property": "sublist"
    234   },
    235   {
    236     "description": "at end of superlist",
    237     "expected": "superlist",
    238     "input": {
    239       "listOne": [
    240         0,
    241         1,
    242         2,
    243         3,
    244         4,
    245         5
    246       ],
    247       "listTwo": [
    248         3,
    249         4,
    250         5
    251       ]
    252     },
    253     "property": "sublist"
    254   },
    255   {
    256     "description": "first list missing element from second list",
    257     "expected": "unequal",
    258     "input": {
    259       "listOne": [
    260         1,
    261         3
    262       ],
    263       "listTwo": [
    264         1,
    265         2,
    266         3
    267       ]
    268     },
    269     "property": "sublist"
    270   },
    271   {
    272     "description": "second list missing element from first list",
    273     "expected": "unequal",
    274     "input": {
    275       "listOne": [
    276         1,
    277         2,
    278         3
    279       ],
    280       "listTwo": [
    281         1,
    282         3
    283       ]
    284     },
    285     "property": "sublist"
    286   },
    287   {
    288     "description": "order matters to a list",
    289     "expected": "unequal",
    290     "input": {
    291       "listOne": [
    292         1,
    293         2,
    294         3
    295       ],
    296       "listTwo": [
    297         3,
    298         2,
    299         1
    300       ]
    301     },
    302     "property": "sublist"
    303   },
    304   {
    305     "description": "same digits but different numbers",
    306     "expected": "unequal",
    307     "input": {
    308       "listOne": [
    309         1,
    310         0,
    311         1
    312       ],
    313       "listTwo": [
    314         10,
    315         1
    316       ]
    317     },
    318     "property": "sublist"
    319   }
    320 ]