Sha256: 5beeb00eb056fc5c6dc17b83d0a73d5e0829b835346f2fb3c1b59ba94c44b184

Contents?: true

Size: 1.38 KB

Versions: 78

Compression:

Stored size: 1.38 KB

Contents

exercise: Clock
version: 3
methods: time add-minutes subtract-minutes
plan: 53
tests: |-
  for $c-data<cases>»<cases>»<>.flat -> %case {
    given %case<property> {
      when 'create' {
        is Clock.?new( |%(.<input><hour minute>:p) ).?time, |.<expected description> given %case;
      }
      when 'add'|'subtract' {
        given %case {
          my $clock = Clock.?new: |%(.<input><hour minute>:p);
          $clock.?add-minutes: .<input><value> if .<property> eq 'add';
          $clock.?subtract-minutes: .<input><value> if .<property> eq 'subtract';
          is $clock.?time, |.<expected description>;
        }
      }
      when 'equal' {
        is-deeply ([eq] gather {
          take Clock.?new( |%(.<hour minute>:p) ).?time for %case<input><clock1 clock2>;
        }), |%case<expected description>;
      }
    }
  }

  is Clock.?new(:0hour,:0minute).?add-minutes(65).?time, '01:05', 'add-minutes method can be chained';
  is Clock.?new(:0hour,:0minute).?subtract-minutes(65).?time, '22:55', 'subtract-minutes method can be chained';

unit: class
example: |-
  has Int:D $.hour = 0;
  has Int:D $.minute = 0;

  method time {
    sprintf '%02d:%02d', ($!hour + $!minute div 60) % 24, $!minute % 60;
  }

  method add-minutes (Int:D $min) {
    $!minute += $min and return self;
  }

  method subtract-minutes (Int:D $min) {
    self.add-minutes(-$min);
  }
stub: |-
  has $.hour;
  has $.minute;

Version data entries

78 entries across 78 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.179 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.178 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.177 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.176 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.175 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.174 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.173 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.172 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.171 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.170 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.169 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.167 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.166 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.165 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.164 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.163 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.162 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.161 tracks/perl6/exercises/clock/.meta/exercise-data.yaml
trackler-2.2.1.160 tracks/perl6/exercises/clock/.meta/exercise-data.yaml