class HashesEqual::GenericDiffDisplayer
Attributes
actual[R]
diff[R]
expected[R]
Public Class Methods
new(expected:, actual:)
click to toggle source
# File lib/hashes_equal/generic_diff_displayer.rb, line 13 def initialize(expected:, actual:) @expected = expected @actual = actual assert_send :expected assert_send :actual check_args end
Public Instance Methods
call()
click to toggle source
# File lib/hashes_equal/generic_diff_displayer.rb, line 21 def call compute_diff ANSI.white do formatted_diff end end
Private Instance Methods
check_args()
click to toggle source
# File lib/hashes_equal/generic_diff_displayer.rb, line 32 def check_args # Add specific checks if needed end
compute_diff()
click to toggle source
# File lib/hashes_equal/generic_diff_displayer.rb, line 36 def compute_diff @diff = perform_diff_computation end
format_element(diff_element)
click to toggle source
# File lib/hashes_equal/generic_diff_displayer.rb, line 50 def format_element(diff_element) # exp_val is act_val in case of "+" type, key, exp_val, act_val = diff_element return missing_value_message(key, exp_val) if type == '-' return spurious_value_message(key, exp_val) if type == '+' return value_disagreement_message(key, exp_val, act_val) if type == '~' raise UnprocessableHashdiff, diff_element end
formatted_diff()
click to toggle source
# File lib/hashes_equal/generic_diff_displayer.rb, line 44 def formatted_diff "\n" + diff.map do |diff_element| format_element diff_element end.join("\n") end
missing_value_message(key, exp_val)
click to toggle source
# File lib/hashes_equal/generic_diff_displayer.rb, line 60 def missing_value_message(key, exp_val) [ "actual value for #{ANSI.red { key }} is missing, expected was", ANSI.green { exp_val.inspect } ].join("\n\t") end
perform_diff_computation()
click to toggle source
# File lib/hashes_equal/generic_diff_displayer.rb, line 40 def perform_diff_computation Hashdiff.diff(expected, actual) end
spurious_value_message(key, exp_val)
click to toggle source
# File lib/hashes_equal/generic_diff_displayer.rb, line 67 def spurious_value_message(key, exp_val) [ "spurious value #{ANSI.red { exp_val.inspect }}", "for #{key} was not expected" ].join(' ') end
value_disagreement_message(key, exp_val, act_val)
click to toggle source
# File lib/hashes_equal/generic_diff_displayer.rb, line 74 def value_disagreement_message(key, exp_val, act_val) [ "values for #{key} differ", "expected: #{ANSI.green { exp_val.inspect }}", "actual: #{ANSI.red { act_val.inspect }}" ].join("\n\t") end