Class: Kumi::Core::Domain::RangeAnalyzer
- Inherits:
-
Object
- Object
- Kumi::Core::Domain::RangeAnalyzer
- Defined in:
- lib/kumi/core/domain/range_analyzer.rb
Class Method Summary collapse
- .analyze(range) ⇒ Object
- .calculate_size(range) ⇒ Object
- .generate_invalid_samples(range) ⇒ Object
- .generate_samples(range) ⇒ Object
Class Method Details
.analyze(range) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/kumi/core/domain/range_analyzer.rb', line 7 def self.analyze(range) { type: :range, min: range.begin, max: range.end, exclusive_end: range.exclude_end?, size: calculate_size(range), sample_values: generate_samples(range), boundary_values: [range.begin, range.end], invalid_samples: generate_invalid_samples(range) } end |
.calculate_size(range) ⇒ Object
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/kumi/core/domain/range_analyzer.rb', line 20 def self.calculate_size(range) return :infinite if range.begin.nil? || range.end.nil? return :large if range.end - range.begin > 1000 if integer_range?(range) range.exclude_end? ? range.end - range.begin : range.end - range.begin + 1 else :continuous end end |
.generate_invalid_samples(range) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/kumi/core/domain/range_analyzer.rb', line 40 def self.generate_invalid_samples(range) invalid = [] invalid << calculate_before_start(range) if range.begin.is_a?(Numeric) invalid << calculate_after_end(range) if range.end.is_a?(Numeric) invalid end |
.generate_samples(range) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/kumi/core/domain/range_analyzer.rb', line 31 def self.generate_samples(range) samples = [range.begin] samples << calculate_midpoint(range) if numeric_range?(range) samples << calculate_endpoint(range) samples.uniq end |