tracks/perl6/exercises/allergies/allergies.t in trackler-2.0.6.36 vs tracks/perl6/exercises/allergies/allergies.t in trackler-2.0.6.37

- old
+ new

@@ -1,19 +1,18 @@ #!/usr/bin/env perl6 use Test; use JSON::Tiny; -use lib ( my $dir = IO::Path.new($?FILE).parent ).path; +use lib $?FILE.IO.dirname; my $module = %*ENV<EXERCISM> ?? 'Example' !! 'Allergies'; require ::($module) <&allergic-to &list-allergies>; plan 2; -my %cases = from-json $dir.child('cases.json').slurp; - +my %cases; subtest 'allergic-to' => { my @cases = |%cases{'allergic_to'}{'cases'}; plan +@cases; @@ -36,5 +35,121 @@ for |@cases { is list-allergies(.<score>), .<expected>, .<description> or diag $_; } }; + +done-testing; + +INIT { + %cases := from-json 「 + { + "allergic_to": { + "description": [ + "Given a number and a substance, indicate whether Tom is allergic ", + "to that substance.", + "Test cases for this method involve more than one assertion.", + "Each case in 'expected' specifies what the method should return for", + "the given substance." + ], + "cases": [ + { + "description": "no allergies means not allergic", + "score": 0, + "expected": [ + { + "substance": "peanuts", + "result": false + }, + { + "substance": "cats", + "result": false + }, + { + "substance": "strawberries", + "result": false + } + ] + }, + { + "description": "is allergic to eggs", + "score": 1, + "expected": [ + { + "substance": "eggs", + "result": true + } + ] + }, + { + "description": "allergic to eggs in addition to other stuff", + "score": 5, + "expected": [ + { + "substance": "eggs", + "result": true + }, + { + "substance": "shellfish", + "result": true + }, + { + "substance": "strawberries", + "result": false + } + ] + } + ] + }, + "list": { + "description": ["Given a number, list all things Tom is allergic to"], + "cases": [ + { + "description": "no allergies at all", + "score": 0, + "expected": [] + }, + { + "description": "allergic to just eggs", + "score": 1, + "expected": ["eggs"] + }, + { + "description": "allergic to just peanuts", + "score": 2, + "expected": ["peanuts"] + }, + { + "description": "allergic to just strawberries", + "score": 8, + "expected": ["strawberries"] + }, + { + "description": "allergic to eggs and peanuts", + "score": 3, + "expected": ["eggs", "peanuts"] + }, + { + "description": "allergic to more than eggs but not peanuts", + "score": 5, + "expected": ["eggs", "shellfish"] + }, + { + "description": "allergic to lots of stuff", + "score": 248, + "expected": ["strawberries", "tomatoes", "chocolate", "pollen", "cats"] + }, + { + "description": "allergic to everything", + "score": 255, + "expected": ["eggs", "peanuts", "shellfish", "strawberries", "tomatoes", "chocolate", "pollen", "cats"] + }, + { + "description": "ignore non allergen score parts", + "score": 509, + "expected": ["eggs", "shellfish", "strawberries", "tomatoes", "chocolate", "pollen", "cats"] + } + ] + } + } + 」 +}