class Mumukit::Metatest::InteractiveChecker
Public Class Methods
new(request, strip_mode: :left_and_right)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 4 def initialize(request, strip_mode: :left_and_right) @request = request @strip_mode = strip_mode end
Public Instance Methods
check_last_query_equals(_result, goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 9 def check_last_query_equals(_result, goal) expected = goal[:value] actual = query fail_t :check_last_query_equals, expected: expected, actual: actual unless expected == actual end
check_last_query_fails(result, _goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 21 def check_last_query_fails(result, _goal) actual = query fail_t :check_last_query_fails, actual: actual unless result[:query][:status].failed? end
check_last_query_matches(_result, goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 15 def check_last_query_matches(_result, goal) regexp = goal[:regexp] actual = query fail_t :check_last_query_matches, regexp: regexp.inspect, actual: actual unless query.match?(regexp) end
check_last_query_output_includes(result, goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 44 def check_last_query_output_includes(result, goal) compare_last_query_by(:check_last_query_output_includes, result, goal) { |expected, actual| actual.include? expected } end
check_last_query_output_like(result, goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 48 def check_last_query_output_like(result, goal) compare_last_query_by(:check_last_query_output_like, result, goal) { |expected, actual| normalize(expected) == normalize(actual) } end
check_last_query_outputs(result, goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 40 def check_last_query_outputs(result, goal) compare_last_query_by(:check_last_query_outputs, result, goal) { |expected, actual| expected == actual } end
check_last_query_passes(result, _goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 58 def check_last_query_passes(result, _goal) actual = query fail_t :check_last_query_passes, actual: actual unless result[:query][:status].passed? end
check_queries_equal(result, goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 26 def check_queries_equal(result, goal) matches = goal[:values].map do |value| queries.find { |query| query == value } end.compact fail_queries_t :check_queries_equal, queries, matches, goal[:values] end
check_queries_match(result, goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 33 def check_queries_match(result, goal) matches = goal[:regexps].map do |regexp| queries.find { |query| query.match? regexp } end.compact fail_queries_t :check_queries_match, queries, matches, goal[:regexps] end
check_query_fails(result, goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 67 def check_query_fails(result, goal) fail_t :check_query_fails, query: goal[:query] unless result[:status].failed? end
check_query_outputs(result, goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 71 def check_query_outputs(result, goal) expected = goal[:output] actual = result[:goal] fail_t :check_query_outputs, query: goal[:query], expected: expected, actual: actual unless expected == actual end
check_query_passes(result, goal)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 63 def check_query_passes(result, goal) fail_t :check_query_passes, query: goal[:query] unless result[:status].passed? end
compare_last_query_by(sym, result, goal, &condition)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 52 def compare_last_query_by(sym, result, goal, &condition) expected = goal[:output] actual = result[:query][:result] fail_t sym, expected: expected, actual: actual unless condition.call expected, actual end
fail_t(sym, **kwargs)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 81 def fail_t(sym, **kwargs) fail I18n.t(locale(sym), **kwargs) end
locale(sym)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 85 def locale(sym) 'mumukit.interactive.' + sym.to_s end
normalize(a_string)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 89 def normalize(a_string) a_string.delete(" \t\r\n").downcase end
render_success_output(_value)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 77 def render_success_output(_value) I18n.t locale(:goal_passed) end
Private Instance Methods
fail_queries_t(key, queries, matches, expectations)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 99 def fail_queries_t(key, queries, matches, expectations) fail_t key, all: join_queries(queries), matches: join_queries(matches) unless matches.size == expectations.size end
join_queries(queries)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 95 def join_queries(queries) queries.map { |it| "`#{it}`" }.join(", ").presence || '**∅**' end
queries()
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 122 def queries @queries ||= [query] + cookie end
query()
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 103 def query strip @request.query.to_s end
strip(string)
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 111 def strip(string) case strip_mode when :strict then string when :right_only then string.rstrip when :right_and_internal then string.rstrip.squeeze(' ') when :left_and_right then string.strip when :left_right_and_internal then string.strip.squeeze(' ') else raise "Unsupported strip mode #{@strip_mode}" end end
strip_mode()
click to toggle source
# File lib/mumukit/metatest/interactive_checker.rb, line 126 def strip_mode @request.dig(:settings, :interactive_strip_mode) || @strip_mode end