leap.t (2169B) - 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"; # Find modules in the same dir as this file. 8 9 use Leap qw<is_leap_year>; 10 11 my @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; }; 12 plan 10; # This is how many tests we expect to run. 13 14 imported_ok qw<is_leap_year> or bail_out; 15 16 for my $case (@test_cases) { 17 is( 18 is_leap_year( $case->{input}{year} ), 19 $case->{expected} ? T : DF, # Check if True, or Defined but False 20 $case->{description} 21 ); 22 } 23 24 __DATA__ 25 [ 26 { 27 "description": "year not divisible by 4 in common year", 28 "expected": false, 29 "input": { 30 "year": 2015 31 }, 32 "property": "leapYear" 33 }, 34 { 35 "description": "year divisible by 2, not divisible by 4 in common year", 36 "expected": false, 37 "input": { 38 "year": 1970 39 }, 40 "property": "leapYear" 41 }, 42 { 43 "description": "year divisible by 4, not divisible by 100 in leap year", 44 "expected": true, 45 "input": { 46 "year": 1996 47 }, 48 "property": "leapYear" 49 }, 50 { 51 "description": "year divisible by 4 and 5 is still a leap year", 52 "expected": true, 53 "input": { 54 "year": 1960 55 }, 56 "property": "leapYear" 57 }, 58 { 59 "description": "year divisible by 100, not divisible by 400 in common year", 60 "expected": false, 61 "input": { 62 "year": 2100 63 }, 64 "property": "leapYear" 65 }, 66 { 67 "description": "year divisible by 100 but not by 3 is still not a leap year", 68 "expected": false, 69 "input": { 70 "year": 1900 71 }, 72 "property": "leapYear" 73 }, 74 { 75 "description": "year divisible by 400 is leap year", 76 "expected": true, 77 "input": { 78 "year": 2000 79 }, 80 "property": "leapYear" 81 }, 82 { 83 "description": "year divisible by 400 but not by 125 is still a leap year", 84 "expected": true, 85 "input": { 86 "year": 2400 87 }, 88 "property": "leapYear" 89 }, 90 { 91 "description": "year divisible by 200, not divisible by 400 in common year", 92 "expected": false, 93 "input": { 94 "year": 1800 95 }, 96 "property": "leapYear" 97 } 98 ]