diff options
Diffstat (limited to 'raku/raindrops/raindrops.rakutest')
-rw-r--r-- | raku/raindrops/raindrops.rakutest | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/raku/raindrops/raindrops.rakutest b/raku/raindrops/raindrops.rakutest new file mode 100644 index 0000000..a61cfd8 --- /dev/null +++ b/raku/raindrops/raindrops.rakutest @@ -0,0 +1,165 @@ +#!/usr/bin/env raku +use Test; +use JSON::Fast; +use lib $?FILE.IO.dirname; +use Raindrops; +plan 18; + +my @test-cases = from-json($=pod.pop.contents).List; +for @test-cases -> %case { + subtest %case<description>, { + plan 2; + isa-ok ( my $result := raindrop %case<input><number> ), Str; + is $result, %case<expected>, 'Result matches expected'; + } +} + +=head2 Test Cases +=begin code +[ + { + "description": "the sound for 1 is 1", + "expected": "1", + "input": { + "number": 1 + }, + "property": "convert" + }, + { + "description": "the sound for 3 is Pling", + "expected": "Pling", + "input": { + "number": 3 + }, + "property": "convert" + }, + { + "description": "the sound for 5 is Plang", + "expected": "Plang", + "input": { + "number": 5 + }, + "property": "convert" + }, + { + "description": "the sound for 7 is Plong", + "expected": "Plong", + "input": { + "number": 7 + }, + "property": "convert" + }, + { + "description": "the sound for 6 is Pling as it has a factor 3", + "expected": "Pling", + "input": { + "number": 6 + }, + "property": "convert" + }, + { + "description": "2 to the power 3 does not make a raindrop sound as 3 is the exponent not the base", + "expected": "8", + "input": { + "number": 8 + }, + "property": "convert" + }, + { + "description": "the sound for 9 is Pling as it has a factor 3", + "expected": "Pling", + "input": { + "number": 9 + }, + "property": "convert" + }, + { + "description": "the sound for 10 is Plang as it has a factor 5", + "expected": "Plang", + "input": { + "number": 10 + }, + "property": "convert" + }, + { + "description": "the sound for 14 is Plong as it has a factor of 7", + "expected": "Plong", + "input": { + "number": 14 + }, + "property": "convert" + }, + { + "description": "the sound for 15 is PlingPlang as it has factors 3 and 5", + "expected": "PlingPlang", + "input": { + "number": 15 + }, + "property": "convert" + }, + { + "description": "the sound for 21 is PlingPlong as it has factors 3 and 7", + "expected": "PlingPlong", + "input": { + "number": 21 + }, + "property": "convert" + }, + { + "description": "the sound for 25 is Plang as it has a factor 5", + "expected": "Plang", + "input": { + "number": 25 + }, + "property": "convert" + }, + { + "description": "the sound for 27 is Pling as it has a factor 3", + "expected": "Pling", + "input": { + "number": 27 + }, + "property": "convert" + }, + { + "description": "the sound for 35 is PlangPlong as it has factors 5 and 7", + "expected": "PlangPlong", + "input": { + "number": 35 + }, + "property": "convert" + }, + { + "description": "the sound for 49 is Plong as it has a factor 7", + "expected": "Plong", + "input": { + "number": 49 + }, + "property": "convert" + }, + { + "description": "the sound for 52 is 52", + "expected": "52", + "input": { + "number": 52 + }, + "property": "convert" + }, + { + "description": "the sound for 105 is PlingPlangPlong as it has factors 3, 5 and 7", + "expected": "PlingPlangPlong", + "input": { + "number": 105 + }, + "property": "convert" + }, + { + "description": "the sound for 3125 is Plang as it has a factor 5", + "expected": "Plang", + "input": { + "number": 3125 + }, + "property": "convert" + } +] +=end code |