class Similatron::ComparisonEngine

Attributes

diff_index[R]
diffs_path[R]
given_executable_path[R]

Public Class Methods

new(executable_path: nil, diffs_path:) click to toggle source
# File lib/similatron/comparison_engine.rb, line 3
def initialize(executable_path: nil, diffs_path:)
  @given_executable_path = executable_path
  @diffs_path = diffs_path
end

Public Instance Methods

compare(expected:, actual:) click to toggle source
# File lib/similatron/comparison_engine.rb, line 8
def compare(expected:, actual:)
  increase_diff_index

  command = command(expected, actual, diff_path)

  exec_result = run(command)

  Comparison.new(
    expected: expected,
    actual: actual,
    score: score(exec_result),
    diff: diff(exec_result)
  )
end

Protected Instance Methods

diff_path() click to toggle source
# File lib/similatron/comparison_engine.rb, line 37
def diff_path
  File.join(diffs_path, "diff_#{diff_index}.#{diff_extension}")
end
executable_path() click to toggle source
# File lib/similatron/comparison_engine.rb, line 41
def executable_path
  default_executable_path || given_executable_path
end
increase_diff_index() click to toggle source
# File lib/similatron/comparison_engine.rb, line 32
def increase_diff_index
  @diff_index ||= 0
  @diff_index += 1
end
run(command) click to toggle source
# File lib/similatron/comparison_engine.rb, line 27
def run(command)
  exec_info = Open3.capture3(command)
  Open3Result.new(*exec_info)
end