trackler 2.0.8.28 → 2.0.8.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/common/CONTRIBUTING.md +4 -1
  3. data/common/README.md +52 -0
  4. data/lib/trackler/version.rb +1 -1
  5. data/tracks/ecmascript/config.json +7 -0
  6. data/tracks/ecmascript/exercises/perfect-numbers/example.js +68 -0
  7. data/tracks/ecmascript/exercises/perfect-numbers/gulpfile.js +89 -0
  8. data/tracks/ecmascript/exercises/perfect-numbers/package.json +28 -0
  9. data/tracks/ecmascript/exercises/perfect-numbers/perfect-numbers.spec.js +75 -0
  10. data/tracks/erlang/exercises/accumulate/src/accumulate.app.src +1 -1
  11. data/tracks/erlang/exercises/all-your-base/src/all_your_base.app.src +1 -1
  12. data/tracks/erlang/exercises/allergies/src/allergies.app.src +1 -1
  13. data/tracks/erlang/exercises/anagram/src/anagram.app.src +1 -1
  14. data/tracks/erlang/exercises/atbash-cipher/src/atbash_cipher.app.src +1 -1
  15. data/tracks/erlang/exercises/bank-account/src/bank_account.app.src +1 -1
  16. data/tracks/erlang/exercises/beer-song/src/beer_song.app.src +1 -1
  17. data/tracks/erlang/exercises/bob/src/bob.app.src +1 -1
  18. data/tracks/erlang/exercises/circular-buffer/src/circular_buffer.app.src +1 -1
  19. data/tracks/erlang/exercises/clock/src/clock.app.src +1 -1
  20. data/tracks/erlang/exercises/difference-of-squares/src/difference_of_squares.app.src +1 -1
  21. data/tracks/erlang/exercises/etl/src/etl.app.src +1 -1
  22. data/tracks/erlang/exercises/gigasecond/src/gigasecond.app.src +1 -1
  23. data/tracks/erlang/exercises/grade-school/src/grade_school.app.src +1 -1
  24. data/tracks/erlang/exercises/grains/src/grains.app.src +1 -1
  25. data/tracks/erlang/exercises/hamming/src/hamming.app.src +1 -1
  26. data/tracks/erlang/exercises/hello-world/src/hello_world.app.src +1 -1
  27. data/tracks/erlang/exercises/largest-series-product/src/largest_series_product.app.src +1 -1
  28. data/tracks/erlang/exercises/leap/src/leap.app.src +1 -1
  29. data/tracks/erlang/exercises/luhn/src/luhn.app.src +1 -1
  30. data/tracks/erlang/exercises/meetup/src/meetup.app.src +1 -1
  31. data/tracks/erlang/exercises/nucleotide-count/src/nucleotide_count.app.src +1 -1
  32. data/tracks/erlang/exercises/parallel-letter-frequency/src/parallel_letter_frequency.app.src +1 -1
  33. data/tracks/erlang/exercises/phone-number/src/phone_number.app.src +1 -1
  34. data/tracks/erlang/exercises/rna-transcription/src/rna_transcription.app.src +1 -1
  35. data/tracks/erlang/exercises/robot-simulator/src/robot_simulator.app.src +1 -1
  36. data/tracks/erlang/exercises/roman-numerals/src/roman_numerals.app.src +1 -1
  37. data/tracks/erlang/exercises/rotational-cipher/src/rotational_cipher.app.src +1 -1
  38. data/tracks/erlang/exercises/scrabble-score/src/scrabble_score.app.src +1 -1
  39. data/tracks/erlang/exercises/series/src/series.app.src +1 -1
  40. data/tracks/erlang/exercises/space-age/src/space_age.app.src +1 -1
  41. data/tracks/erlang/exercises/strain/src/strain.app.src +1 -1
  42. data/tracks/erlang/exercises/sum-of-multiples/src/sum_of_multiples.app.src +1 -1
  43. data/tracks/erlang/exercises/triangle/src/triangle.app.src +1 -1
  44. data/tracks/erlang/exercises/word-count/src/word_count.app.src +1 -1
  45. data/tracks/erlang/exercises/zipper/src/zipper.app.src +1 -1
  46. data/tracks/go/exercises/hello-world/hello_world.go +10 -1
  47. data/tracks/haskell/exercises/simple-linked-list/examples/success-standard/package.yaml +1 -0
  48. data/tracks/haskell/exercises/simple-linked-list/examples/success-standard/src/LinkedList.hs +1 -0
  49. data/tracks/haskell/exercises/simple-linked-list/package.yaml +1 -0
  50. data/tracks/haskell/exercises/simple-linked-list/src/LinkedList.hs +1 -1
  51. data/tracks/haskell/exercises/simple-linked-list/test/Tests.hs +37 -1
  52. data/tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java +13 -6
  53. data/tracks/java/exercises/secret-handshake/src/test/java/HandshakeCalculatorTest.java +21 -13
  54. data/tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m +1 -1
  55. data/tracks/objective-c/exercises/beer-song/BeerSongExample.m +1 -1
  56. data/tracks/objective-c/exercises/beer-song/BeerSongTest.m +4 -4
  57. data/tracks/objective-c/exercises/binary-search/BinarySearchExample.m +1 -1
  58. data/tracks/objective-c/exercises/flatten-array/FlattenArrayExample.h +2 -1
  59. data/tracks/objective-c/exercises/flatten-array/FlattenArrayExample.m +12 -25
  60. data/tracks/objective-c/exercises/flatten-array/FlattenArrayTest.m +32 -80
  61. data/tracks/objective-c/exercises/sublist/SublistTest.m +47 -70
  62. data/tracks/perl6/exercises/allergies/Allergies.pm6 +1 -0
  63. data/tracks/perl6/exercises/allergies/Example.pm +3 -1
  64. data/tracks/perl6/exercises/allergies/allergies.t +187 -137
  65. data/tracks/perl6/exercises/anagram/Anagram.pm6 +1 -0
  66. data/tracks/perl6/exercises/anagram/Example.pm +15 -15
  67. data/tracks/perl6/exercises/anagram/anagram.t +164 -15
  68. data/tracks/perl6/exercises/atbash-cipher/AtbashCipher.pm6 +1 -0
  69. data/tracks/perl6/exercises/atbash-cipher/Example.pm +2 -0
  70. data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +109 -86
  71. data/tracks/perl6/exercises/grains/Example.pm +10 -9
  72. data/tracks/perl6/exercises/grains/Grains.pm6 +1 -0
  73. data/tracks/perl6/exercises/grains/grains.t +126 -18
  74. data/tracks/perl6/exercises/leap/Example.pm +9 -9
  75. data/tracks/perl6/exercises/leap/Leap.pm6 +4 -0
  76. data/tracks/perl6/exercises/leap/leap.t +61 -17
  77. data/tracks/perl6/exercises/phone-number/Example.pm +4 -28
  78. data/tracks/perl6/exercises/phone-number/PhoneNumber.pm6 +4 -0
  79. data/tracks/perl6/exercises/phone-number/phone-number.t +102 -65
  80. data/tracks/perl6/exercises/raindrops/Example.pm +10 -8
  81. data/tracks/perl6/exercises/raindrops/Raindrops.pm6 +4 -0
  82. data/tracks/perl6/exercises/raindrops/raindrops.t +153 -20
  83. data/tracks/perl6/exercises/rna-transcription/Example.pm +5 -7
  84. data/tracks/perl6/exercises/rna-transcription/RNA.pm6 +4 -0
  85. data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +107 -11
  86. data/tracks/perl6/exercises/scrabble-score/Example.pm +14 -19
  87. data/tracks/perl6/exercises/scrabble-score/Scrabble.pm6 +4 -0
  88. data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +106 -15
  89. data/tracks/perl6/exercises/space-age/Example.pm +29 -13
  90. data/tracks/perl6/exercises/space-age/SpaceAge.pm6 +22 -0
  91. data/tracks/perl6/exercises/space-age/space-age.t +90 -52
  92. data/tracks/perl6/exercises/word-count/Example.pm +4 -8
  93. data/tracks/perl6/exercises/word-count/WordCount.pm6 +4 -0
  94. data/tracks/perl6/exercises/word-count/word-count.t +149 -16
  95. data/tracks/perl6/exercises/wordy/Example.pm +13 -13
  96. data/tracks/perl6/exercises/wordy/Wordy.pm6 +4 -0
  97. data/tracks/perl6/exercises/wordy/wordy.t +140 -97
  98. data/tracks/purescript/config.json +7 -0
  99. data/tracks/purescript/exercises/atbash-cipher/bower.json +18 -0
  100. data/tracks/purescript/exercises/atbash-cipher/examples/src/AtbashCipher.purs +41 -0
  101. data/tracks/purescript/exercises/atbash-cipher/src/AtbashCipher.purs +4 -0
  102. data/tracks/purescript/exercises/atbash-cipher/test/Main.purs +64 -0
  103. data/tracks/python/exercises/run-length-encoding/run_length_encoding_test.py +2 -0
  104. data/tracks/swift/exercises/grade-school/Tests/GradeSchoolTests/GradeSchoolTests.swift +1 -1
  105. metadata +22 -2
@@ -1,9 +1,5 @@
1
- class Word_Counter is export {
2
- method count_words ($text) {
3
- my %word_counts;
4
- for $text.comb(/\w+/) {
5
- %word_counts{$_.lc}++;
6
- }
7
- %word_counts;
8
- }
1
+ unit module WordCount:ver<1>;
2
+
3
+ sub count-words (Str:D $str --> Hash:D) is export {
4
+ $str.lc.comb(/ <alnum>+ (\'<alnum>+)? /).Bag.hash
9
5
  }
@@ -0,0 +1,4 @@
1
+ unit module WordCount:ver<1>;
2
+
3
+ sub count-words ($str) is export {
4
+ }
@@ -1,24 +1,157 @@
1
1
  #!/usr/bin/env perl6
2
2
  use v6;
3
3
  use Test;
4
- use lib IO::Path.new($?FILE).parent.path;
4
+ use lib my $dir = $?FILE.IO.dirname;
5
+ use JSON::Tiny;
5
6
 
6
- plan 8;
7
- my $module = %*ENV<EXERCISM> ?? 'Example' !! 'Word_Counter';
8
- use-ok $module;
9
- require ::($module) <Word_Counter>;
7
+ my $exercise = 'WordCount';
8
+ my $version = v1;
9
+ my $module = %*ENV<EXERCISM> ?? 'Example' !! $exercise;
10
+ plan 13;
10
11
 
11
- ok Word_Counter.can('count_words'), 'Class Word_Counter has count_words method';
12
+ use-ok $module or bail-out;
13
+ require ::($module);
12
14
 
13
- is-deeply Word_Counter.count_words('word'), {word => 1}, 'one word';
14
- is-deeply Word_Counter.count_words('one of each'), {one => 1, of => 1, each => 1}, 'one of each';
15
- is-deeply Word_Counter.count_words('one fish two fish red fish blue fish'),
16
- {one => 1, fish => 4, two => 1, red => 1, blue => 1},
17
- 'multiple occurences';
18
- is-deeply Word_Counter.count_words('car : carpet as java : javascript!!&@$%^&'),
19
- {car => 1, carpet => 1, as => 1, java => 1, javascript => 1},
20
- 'ignore punctuation';
21
- is-deeply Word_Counter.count_words('testing, 1, 2 testing'), {testing => 2, 1 => 1, 2 => 1}, 'include numbers';
22
- is-deeply Word_Counter.count_words('go Go GO'), {go => 3}, 'normalize case';
15
+ if ::($exercise).^ver !~~ $version {
16
+ warn "\nExercise version mismatch. Further tests may fail!"
17
+ ~ "\n$exercise is $(::($exercise).^ver.gist). "
18
+ ~ "Test is $($version.gist).\n";
19
+ bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
20
+ }
23
21
 
22
+ my @subs;
23
+ BEGIN { @subs = <&count-words> };
24
+ subtest 'Subroutine(s)', {
25
+ plan 1;
26
+ eval-lives-ok "use $module; ::('$_').defined or die '$_ is not defined.'", $_ for @subs;
27
+ } or bail-out 'All subroutines must be defined and exported.';
28
+ require ::($module) @subs.eager;
24
29
 
30
+ is-deeply (% = .<input>.&count-words), |.<expected description> for @(my $c-data.<cases>);
31
+
32
+ if %*ENV<EXERCISM> && (my $c-data-file = "$dir/../../x-common/exercises/{$dir.IO.basename}/canonical-data.json".IO.resolve) ~~ :f {
33
+ is-deeply $c-data, from-json($c-data-file.slurp), 'canonical-data'
34
+ } else { skip }
35
+
36
+ done-testing;
37
+
38
+ INIT {
39
+ $c-data := from-json 「
40
+ {
41
+ "exercise": "word-count",
42
+ "version": "1.0.0",
43
+ "comments": [
44
+ "For each word in the input, count the number of times it appears in the",
45
+ "entire sentence."
46
+ ],
47
+ "cases": [
48
+ {
49
+ "description": "count one word",
50
+ "property": "countwords",
51
+ "input": "word",
52
+ "expected": {
53
+ "word": 1
54
+ }
55
+ },
56
+ {
57
+ "description": "count one of each word",
58
+ "property": "countwords",
59
+ "input": "one of each",
60
+ "expected": {
61
+ "one": 1,
62
+ "of": 1,
63
+ "each": 1
64
+ }
65
+ },
66
+ {
67
+ "description": "multiple occurrences of a word",
68
+ "property": "countwords",
69
+ "input": "one fish two fish red fish blue fish",
70
+ "expected": {
71
+ "one": 1,
72
+ "fish": 4,
73
+ "two": 1,
74
+ "red": 1,
75
+ "blue": 1
76
+ }
77
+ },
78
+ {
79
+ "description": "handles cramped lists",
80
+ "property": "countwords",
81
+ "input": "one,two,three",
82
+ "expected": {
83
+ "one": 1,
84
+ "two": 1,
85
+ "three": 1
86
+ }
87
+ },
88
+ {
89
+ "description": "handles expanded lists",
90
+ "property": "countwords",
91
+ "input": "one,\ntwo,\nthree",
92
+ "expected": {
93
+ "one": 1,
94
+ "two": 1,
95
+ "three": 1
96
+ }
97
+ },
98
+ {
99
+ "description": "ignore punctuation",
100
+ "property": "countwords",
101
+ "input": "car: carpet as java: javascript!!&@$%^&",
102
+ "expected": {
103
+ "car": 1,
104
+ "carpet": 1,
105
+ "as": 1,
106
+ "java": 1,
107
+ "javascript": 1
108
+ }
109
+ },
110
+ {
111
+ "description": "include numbers",
112
+ "property": "countwords",
113
+ "input": "testing, 1, 2 testing",
114
+ "expected": {
115
+ "testing": 2,
116
+ "1": 1,
117
+ "2": 1
118
+ }
119
+ },
120
+ {
121
+ "description": "normalize case",
122
+ "property": "countwords",
123
+ "input": "go Go GO Stop stop",
124
+ "expected": {
125
+ "go": 3,
126
+ "stop": 2
127
+ }
128
+ },
129
+ {
130
+ "description": "with apostrophes",
131
+ "property": "countwords",
132
+ "input": "First: don't laugh. Then: don't cry.",
133
+ "expected": {
134
+ "first": 1,
135
+ "don't": 2,
136
+ "laugh": 1,
137
+ "then": 1,
138
+ "cry": 1
139
+ }
140
+ },
141
+ {
142
+ "description": "with quotations",
143
+ "property": "countwords",
144
+ "input": "Joe can't tell between 'large' and large.",
145
+ "expected": {
146
+ "joe": 1,
147
+ "can't": 1,
148
+ "tell": 1,
149
+ "between": 1,
150
+ "large": 2,
151
+ "and": 1
152
+ }
153
+ }
154
+ ]
155
+ }
156
+
157
+ }
@@ -1,16 +1,16 @@
1
- sub answer($q is copy) is export {
1
+ unit module Wordy:ver<1>;
2
2
 
3
- given $q {
4
- s:s:g/^What is|\?$//;
5
- s:g/plus/+/;
6
- s:g/minus/-/;
7
-
8
- loop {
9
- last unless s:s/(.*) multiplied by/($0)*/
10
- or s:s,(.*) divided by,($0)/,;
11
- }
3
+ sub answer ($q is copy) is export {
4
+ given $q {
5
+ s:s:g/^What is|\?$//;
6
+ s:g/plus/+/;
7
+ s:g/minus/−/;
8
+ loop {
9
+ last unless
10
+ s:s/(.*) multiplied by/($0)×/
11
+ or s:s/(.*) divided by/($0)÷/;
12
12
  }
13
-
14
- use MONKEY-SEE-NO-EVAL;
15
- return EVAL $q;
13
+ }
14
+ use MONKEY-SEE-NO-EVAL;
15
+ EVAL $q or fail;
16
16
  }
@@ -0,0 +1,4 @@
1
+ unit module Wordy:ver<1>;
2
+
3
+ sub answer ($question) is export {
4
+ }
@@ -1,111 +1,154 @@
1
1
  #!/usr/bin/env perl6
2
-
2
+ use v6;
3
3
  use Test;
4
+ use lib my $dir = $?FILE.IO.dirname;
4
5
  use JSON::Tiny;
5
6
 
6
- use lib $?FILE.IO.dirname;
7
+ my $exercise = 'Wordy';
8
+ my $version = v1;
9
+ my $module = %*ENV<EXERCISM> ?? 'Example' !! $exercise;
10
+ plan 19;
7
11
 
8
- my $module = %*ENV<EXERCISM> ?? 'Example' !! 'Wordy';
9
- require ::($module) <&answer>;
12
+ use-ok $module or bail-out;
13
+ require ::($module);
10
14
 
11
- plan 16;
15
+ if ::($exercise).^ver !~~ $version {
16
+ warn "\nExercise version mismatch. Further tests may fail!"
17
+ ~ "\n$exercise is $(::($exercise).^ver.gist). "
18
+ ~ "Test is $($version.gist).\n";
19
+ bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
20
+ }
12
21
 
13
- for my @cases -> %case {
14
- with %case<expected> {
15
- is answer(%case<input>), |%case<expected description>
16
- or diag 'input: ' ~ %case<input>;
17
- }
18
- without %case<expected> {
19
- dies-ok { answer(%case<input>) }, %case<description>
20
- or diag 'input: ' ~ %case<input>;
21
- }
22
+ my @subs;
23
+ BEGIN { @subs = <&answer> };
24
+ subtest 'Subroutine(s)', {
25
+ plan 1;
26
+ eval-lives-ok "use $module; ::('$_').defined or die '$_ is not defined.'", $_ for @subs;
27
+ } or bail-out 'All subroutines must be defined and exported.';
28
+ require ::($module) @subs.eager;
29
+
30
+ for @(my $c-data.<cases>) {
31
+ if .<expected> === False {
32
+ throws-like {.<input>.&answer}, Exception, .<description>;
33
+ } else {
34
+ is .<input>.&answer, |.<expected description>;
35
+ }
22
36
  }
23
37
 
38
+ if %*ENV<EXERCISM> && (my $c-data-file = "$dir/../../x-common/exercises/{$dir.IO.basename}/canonical-data.json".IO.resolve) ~~ :f {
39
+ is-deeply $c-data, from-json($c-data-file.slurp), 'canonical-data'
40
+ } else { skip }
41
+
24
42
  done-testing;
25
43
 
26
44
  INIT {
27
- @cases := from-json 「
28
- [
29
- {
30
- "description": "addition",
31
- "input": "What is 1 plus 1?",
32
- "expected": 2
33
- },
34
- {
35
- "description": "more addition",
36
- "input": "What is 53 plus 2?",
37
- "expected": 55
38
- },
39
- {
40
- "description": "addition with negative numbers",
41
- "input": "What is -1 plus -10?",
42
- "expected": -11
43
- },
44
- {
45
- "description": "large addition",
46
- "input": "What is 123 plus 45678?",
47
- "expected": 45801
48
- },
49
- {
50
- "description": "subtraction",
51
- "input": "What is 4 minus -12?",
52
- "expected": 16
53
- },
54
- {
55
- "description": "multiplication",
56
- "input": "What is -3 multiplied by 25?",
57
- "expected": -75
58
- },
59
- {
60
- "description": "division",
61
- "input": "What is 33 divided by -3?",
62
- "expected": -11
63
- },
64
- {
65
- "description": "multiple additions",
66
- "input": "What is 1 plus 1 plus 1?",
67
- "expected": 3
68
- },
69
- {
70
- "description": "addition and subtraction",
71
- "input": "What is 1 plus 5 minus -2?",
72
- "expected": 8
73
- },
74
- {
75
- "description": "multiple subtraction",
76
- "input": "What is 20 minus 4 minus 13?",
77
- "expected": 3
78
- },
79
- {
80
- "description": "subtraction then addition",
81
- "input": "What is 17 minus 6 plus 3?",
82
- "expected": 14
83
- },
84
- {
85
- "description": "multiple multiplication",
86
- "input": "What is 2 multiplied by -2 multiplied by 3?",
87
- "expected": -12
88
- },
89
- {
90
- "description": "addition and multiplication",
91
- "input": "What is -3 plus 7 multiplied by -2?",
92
- "expected": -8
93
- },
94
- {
95
- "description": "multiple division",
96
- "input": "What is -12 divided by 2 divided by -3?",
97
- "expected": 2
98
- },
99
- {
100
- "description": "unknown operation",
101
- "input": "What is 52 cubed?",
102
- "expected": null
103
- },
104
- {
105
- "description": "Non math question",
106
- "input": "Who is the President of the United States?",
107
- "expected": null
108
- }
109
- ]
45
+ $c-data := from-json 「
46
+ {
47
+ "exercise": "wordy",
48
+ "version": "1.0.0",
49
+ "comments": [
50
+ "The tests that expect 'false' should be implemented to raise",
51
+ "an error, or indicate a failure. Implement this in a way that",
52
+ "makes sense for your language."
53
+ ],
54
+ "cases": [
55
+ {
56
+ "description": "addition",
57
+ "property": "answer",
58
+ "input": "What is 1 plus 1?",
59
+ "expected": 2
60
+ },
61
+ {
62
+ "description": "more addition",
63
+ "property": "answer",
64
+ "input": "What is 53 plus 2?",
65
+ "expected": 55
66
+ },
67
+ {
68
+ "description": "addition with negative numbers",
69
+ "property": "answer",
70
+ "input": "What is -1 plus -10?",
71
+ "expected": -11
72
+ },
73
+ {
74
+ "description": "large addition",
75
+ "property": "answer",
76
+ "input": "What is 123 plus 45678?",
77
+ "expected": 45801
78
+ },
79
+ {
80
+ "description": "subtraction",
81
+ "property": "answer",
82
+ "input": "What is 4 minus -12?",
83
+ "expected": 16
84
+ },
85
+ {
86
+ "description": "multiplication",
87
+ "property": "answer",
88
+ "input": "What is -3 multiplied by 25?",
89
+ "expected": -75
90
+ },
91
+ {
92
+ "description": "division",
93
+ "property": "answer",
94
+ "input": "What is 33 divided by -3?",
95
+ "expected": -11
96
+ },
97
+ {
98
+ "description": "multiple additions",
99
+ "property": "answer",
100
+ "input": "What is 1 plus 1 plus 1?",
101
+ "expected": 3
102
+ },
103
+ {
104
+ "description": "addition and subtraction",
105
+ "property": "answer",
106
+ "input": "What is 1 plus 5 minus -2?",
107
+ "expected": 8
108
+ },
109
+ {
110
+ "description": "multiple subtraction",
111
+ "property": "answer",
112
+ "input": "What is 20 minus 4 minus 13?",
113
+ "expected": 3
114
+ },
115
+ {
116
+ "description": "subtraction then addition",
117
+ "property": "answer",
118
+ "input": "What is 17 minus 6 plus 3?",
119
+ "expected": 14
120
+ },
121
+ {
122
+ "description": "multiple multiplication",
123
+ "property": "answer",
124
+ "input": "What is 2 multiplied by -2 multiplied by 3?",
125
+ "expected": -12
126
+ },
127
+ {
128
+ "description": "addition and multiplication",
129
+ "property": "answer",
130
+ "input": "What is -3 plus 7 multiplied by -2?",
131
+ "expected": -8
132
+ },
133
+ {
134
+ "description": "multiple division",
135
+ "property": "answer",
136
+ "input": "What is -12 divided by 2 divided by -3?",
137
+ "expected": 2
138
+ },
139
+ {
140
+ "description": "unknown operation",
141
+ "property": "answer",
142
+ "input": "What is 52 cubed?",
143
+ "expected": false
144
+ },
145
+ {
146
+ "description": "Non math question",
147
+ "property": "answer",
148
+ "input": "Who is the President of the United States?",
149
+ "expected": false
150
+ }
151
+ ]
152
+ }
110
153
 
111
154
  }