exercise: Clock version: 1 methods: time add-minutes plan: 54 tests: |- for @($c-data) { for @(.) -> $case { given $case { when 'create' { is ::($exercise).new(hour => $case, minute => $case).?time, |$case; } when 'add' { my $clock = ::($exercise).new(hour => $case, minute => $case); $clock.?add-minutes($case); is $clock.?time, |$case; } when 'equal' { is ::($exercise).new(hour => $case, minute => $case).?time eq ::($exercise).new(hour => $case, minute => $case).?time, |$case; } when %*ENV.so { bail-out "no case for property '$case'" } } } } todo 'optional test' unless %*ENV; is ::($exercise).new(:0hour,:0minute).?add-minutes(65).?time, '01:05', 'add-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; } stub: |- has $.hour; has $.minute;