Method: PropCheck::Generators.instance
- Defined in:
- lib/prop_check/generators.rb
.instance(klass, *args, **kwargs) ⇒ Object
Generates an instance of klass using args and/or kwargs as generators for the arguments that are passed to klass.new
## Example:
Given a class like this:
class User
attr_accessor :name, :age
def initialize(name: , age: )
@name = name
@age = age
end
def inspect
"<User name: #{@name.inspect}, age: #{@age.inspect}>"
end
end
>> user_gen = Generators.instance(User, name: Generators.printable_ascii_string, age: Generators.nonnegative_integer)
>> user_gen.sample(3, rng: Random.new(42)).inspect
=> "[<User name: \"S|.g\", age: 10>, <User name: \"rvjj\", age: 10>, <User name: \"7\\\"5T!w=\", age: 5>]"
861 862 863 864 865 866 867 868 869 870 871 872 873 |
# File 'lib/prop_check/generators.rb', line 861 def instance(klass, *args, **kwargs) tuple(*args).bind do |vals| fixed_hash(**kwargs).map do |kwvals| if kwvals == {} klass.new(*vals) elsif vals == [] klass.new(**kwvals) else klass.new(*vals, **kwvals) end end end end |