class RSpec::Matchers::BuiltIn::All
Experimental RBS support (using type sampling data from the type_fusion
project).
# sig/rspec/matchers/built_in/all.rbs class RSpec::Matchers::BuiltIn::All < RSpec::Matchers::BuiltIn::BaseMatcher def iterable?: () -> true end
Not intended to be instantiated directly.
Provides the implementation for ‘all`.
@api private
def add_new_line_if_needed(message)
def add_new_line_if_needed(message) message.start_with?("\n") ? message : "\n#{message}" end
def description
-
(String)
-
Other tags:
- Api: - private
def description improve_hash_formatting "all #{description_of matcher}" end
def does_not_match?(_actual)
- Private: -
def does_not_match?(_actual) raise NotImplementedError, '`expect().not_to all( matcher )` is not supported.' end
def failure_message
-
(String)
-
Other tags:
- Api: - private
def failure_message unless iterable? return "#{improve_hash_formatting(super)}, but was not iterable" end all_messages = [improve_hash_formatting(super)] failed_objects.each do |index, matcher_failure_message| all_messages << failure_message_for_item(index, matcher_failure_message) end all_messages.join("\n\n") end
def failure_message_for_item(index, failure_message)
def failure_message_for_item(index, failure_message) failure_message = indent_multiline_message(add_new_line_if_needed(failure_message)) indent_multiline_message("object at index #{index} failed to match:#{failure_message}") end
def indent_multiline_message(message)
def indent_multiline_message(message) message = message.sub(/\n+\z/, '') message.lines.map do |line| line =~ /\S/ ? ' ' + line : line end.join end
def index_failed_objects
def index_failed_objects actual.each_with_index do |actual_item, index| cloned_matcher = matcher.clone matches = cloned_matcher.matches?(actual_item) failed_objects[index] = cloned_matcher.failure_message unless matches end end
def initialize(matcher)
def initialize(matcher) @matcher = matcher @failed_objects = {} end
def initialize_copy(other)
def initialize_copy(other) @matcher = @matcher.clone @failed_objects = @failed_objects.clone super end
def iterable?
Experimental RBS support (using type sampling data from the type_fusion
project).
def iterable?: () -> true
This signature was generated using 1 sample from 1 application.
def iterable? @actual.respond_to?(:each_with_index) end
def match(_expected, _actual)
def match(_expected, _actual) return false unless iterable? index_failed_objects failed_objects.empty? end