Skip to content

Commit

Permalink
Move JSON into test suites
Browse files Browse the repository at this point in the history
  • Loading branch information
m-dango committed Feb 5, 2017
1 parent 53ebca2 commit ca0af51
Show file tree
Hide file tree
Showing 14 changed files with 419 additions and 416 deletions.
File renamed without changes.
129 changes: 120 additions & 9 deletions exercises/allergies/allergies.t
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,15 @@
use Test;
use JSON::Tiny;

use lib ( my $dir = IO::Path.new($?FILE).parent ).path;
use lib IO::Path.new($?FILE).parent.path;

my $module_name = %*ENV<EXERCISM>.so ?? 'Example' !! 'Allergies';
my @potential_module = <p6 pm6 pm>.map: $module_name ~ '.' ~ *;
my $module = %*ENV<EXERCISM>.so ?? 'Example' !! 'Allergies';

my $module = first { $dir.child($_).e }, |@potential_module
or die "No file '$module_name.p6' found\n";

require $module <&allergic-to &list-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'};

Expand All @@ -43,3 +38,119 @@ subtest 'list' => {
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"]
}
]
}
}
}
109 changes: 0 additions & 109 deletions exercises/allergies/cases.json

This file was deleted.

File renamed without changes.
82 changes: 0 additions & 82 deletions exercises/atbash-cipher/cases.json

This file was deleted.

Loading

0 comments on commit ca0af51

Please sign in to comment.