Class: Synthra::Generator::Modes::EdgeMode

Inherits:
BaseMode
  • Object
show all
Defined in:
lib/synthra/generator/modes.rb

Overview

Edge mode - curated edge cases

Generates edge case values (empty strings, boundary values, nulls) useful for testing boundary conditions and error handling.

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from Synthra::Generator::Modes::BaseMode

Instance Method Details

#edge_dateDate

Get an edge case date

Returns a curated edge case date from EDGE_DATES.

Returns:

  • (Date)

    edge case date



174
175
176
# File 'lib/synthra/generator/modes.rb', line 174

def edge_date
  EDGE_DATES.sample(random: @rng.instance_variable_get(:@random))
end

#edge_number(range = nil) ⇒ Numeric

Get an edge case number

Returns a curated edge case number from EDGE_NUMBERS, optionally filtered by range.

Parameters:

  • range (Range, nil) (defaults to: nil)

    optional range to filter candidates

Returns:

  • (Numeric)

    edge case number



158
159
160
161
162
163
164
# File 'lib/synthra/generator/modes.rb', line 158

def edge_number(range = nil)
  candidates = EDGE_NUMBERS
  if range
    candidates = candidates.select { |n| range.cover?(n) }
  end
  candidates.empty? ? 0 : candidates.sample(random: @rng.instance_variable_get(:@random))
end

#edge_stringString

Get an edge case string

Returns a curated edge case string from EDGE_STRINGS.

Returns:

  • (String)

    edge case string



144
145
146
# File 'lib/synthra/generator/modes.rb', line 144

def edge_string
  EDGE_STRINGS.sample(random: @rng.instance_variable_get(:@random))
end

#generate(type_instance, args, context = nil) ⇒ Object

Generate an edge case value

Parameters:

  • type_instance (Base)

    type generator instance

  • args (Hash)

    type arguments

Returns:

  • (Object)

    edge case value



131
132
133
134
# File 'lib/synthra/generator/modes.rb', line 131

def generate(type_instance, args, context = nil)
  context ||= Generator::Context.new
  type_instance.generate_edge(@rng, context, args)
end