Sha256: 0c9a252444a8db0056cc14f83861b379e89a5da2f7874be71a7e5784bdeb5b0a

Contents?: true

Size: 1.67 KB

Versions: 58

Compression:

Stored size: 1.67 KB

Contents

#!/usr/bin/env perl6
use v6;
use Test;
use lib my $dir = $?FILE.IO.dirname;
use JSON::Fast;

my $exercise = 'Leap';
my $version = v1;
my $module = %*ENV<EXERCISM> ?? 'Example' !! $exercise;
plan 6;

use-ok $module or bail-out;
require ::($module);

if ::($exercise).^ver !~~ $version {
  warn "\nExercise version mismatch. Further tests may fail!"
    ~ "\n$exercise is $(::($exercise).^ver.gist). "
    ~ "Test is $($version.gist).\n";
  bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
}

require ::($module) <&is-leap-year>;

my $c-data;
is &::('is-leap-year')(.<input>), |.<expected description> for @($c-data<cases>);

if %*ENV<EXERCISM> {
  if (my $c-data-file = "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json".IO.resolve) ~~ :f {
    is-deeply $c-data, EVAL('use JSON::Fast; from-json($c-data-file.slurp);'), 'canonical-data';
  } else { flunk 'canonical-data' }
} else { skip }

done-testing;

INIT {
$c-data := from-json q:to/END/;

{
  "exercise": "leap",
  "version": "1.0.0",
  "cases": [
    {
      "description": "year not divisible by 4: common year",
      "property": "leapYear",
      "input": 2015,
      "expected": false
    },
    {
      "description": "year divisible by 4, not divisible by 100: leap year",
      "property": "leapYear",
      "input": 2016,
      "expected": true
    },
    {
      "description": "year divisible by 100, not divisible by 400: common year",
      "property": "leapYear",
      "input": 2100,
      "expected": false
    },
    {
      "description": "year divisible by 400: leap year",
      "property": "leapYear",
      "input": 2000,
      "expected": true
    }
  ]
}

END
}

Version data entries

58 entries across 58 versions & 1 rubygems

Version Path
trackler-2.2.1.43 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.42 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.41 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.40 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.39 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.38 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.37 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.36 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.35 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.34 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.33 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.32 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.31 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.30 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.29 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.28 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.27 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.26 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.25 tracks/perl6/exercises/leap/leap.t
trackler-2.2.1.24 tracks/perl6/exercises/leap/leap.t