lib/assert/factory.rb in assert-2.16.4 vs lib/assert/factory.rb in assert-2.16.5

- old
+ new

@@ -1,163 +1,11 @@ -require 'date' -require 'time' +require 'much-factory' module Assert module Factory - extend self - - def integer(max = nil) - self.type_cast(Random.integer(max), :integer) - end - - def float(max = nil) - self.type_cast(Random.float(max), :float) - end - - DAYS_IN_A_YEAR = 365 - SECONDS_IN_DAY = 24 * 60 * 60 - - def date - @date ||= self.type_cast(Random.date_string, :date) - @date + Random.integer(DAYS_IN_A_YEAR) - end - - def time - @time ||= self.type_cast(Random.time_string, :time) - @time + (Random.float(DAYS_IN_A_YEAR) * SECONDS_IN_DAY).to_i - end - - def datetime - @datetime ||= self.type_cast(Random.datetime_string, :datetime) - @datetime + (Random.float(DAYS_IN_A_YEAR) * SECONDS_IN_DAY).to_i - end - - def string(length = nil) - self.type_cast(Random.string(length || 10), :string) - end - - def text(length = nil) - self.type_cast(Random.string(length || 20), :string) - end - - def slug(length = nil) - self.type_cast(Random.string(length || 5), :string) - end - - def hex(length = nil) - self.type_cast(Random.hex_string(length), :string) - end - - def file_name(length = nil) - self.type_cast(Random.file_name_string(length), :string) - end - - def dir_path(length = nil) - self.type_cast(Random.dir_path_string(length), :string) - end - - def file_path - self.type_cast(Random.file_path_string, :string) - end - - alias_method :path, :dir_path - - def url(host = nil, length = nil) - self.type_cast(Random.url_string(host, length), :string) - end - - def email(domain = nil, length = nil) - self.type_cast(Random.email_string(domain, length), :string) - end - - def binary - self.type_cast(Random.binary, :binary) - end - - def boolean - self.type_cast(Random.integer.even?, :boolean) - end - - def type_cast(value, type) - self.type_converter.send(type, value) - end - - def type_converter; TypeConverter; end - - module TypeConverter - def self.string(input); input.to_s; end - def self.integer(input); input.to_i; end - def self.float(input); input.to_f; end - def self.datetime(input); DateTime.parse(input.to_s); end - def self.time(input); Time.parse(input.to_s); end - def self.date(input); Date.parse(input.to_s); end - def self.boolean(input); !!input; end - def self.binary(input); input; end - end - - module Random - - # rand given a max int value returns integers between 0 and max-1 - def self.integer(max = nil) - rand(max || 32_766) + 1 - end - - # `rand` with no args gives a float between 0 and 1 - def self.float(max = nil) - (max || 100).to_f * rand - end - - def self.date_string - Time.now.strftime("%Y-%m-%d") - end - - def self.datetime_string - Time.now.strftime("%Y-%m-%d %H:%M:%S") - end - - def self.time_string - Time.now.strftime("%H:%M:%S") - end - - DICTIONARY = [*'a'..'z'].freeze - def self.string(length = nil) - [*0..((length || 10) - 1)].map{ |n| DICTIONARY[rand(DICTIONARY.size)] }.join - end - - def self.hex_string(length = nil) - length ||= 10 - self.integer(("f" * length).hex - 1).to_s(16).rjust(length, '0') - end - - def self.file_name_string(length = nil) - length ||= 6 - "#{self.string(length)}.#{self.string(3)}" - end - - def self.dir_path_string(length = nil) - length ||= 12 - File.join(*self.string(length).scan(/.{1,4}/)) - end - - def self.file_path_string - File.join(self.dir_path_string, self.file_name_string) - end - - def self.url_string(host = nil, length = nil) - File.join(host.to_s, self.dir_path_string(length)) - end - - def self.email_string(domain = nil, length = nil) - domain ||= "#{self.string(5)}.com" - "#{self.string(length)}@#{domain}" - end - - def self.binary - [ self.integer(10000) ].pack('N*') - end - - end + extend MuchFactory + include MuchFactory end end