Sha256: b5bf16ecb41a33d1de56d8def1d9560db3e4aa5265d775655f6c8fbce5b84905

Contents?: true

Size: 978 Bytes

Versions: 18

Compression:

Stored size: 978 Bytes

Contents

module RSpec
  module Core
    module Bisect
      # Enumerates each subset of the given list of ids that is half the
      # size of the total list, so that hopefully we can discard half the
      # list each repeatedly in order to our minimal repro case.
      # @private
      class SubsetEnumerator
        include Enumerable

        def initialize(ids)
          @ids = ids
        end

        def subset_size
          @subset_size ||= (@ids.size / 2.0).ceil
        end

        def each
          yielded     = Set.new
          slice_size  = subset_size
          combo_count = 1

          while slice_size > 0
            @ids.each_slice(slice_size).to_a.combination(combo_count) do |combos|
              subset = combos.flatten
              next if yielded.include?(subset)
              yield subset
              yielded << subset
            end

            slice_size  /= 2
            combo_count *= 2
          end
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 9 rubygems

Version Path
swift-pyrite-0.1.1 vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
swift-pyrite-0.1.0 vendor/bundle/ruby/2.0.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
mastermind_adeybee-0.1.4 vendor/bundle/ruby/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
mastermind_adeybee-0.1.3 vendor/bundle/ruby/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
mastermind_adeybee-0.1.2 vendor/bundle/ruby/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
mastermind_adeybee-0.1.1 vendor/bundle/ruby/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
sublimetheme-1.0.1 path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
vagrant-cloudstack-1.2.0 vendor/bundle/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
sublimetheme-1.0.0 path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
geminfo-0.1.0 path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/rspec-core-3.3.1/lib/rspec/core/bisect/subset_enumerator.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/rspec-core-3.3.1/lib/rspec/core/bisect/subset_enumerator.rb
scoot-0.0.4 .bundle/gems/ruby/2.2.0/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb
rspec-core-3.3.2 lib/rspec/core/bisect/subset_enumerator.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/rspec-core-3.3.1/lib/rspec/core/bisect/subset_enumerator.rb
rspec-core-3.3.1 lib/rspec/core/bisect/subset_enumerator.rb
rspec-core-3.3.0 lib/rspec/core/bisect/subset_enumerator.rb