NAME
    Data::Random::Structure - Generate random data structures

VERSION
    version 0.01

SYNOPSIS
      use Test::More;
      use Data::Random::Structure;
      use JSON::PP;

      my $g = Data::Random::Structure->new(
            max_depth => 2,
            max_elements => 5,
      );

      my $ref = $g->generate();

      diag explain $ref; 

      my $json = JSON::PP->new;

      print $json->pretty->encode($ref);

      ok(1);

      done_testing();

OVERVIEW
    This is a library to create random Perl data structures, mostly as a
    means to create input for benchmarking and testing various serialization
    libraries.

    It uses grotty 'classic' Perl 5 OO mostly because I think having Moo as
    a dependency for a testing module is pretty gross. On the other hand,
    original flavor Perl OO is pretty gross.

ATTRIBUTES
  max_depth
    The maximum depth to embed data structures

  max_elements
    The maximum number of elements (array items or hash key/value pairs) per
    data structure.

METHODS
  new
    Constructor. May optionally pass:

    *   max_depth

    *   max_elements

    If not set, these default to 3 and 6 respectively. Throws an exception
    if the argument list is not a multiple of 2.

  generate
    Recursively generate a data structure using hashes and arrays. The data
    structure will not contain more than "max_depth" nested data structures.

  generate_scalar
    Randomly generates one of the following scalar values:

    *   float

    *   integer (between 0 and 999_999)

    *   string (see Data::Random "rand_chars")

    *   bool (value based 50/50 coin toss)

  generate_array
    Generate an arrayref and populate it with no more than "max_element"
    items. May be empty.

  generate_hash
    Generate a hashref and populate it with no more than "max_element"
    key/value pairs. May be empty.

AUTHOR
    Mark Allen <mrallen1@yahoo.com>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2014 by Mark Allen.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

