Class: Hegel::Generators::IntegerGenerator
- Inherits:
-
Hegel::Generator
- Object
- Hegel::Generator
- Hegel::Generators::IntegerGenerator
- Defined in:
- lib/hegel/generators.rb,
sig/hegel.rbs
Overview
Hegel::Syntax::Methods#integers. An integer in [min_value, max_value], defaulting to the full 64-bit range when either bound is omitted.
Constant Summary collapse
- INT64_MIN =
hegel_generate_integer takes int64_t bounds; a bound outside this range dispatches to hegel_generate_integer_big instead (see #do_draw), so integers()'s own caller-facing surface does not change depending on which native call ends up making the draw -- only the dispatch threshold these two constants mark.
-(2**63)
- INT64_MAX =
(2**63) - 1
Instance Method Summary collapse
- #do_draw(tc) ⇒ Integer
-
#initialize(min_value:, max_value:) ⇒ IntegerGenerator
constructor
A new instance of IntegerGenerator.
Methods inherited from Hegel::Generator
Constructor Details
#initialize(min_value:, max_value:) ⇒ IntegerGenerator
Returns a new instance of IntegerGenerator.
47 48 49 50 51 |
# File 'lib/hegel/generators.rb', line 47 def initialize(min_value:, max_value:) super() @min_value = min_value @max_value = max_value end |
Instance Method Details
#do_draw(tc) ⇒ Integer
53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/hegel/generators.rb', line 53 def do_draw(tc) min_value = @min_value || INT64_MIN max_value = @max_value || INT64_MAX raise Hegel::Error, "integers: max_value < min_value" if max_value < min_value if min_value.between?(INT64_MIN, INT64_MAX) && max_value.between?(INT64_MIN, INT64_MAX) tc.generate_integer(min_value, max_value) else tc.generate_integer_big(min_value, max_value) end end |