Module: Synthra::Generator::Modes

Defined in:
lib/synthra/generator/modes.rb

Overview

Generation modes for different types of fake data

Defined Under Namespace

Classes: BaseMode, EdgeMode, HostileMode, InvalidMode, MixedMode, RandomMode

Constant Summary collapse

EDGE_STRINGS =

Curated edge case strings

[
  "",                           # empty
  " ",                          # single space
  "   ",                        # multiple spaces
  "\t\n\r",                     # whitespace chars
  "🎉💀🔥👻",                    # emojis
  "مرحبا",                       # RTL Arabic
  "日本語",                       # Japanese
  "SELECT * FROM users;",       # SQL injection attempt
  '{"key": "value"}',           # JSON in string
  "<script>alert(1)</script>",  # XSS attempt
  "a" * 1000,                   # very long
  "NULL",                       # string null
  "undefined",                  # string undefined
  "true",                       # string boolean
  "123",                        # string number
  "\x00\x00",                   # null bytes
  "O'Brien",                    # apostrophe
  "a\nb\nc"                     # newlines
].freeze
EDGE_NUMBERS =

Curated edge case numbers

[
  0,
  -1,
  1,
  -2_147_483_648,               # INT_MIN
  2_147_483_647,                # INT_MAX
  9_223_372_036_854_775_807,    # BIGINT_MAX
  Float::MIN,
  Float::MAX
].freeze
EDGE_DATES =

Curated edge case dates

[
  Date.new(1970, 1, 1),         # Unix epoch
  Date.new(2000, 2, 29),        # Leap day
  Date.new(2038, 1, 19),        # Y2038
  Date.new(2020, 1, 1),         # Fixed date for determinism (replaces Date.today)
  Date.new(1, 1, 1),            # Very old
  Date.new(9999, 12, 31)        # Far future
].freeze

Class Method Summary collapse

Class Method Details

.create(mode, rng) ⇒ BaseMode

Factory method to create mode instance

Creates an appropriate mode instance based on the mode symbol.

Examples:

Modes.create(:edge, rng)
# => #<EdgeMode>

Parameters:

  • mode (Symbol)

    mode name (:random, :edge, :invalid, :mixed)

  • rng (Generator::RNG)

    random number generator

Returns:

Raises:

  • (ArgumentError)

    if mode is unknown



430
431
432
433
434
435
436
437
438
439
440
# File 'lib/synthra/generator/modes.rb', line 430

def self.create(mode, rng)
  case mode
  when :random then RandomMode.new(rng)
  when :edge then EdgeMode.new(rng)
  when :invalid then InvalidMode.new(rng)
  when :hostile then HostileMode.new(rng)
  when :mixed then MixedMode.new(rng)
  else
    raise ArgumentError, "Unknown mode: #{mode}"
  end
end