class Cucumber::Filters::Randomizer

Batches up all test cases, randomizes them, and then sends them on

Attributes

seed[R]

Public Class Methods

new(seed, receiver = nil) click to toggle source
# File lib/cucumber/filters/randomizer.rb, line 9
def initialize(seed, receiver = nil)
  @receiver = receiver
  @test_cases = []
  @seed = seed
end

Public Instance Methods

done() click to toggle source
# File lib/cucumber/filters/randomizer.rb, line 20
def done
  shuffled_test_cases.each do |test_case|
    test_case.describe_to(@receiver)
  end
  @receiver.done
  self
end
test_case(test_case) click to toggle source
# File lib/cucumber/filters/randomizer.rb, line 15
def test_case(test_case)
  @test_cases << test_case
  self
end
with_receiver(receiver) click to toggle source
# File lib/cucumber/filters/randomizer.rb, line 28
def with_receiver(receiver)
  self.class.new(@seed, receiver)
end

Private Instance Methods

shuffled_test_cases() click to toggle source
# File lib/cucumber/filters/randomizer.rb, line 34
def shuffled_test_cases
  digester = Digest::SHA2.new(256)
  @test_cases.map.with_index
             .sort_by { |_, index| digester.digest((@seed + index).to_s) }
             .map { |test_case, _| test_case }
end