Sha256: e982ece6bc03a625e9240db3b7c5ba7eb5a8af9c684999b09aaa3a0916bdf330

Contents?: true

Size: 1.9 KB

Versions: 83

Compression:

Stored size: 1.9 KB

Contents

#!/usr/bin/env perl6
use v6;
use Test;
use JSON::Fast;
use lib $?FILE.IO.dirname;
use LinkedList;
plan 6;

my Version:D $version = v2;

if LinkedList.^ver !~~ $version {
  warn "\nExercise version mismatch. Further tests may fail!"
    ~ "\nLinkedList is {LinkedList.^ver.gist}. "
    ~ "Test is {$version.gist}.\n";
}

subtest 'Class methods', {
  ok LinkedList.can($_), $_ for <push-list pop-list shift-list unshift-list>;
}

my $cases = from-json $=pod.pop.contents;
for $cases.values -> $case {
  subtest $case.<name>, sub {
    my $linkedlist = LinkedList.new;
    for  |$case.<set> -> %set {
      for %set {
        my $value = $_.value;
        given $_.key  {
          when 'push'    { $linkedlist.?push-list( $value ) }
          when 'unshift' { $linkedlist.?unshift-list( $value ) }
          when 'pop'     { is $linkedlist.?pop-list, $value, 'pop' }
          when 'shift'   { is $linkedlist.?shift-list, $value, 'shift' }
        }
      }
    }
  }
}

=head2 Test Data
=begin code
[
  {
    "set" : [
      { "push" : 10 },
      { "push" : 20 },
      { "pop"  : 20 },
      { "pop"  : 10 }
    ],
    "name" : "push_pop"
  },
  {
    "set" : [
      { "push" : 10  },
      { "push" : 20  },
      { "shift" : 10 },
      { "shift" : 20 }
    ],
    "name" : "push_shift"
  },
  {
    "set" : [
      { "unshift" : 10 },
      { "unshift" : 20 },
      { "shift"   : 20 },
      { "shift"   : 10 }
    ],
    "name" : "unshift_shift"
  },
  {
    "set" : [
      { "unshift" : 10 },
      { "unshift" : 20 },
      { "pop"     : 10 },
      { "pop"     : 20 }
    ],
    "name" : "unshift_pop"
  },
  {
    "set" : [
      { "push"    : 10 },
      { "push"    : 20 },
      { "pop"     : 20 },
      { "push"    : 30 },
      { "shift"   : 10 },
      { "unshift" : 40 },
      { "push"    : 50 },
      { "shift"   : 40 },
      { "pop"     : 50 },
      { "shift"   : 30 }
    ],
    "name" : "example"
  }
]
=end code

Version data entries

83 entries across 83 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.179 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.178 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.177 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.176 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.175 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.174 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.173 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.172 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.171 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.170 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.169 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.167 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.166 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.165 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.164 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.163 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.162 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.161 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.2.1.160 tracks/perl6/exercises/linked-list/linked-list.t