Class: Testprune::DuplicationDetector

Inherits:
Object
  • Object
show all
Defined in:
lib/testprune/duplication_detector.rb

Instance Method Summary collapse

Constructor Details

#initialize(footprints, overlap_threshold: 0.9, baseline_fraction: nil) ⇒ DuplicationDetector

Returns a new instance of DuplicationDetector.



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/testprune/duplication_detector.rb', line 48

def initialize(footprints, overlap_threshold: 0.9, baseline_fraction: nil)
  @original_footprints = footprints # preserved for SafetyCheck ambient-unit guarantee
  ambient      = Baseline.ambient_units(footprints, baseline_fraction)
  had_coverage = footprints.reject(&:empty?).size
  @footprints  = strip_ambient(footprints, ambient).reject(&:empty?)
  @ambient     = ambient.size
  @setup_only  = had_coverage - @footprints.size # lost all signal to baseline
  @threshold   = overlap_threshold
  @candidates  = []
  @seen        = Set.new # ids already proposed for removal
  @protected   = Set.new # ids chosen as keepers — never propose these
end

Instance Method Details

#callObject



61
62
63
64
65
66
67
68
69
# File 'lib/testprune/duplication_detector.rb', line 61

def call
  detect_identical
  detect_subset
  detect_structural
  detect_overlap
  SafetyCheck.new(@footprints, original_footprints: @original_footprints).apply(@candidates)
  DetectorResult.new(@footprints, @candidates,
                     ambient_units: @ambient, setup_only: @setup_only)
end