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



42
43
44
# File 'lib/mumukit/metatest/interactive_checker.rb', line 42

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



46
47
48
# File 'lib/mumukit/metatest/interactive_checker.rb', line 46

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



38
39
40
# File 'lib/mumukit/metatest/interactive_checker.rb', line 38

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



56
57
58
59
# File 'lib/mumukit/metatest/interactive_checker.rb', line 56

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
# File 'lib/mumukit/metatest/interactive_checker.rb', line 26

def check_queries_equal(result, goal)
  fail_t :check_queries_equal unless goal[:values].all? do |regexp|
    queries.any? { |query| query == regexp }
  end
end

#check_queries_match(result, goal) ⇒ Object



32
33
34
35
36
# File 'lib/mumukit/metatest/interactive_checker.rb', line 32

def check_queries_match(result, goal)
  fail_t :check_queries_match unless goal[:regexps].all? do |regexp|
    queries.any? { |query| query.match? regexp }
  end
end

#check_query_fails(result, goal) ⇒ Object



65
66
67
# File 'lib/mumukit/metatest/interactive_checker.rb', line 65

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



69
70
71
72
73
# File 'lib/mumukit/metatest/interactive_checker.rb', line 69

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



61
62
63
# File 'lib/mumukit/metatest/interactive_checker.rb', line 61

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



50
51
52
53
54
# File 'lib/mumukit/metatest/interactive_checker.rb', line 50

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



79
80
81
# File 'lib/mumukit/metatest/interactive_checker.rb', line 79

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

#locale(sym) ⇒ Object



83
84
85
# File 'lib/mumukit/metatest/interactive_checker.rb', line 83

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

#normalize(a_string) ⇒ Object



87
88
89
# File 'lib/mumukit/metatest/interactive_checker.rb', line 87

def normalize(a_string)
  a_string.delete(" \t\r\n").downcase
end

#render_success_output(_value) ⇒ Object



75
76
77
# File 'lib/mumukit/metatest/interactive_checker.rb', line 75

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