Class: Strict::Interfaces::Conformance

Inherits:
Object
  • Object
show all
Defined in:
lib/strict/interfaces/conformance.rb

Instance Method Summary collapse

Constructor Details

#initialize(interface) ⇒ Conformance

Returns a new instance of Conformance.



6
7
8
9
# File 'lib/strict/interfaces/conformance.rb', line 6

def initialize(interface)
  @interface = interface
  @method_expectations = []
end

Instance Method Details

#compile(verifiable_method) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/strict/interfaces/conformance.rb', line 11

def compile(verifiable_method)
  parameter_names = verifiable_method.parameters.map(&:name).freeze

  method_expectations << MethodExpectation.new(
    name: verifiable_method.name,
    parameter_names: parameter_names,
    expected_parameter_mask: (1 << parameter_names.length) - 1
  )
end

#verify!(receiver) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/strict/interfaces/conformance.rb', line 21

def verify!(receiver)
  errors = errors_for(receiver)
  return unless errors

  missing_methods, invalid_method_definitions = errors
  raise Strict::ImplementationDoesNotConformError.new(
    interface: interface,
    receiver: receiver,
    missing_methods: missing_methods,
    invalid_method_definitions: invalid_method_definitions
  )
end