Class: Mumukit::Metatest::InteractiveChecker

Inherits:
Checker
  • Object
show all
Defined in:
lib/mumukit/metatest/interactive_checker.rb

Instance Method Summary collapse

Methods inherited from Checker

#abort, #build_error_output, #build_failed_test_result, #build_passed_test_result, #build_success_output, #check, #check_assertion, #check_assertions, #error, #fail, #postconditions_for, #render_error_output

Constructor Details

#initialize(request, strip_mode: :left_and_right) ⇒ InteractiveChecker

Returns a new instance of InteractiveChecker.



4
5
6
7
# File 'lib/mumukit/metatest/interactive_checker.rb', line 4

def initialize(request, strip_mode: :left_and_right)
  @request = request
  @strip_mode = strip_mode
end

Instance Method Details

#check_last_query_equals(_result, goal) ⇒ Object



9
10
11
12
13
# 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) ⇒ Object



21
22
23
24
# 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) ⇒ Object



15
16
17
18
19
# 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) ⇒ Object



44
45
46
# 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) ⇒ Object



48
49
50
# 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) ⇒ Object



40
41
42
# 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) ⇒ Object



58
59
60
61
# 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) ⇒ Object



26
27
28
29
30
31
# 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) ⇒ Object



33
34
35
36
37
38
# 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) ⇒ Object



67
68
69
# 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) ⇒ Object



71
72
73
74
75
# 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) ⇒ Object



63
64
65
# 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) ⇒ Object



52
53
54
55
56
# 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) ⇒ Object



81
82
83
# File 'lib/mumukit/metatest/interactive_checker.rb', line 81

def fail_t(sym, **kwargs)
  fail I18n.t(locale(sym), **kwargs)
end

#locale(sym) ⇒ Object



85
86
87
# File 'lib/mumukit/metatest/interactive_checker.rb', line 85

def locale(sym)
  'mumukit.interactive.' + sym.to_s
end

#normalize(a_string) ⇒ Object



89
90
91
# 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) ⇒ Object



77
78
79
# File 'lib/mumukit/metatest/interactive_checker.rb', line 77

def render_success_output(_value)
  I18n.t locale(:goal_passed)
end