trackler 2.0.8.28 → 2.0.8.29

Sign up to get free protection for your applications and to get access to all the features.
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
  }