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, #check, #check_assertion, #check_assertions, #error, #fail, #postconditions_for, #render_error_output

Constructor Details

#initialize(request) ⇒ InteractiveChecker

Returns a new instance of InteractiveChecker.



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

def initialize(request)
  @request = request
end

Instance Method Details

#check_last_query_equals(_result, goal) ⇒ Object



8
9
10
11
12
# File 'lib/mumukit/metatest/interactive_checker.rb', line 8

def check_last_query_equals(_result, goal)
  expected = goal[:value]
  actual = @request.query.strip
  fail_t :check_last_query_equals, expected: expected, actual: actual unless expected == actual
end

#check_last_query_fails(result, _goal) ⇒ Object



19
20
21
# File 'lib/mumukit/metatest/interactive_checker.rb', line 19

def check_last_query_fails(result, _goal)
  fail_t :check_last_query_fails unless result[:query][:status].failed?
end

#check_last_query_matches(_result, goal) ⇒ Object



14
15
16
17
# File 'lib/mumukit/metatest/interactive_checker.rb', line 14

def check_last_query_matches(_result, goal)
  regex = goal[:regexp]
  fail_t :check_last_query_matches, regex: regex.inspect unless regex.matches? @request.query
end

#check_last_query_output_includes(result, goal) ⇒ Object



27
28
29
# File 'lib/mumukit/metatest/interactive_checker.rb', line 27

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



31
32
33
# File 'lib/mumukit/metatest/interactive_checker.rb', line 31

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



23
24
25
# File 'lib/mumukit/metatest/interactive_checker.rb', line 23

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



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

def check_last_query_passes(result, _goal)
  fail_t :check_last_query_passes unless result[:query][:status].passed?
end

#check_query_fails(result, goal) ⇒ Object



49
50
51
# File 'lib/mumukit/metatest/interactive_checker.rb', line 49

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



53
54
55
56
57
# File 'lib/mumukit/metatest/interactive_checker.rb', line 53

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



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

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



35
36
37
38
39
# File 'lib/mumukit/metatest/interactive_checker.rb', line 35

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, *args) ⇒ Object



63
64
65
# File 'lib/mumukit/metatest/interactive_checker.rb', line 63

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

#locale(sym) ⇒ Object



67
68
69
# File 'lib/mumukit/metatest/interactive_checker.rb', line 67

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

#normalize(a_string) ⇒ Object



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

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

#render_success_output(_value) ⇒ Object



59
60
61
# File 'lib/mumukit/metatest/interactive_checker.rb', line 59

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