1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
# frozen_string_literal: true
require_relative 'support/assert_not_english'
require_relative 'support/assert_email_regex'
require_relative 'support/deprecation'
require 'minitest/autorun'
require 'test/unit'
require 'rubygems'
require 'timecop'
require 'yaml'
require 'pathname'
YAML::ENGINE.yamler = 'psych' if defined? YAML::ENGINE
require 'faker'
# configure I18n
relative_locales_path = File.expand_path(File.dirname(__FILE__) + '../lib/locales')
system_locales_path = File.expand_path(File.join(File.dirname(`gem which faker`),'locales'))
locales_path = Pathname.new(relative_locales_path).directory? ? relative_locales_path : system_locales_path
$locales_path = locales_path
# deterministically_verify executes the test provided in the block successive
# times with the same deterministic_random seed.
# @param subject_proc [Proc] a proc object that returns the subject under test
# when called.
# @param depth [Integer] the depth of deterministic comparisons to run; the default value is 2.
# @param seed [Integer] A random number seed; Used to override the default value which is 42.
#
# @example
# deterministically_verify ->{ @tester.username('bo peep') } do |subject|
# assert subject.match(/(bo(_|\.)peep|peep(_|\.)bo)/)
# end
#
def deterministically_verify(subject_proc, depth: 2, seed: 42)
results = depth.times.map do
Faker::Config.stub :random, Random.new(seed) do
yield subject_proc.call.freeze
end
end
results.combination(2) { |(first, second)| assert_equal first, second }
end
|