bsielski Value Generator

This gem can:

  • create random int, float, string, and symbols
  • create a random value of random type
  • create an array of random values
  • create a hash of random key and values

Why to use it?

Who knows. I have made it when I was creating a code with functional style and was working mainly with hashes as a data containers and I wanted some configurable generator of random hashes for my unit tests.

Installation

Add this line to your application's Gemfile:

gem 'bsielski_value_generator'

And then execute:

$ bundle

Or install it yourself as:

$ gem install bsielski_value_generator

Usage

Reqiure proper class.

require "v_gen/int_gen"

Use it.

random_int = VGen::IntGen.new.call

# or

int_gen = VGen::IntGen.new
random_int = int_gen.call

All generators have just one public method: #call.

API

Class VGen::IntGen

require "v_gen/int_gen"

Constructor

VGen::IntGen.new # => new_generator

Optionally paramaters:

  • range - is the range from which the number is randomly generated. Default is (0..10).

Call

VGen::IntGen.new.call # => new_int

Class VGen::FloatGen

require "v_gen/float_gen"

Constructor

VGen::FloatGen.new # => new_generator

Optionally paramaters:

  • range - is the range from which the number is randomly generated. Default is (-10..10).

Call

VGen::FloatGen.new.call # => new_float

Class VGen::LetterGen

require "v_gen/letter_gen"

Constructor

VGen::LetterGen.new # => new_generator

Optionally paramaters:

  • only: - an array (or range) of objects from which one randomly chosen is returned. Default is ("A".."Z").to_a + ("a".."z").to_a.
  • except: - an array (or range) that is substracted from only: array (or range). Default is [].

Call

VGen::LetterGen.new.call # => new_letter

Class VGen::LowerLetterGen

require "v_gen/lower_letter_gen"

Constructor

VGen::LowerLetterGen.new # => new_generator

Optionally paramaters:

  • only: - an array (or range) of objects from which one randomly chosen is returned. Default is ("A".."Z") (those letters are downcased anyway by the class).
  • except: - an array (or range) that is substracted from only: array (or range). Default is [].

Call

VGen::LowerLetterGen.new.call # => new_lower_letter

VGen::UpperLetterGen

require "v_gen/upper_letter_gen"

Constructor

VGen::UpperGen.new # => new_generator

Optionally paramaters:

  • only: - an array (or range) of objects from which one randomly chosen is returned. Default is ("A".."Z").
  • except: - an array (or range) that is substracted from only: array (or range). Default is [].

Call

VGen::UpperLetterGen.new.call # => new_upper_letter

Class VGen::TypicalLetterGen

This generator returns random lower letters with with taking into account the frequency of occurrence in English language.

require "v_gen/typical_letter_gen"

Constructor

VGen::TypicalLetterGen.new # => new_generator

Call

VGen::TypicalLetterGen.new.call # => new_letter

Class VGen::CharGen

require "v_gen/char_gen"

Constructor

VGen::CharGen.new # => new_generator

Optionally paramaters:

  • only: - an array (or range) of objects from which one randomly chosen is returned. Default is: [ "`", "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "_", "+", "=", "[", "{", "]", "}", "\\", "|", ";", ":", "'", "\"", "<", ",", ">", ".", "?", "/", " " ] + ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
  • except: - an array (or range) that is substracted from only: array (or range). Default is [].

Call

VGen::CharGen.new.call # => new_char

Class VGen::StringGen

This generator returns random strings.

require "v_gen/string_gen"

Constructor

VGen::StringGen.new # => new_generator

Optionally paramaters:

  • char_gen: - is a generator used to creating a characters for strings. Default is VGen::LetterGen.new.
  • length: - possible string length as a range (for random length) or an int (for fixed length).
  • except: - strings forbidden to generate. Default is [].

Call

VGen::StringGen.new.call # => new_string

Class VGen::VarWordGen

This generator returns random lowercased strings sometimes with underscore in the middle of the string.

require "v_gen/var_word_gen"

Constructor

VGen::VarWordGen.new # => new_generator

Optionally paramaters:

  • letter_gen: - is a generator used to creating a letters for words. Default is VGen::TypicalLetterGen.new.
  • length: - possible word length as a range (for random length) or an int (for fixed length).
  • except: - words forbidden to generate. Default is [].

Call

VGen::VarWordGen.new.call # => new_word

Class VGen::KeywordGen

This generator returns random lowercased symbols sometimes with underscore in the middle of the string.

require "v_gen/keyword_gen"

Constructor

VGen::KeywordGen.new # => new_generator

Optionally paramaters:

  • word_gen: - is a generator used to creating a string, which is converted into a symbos. Default is VGen::VarWordGen.new.

Call

VGen::KeywordGen.new.call # => new_keyword

Class VGen::ArrayGen

This generator returns an array of random values.

require "v_gen/array_gen"

Constructor

VGen::ArrayGen.new # => new_generator

Optionally paramaters:

  • min: - is a minimum size of a generated arrays. Default is 4.
  • max: - is a maximum size of a generated arrays. Default is 9.
  • length: - possible array length as a range (for random length) or an int (for fixed length).
  • gens: - are generators used randomly to generate values. Default is [ proc {Random.new.rand} ].
  • uniq: - if truthy then generated arrays have unique elements. Default is false.

Call

VGen::ArrayGen.new.call # => new_array

Class VGen::HashGen

This generator returns a hash of random keys and values.

require "v_gen/hash_gen"

Constructor

VGen::HashGen.new # => new_generator

Optionally paramaters:

  • min: - is a minimum size of a generated hashes. Default is 4.
  • max: - is a maximum size of a generated hashes. Default is 8.
  • length: - possible hash length as a range (for random length) or an int (for fixed length).
  • key_gens: - are generators used randomly to generate keys. Default is [ proc {Random.new.rand(0..100)} ].
  • value_gens: - are generators used randomly to generate values. Default is [ proc {Random.new.rand} ].
  • with: - is a hash that must be included in the generated hash. In other words it is a obligatory set of key and values pairs. Default is {}.

Call

VGen::HashGen.new.call # => new_array

Class VGen::WhateverGen

This generator returns one value.

require "bsielski_v_gen/int_gen"

Constructor

VGen::WhateverGen.new # => new_generator

Optionally paramaters:

  • gens: - are generators used randomly to generate values. Default is [ proc {Random.new.rand} ].

Call

VGen::WhateverGen.new.call # => new_array

Examples

Check "examples" folder.

To do features

  • Some easy to use generators with default parameters

License

The gem is available as open source under the terms of the MIT License.