Class: Hegel::Generators::BinaryGenerator

Inherits:
Hegel::Generator show all
Defined in:
lib/hegel/generators.rb,
sig/hegel.rbs

Overview

Hegel::Syntax::Methods#binary. A byte String of [min_size, max_size] bytes, unbounded above by default.

Instance Method Summary collapse

Methods inherited from Hegel::Generator

#filter, #map

Constructor Details

#initialize(min_size:, max_size:) ⇒ BinaryGenerator

Returns a new instance of BinaryGenerator.

Parameters:

  • min_size: (Integer)
  • max_size: (Integer, nil)


429
430
431
432
433
# File 'lib/hegel/generators.rb', line 429

def initialize(min_size:, max_size:)
  super()
  @min_size = min_size
  @max_size = max_size
end

Instance Method Details

#do_draw(tc) ⇒ String

Parameters:

  • tc (Object)

Returns:

  • (String)

Raises:



435
436
437
438
439
440
441
442
443
444
# File 'lib/hegel/generators.rb', line 435

def do_draw(tc)
  max_size = @max_size || LibHegel::HEGEL_COLLECTION_MAX_SIZE_UNBOUNDED
  raise Hegel::Error, "binary: max_size < min_size" if max_size < @min_size

  # hegel_generate_bytes already returns an Encoding::BINARY String
  # (see LibHegel::Real#generate_bytes); force_encoding here would
  # be redundant at best, and wrong the moment a caller's own bytes
  # happened to be valid UTF-8 and got silently relabelled as text.
  tc.generate_bytes(@min_size, max_size)
end