tracks/ruby/lib/grains_cases.rb in trackler-2.1.0.1 vs tracks/ruby/lib/grains_cases.rb in trackler-2.1.0.2
- old
+ new
@@ -1,53 +1,26 @@
require 'exercise_cases'
-class GrainsCase < OpenStruct
- def test_name
- 'test_%s' % description.downcase.tr_s(' ', '_')
- end
+class GrainsCase < ExerciseCase
def workload
- fail NotImplementedError
+ send("#{property}_workload")
end
- def skipped
- index.zero? ? '# skip' : 'skip'
- end
-
private
- def underscore_format(number)
- number.to_s.reverse.gsub(/...(?=.)/, '\&_').reverse
+ def square_workload
+ if raises_error?
+ "assert_raises(ArgumentError) { Grains.square(#{input}) }"
+ else
+ "assert_equal #{underscore_format(expected)}, Grains.square(#{input})"
+ end
end
-end
-class GrainsCase::SquareMethod < GrainsCase
- def workload
- return error_assertion if expected < 0
-
- "assert_equal #{underscore_format(expected)}, Grains.square(#{input})"
- end
-
- private
-
- def error_assertion
- "assert_raises(ArgumentError) { Grains.square(#{input}) }"
- end
-end
-
-class GrainsCase::TotalMethod < GrainsCase
- def workload
+ def total_workload
"assert_equal #{underscore_format(expected)}, Grains.total"
end
-end
-GrainsCases = proc do |data|
- data = JSON.parse(data)
-
- cases = data['square']['cases'].map.with_index do |row, i|
- GrainsCase::SquareMethod.new(row.merge('index' => i))
+ def underscore_format(number)
+ number.to_s.reverse.gsub(/...(?=.)/, '\&_').reverse
end
-
- cases << GrainsCase::TotalMethod.new(
- data['total'].merge('index' => cases.size)
- )
end