#!/usr/bin/env perl6 use Test; use JSON::Tiny; use lib $?FILE.IO.dirname; my $module = %*ENV<EXERCISM> ?? 'Example' !! 'Wordy'; require ::($module) <&answer>; plan 16; for my @cases -> %case { with %case<expected> { is answer(%case<input>), |%case<expected description> or diag 'input: ' ~ %case<input>; } without %case<expected> { dies-ok { answer(%case<input>) }, %case<description> or diag 'input: ' ~ %case<input>; } } done-testing; INIT { @cases := from-json 「 [ { "description": "addition", "input": "What is 1 plus 1?", "expected": 2 }, { "description": "more addition", "input": "What is 53 plus 2?", "expected": 55 }, { "description": "addition with negative numbers", "input": "What is -1 plus -10?", "expected": -11 }, { "description": "large addition", "input": "What is 123 plus 45678?", "expected": 45801 }, { "description": "subtraction", "input": "What is 4 minus -12?", "expected": 16 }, { "description": "multiplication", "input": "What is -3 multiplied by 25?", "expected": -75 }, { "description": "division", "input": "What is 33 divided by -3?", "expected": -11 }, { "description": "multiple additions", "input": "What is 1 plus 1 plus 1?", "expected": 3 }, { "description": "addition and subtraction", "input": "What is 1 plus 5 minus -2?", "expected": 8 }, { "description": "multiple subtraction", "input": "What is 20 minus 4 minus 13?", "expected": 3 }, { "description": "subtraction then addition", "input": "What is 17 minus 6 plus 3?", "expected": 14 }, { "description": "multiple multiplication", "input": "What is 2 multiplied by -2 multiplied by 3?", "expected": -12 }, { "description": "addition and multiplication", "input": "What is -3 plus 7 multiplied by -2?", "expected": -8 }, { "description": "multiple division", "input": "What is -12 divided by 2 divided by -3?", "expected": 2 }, { "description": "unknown operation", "input": "What is 52 cubed?", "expected": null }, { "description": "Non math question", "input": "Who is the President of the United States?", "expected": null } ] 」 }