Class: Synthra::Types::JsonArray

Inherits:
Base
  • Object
show all
Defined in:
lib/synthra/types/json_array.rb

Overview

JSON array type generator (stub implementation)

Instance Method Summary collapse

Instance Method Details

#generate_edge(rng, context, args) ⇒ Object



21
22
23
# File 'lib/synthra/types/json_array.rb', line 21

def generate_edge(rng, context, args)
  rng.sample([[], [{}], [{}, {}]])
end

#generate_from_schema(rng, context, schema_name, count) ⇒ Object (private)



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/synthra/types/json_array.rb', line 31

def generate_from_schema(rng, context, schema_name, count)
  registry = context.instance_variable_get(:@registry) if context
  return [] unless registry
  
  schema = registry.schema(schema_name)
  return [] unless schema
  
  # Generate a seed from the rng to get consistent results
  seed = rng.int(0, 2_147_483_647)
  Array.new(count) { |i| schema.generate(seed: seed + i, registry: registry) }
rescue StandardError
  []
end

#generate_from_template(rng, context, template, count) ⇒ Object (private)



45
46
47
# File 'lib/synthra/types/json_array.rb', line 45

def generate_from_template(rng, context, template, count)
  Array.new(count) { template.dup }
end

#generate_invalid(rng, context, args) ⇒ Object



25
26
27
# File 'lib/synthra/types/json_array.rb', line 25

def generate_invalid(rng, context, args)
  rng.sample([nil, "not-an-array", 123, {}])
end

#generate_random(rng, context, args) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/synthra/types/json_array.rb', line 7

def generate_random(rng, context, args)
  count = args[:count] || 1
  schema = args[:schema]
  template = args[:template]
  
  if schema
    generate_from_schema(rng, context, schema, count)
  elsif template
    generate_from_template(rng, context, template, count)
  else
    Array.new(count) { {} }
  end
end