Sha256: 4d39a0f8bba231f2823fde5c207fe7d7f405431cece213daa17f09d53f3d10eb

Contents?: true

Size: 1.93 KB

Versions: 32

Compression:

Stored size: 1.93 KB

Contents

#!/usr/bin/env perl6

use Test;
use JSON::Tiny;

use lib IO::Path.new($?FILE).parent.path;

my $module = %*ENV<EXERCISM> ?? 'Example' !! 'LinkedList';
require ::($module) <LinkedList>;

my @cases; # defined in INIT

plan 0 + @cases;

for @cases -> $c {
    subtest $c.<name>, sub {
        my $ll = LinkedList.new;
        for  |$c.<set> -> %s {
            for %s {
                my $v = $_.value;
                given $_.key  {
                    when 'push'    { $ll.push( $v );    pass 'push ' ~ $v    }
                    when 'unshift' { $ll.unshift( $v ); pass 'unshift ' ~ $v }
                    when 'pop'     { is $ll.pop,   $v, 'pop'   }
                    when 'shift'   { is $ll.shift, $v, 'shift' }
                }
            }
        }
    };
}


done-testing;

INIT {
  @cases := from-json 「
    [
      {
        "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"
      }
    ]
  」
}

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
trackler-2.0.8.20 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.19 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.18 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.17 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.16 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.15 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.14 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.13 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.12 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.11 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.10 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.9 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.8 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.7 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.6 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.5 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.4 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.3 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.2 tracks/perl6/exercises/linked-list/linked-list.t
trackler-2.0.8.1 tracks/perl6/exercises/linked-list/linked-list.t