summary refs log blame commit diff stats
path: root/raku/raindrops/raindrops.rakutest
blob: a61cfd863014e71ba1a84a86b3e1549148185c39 (plain) (tree)




































































































































































                                                                                                       
#!/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