Class: Mumukit::Metatest::InteractiveChecker
- Inherits:
-
Checker
- Object
- Checker
- Mumukit::Metatest::InteractiveChecker
show all
- Defined in:
- lib/mumukit/metatest/interactive_checker.rb
Instance Method Summary
collapse
-
#check_last_query_equals(_result, goal) ⇒ Object
-
#check_last_query_fails(result, _goal) ⇒ Object
-
#check_last_query_matches(_result, goal) ⇒ Object
-
#check_last_query_output_includes(result, goal) ⇒ Object
-
#check_last_query_output_like(result, goal) ⇒ Object
-
#check_last_query_outputs(result, goal) ⇒ Object
-
#check_last_query_passes(result, _goal) ⇒ Object
-
#check_queries_equal(result, goal) ⇒ Object
-
#check_queries_match(result, goal) ⇒ Object
-
#check_query_fails(result, goal) ⇒ Object
-
#check_query_outputs(result, goal) ⇒ Object
-
#check_query_passes(result, goal) ⇒ Object
-
#compare_last_query_by(sym, result, goal, &condition) ⇒ Object
-
#fail_t(sym, **kwargs) ⇒ Object
-
#initialize(request, strip_mode: :left_and_right) ⇒ InteractiveChecker
constructor
A new instance of InteractiveChecker.
-
#locale(sym) ⇒ Object
-
#normalize(a_string) ⇒ Object
-
#render_success_output(_value) ⇒ Object
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
|