Sha256: 810b171abf5edb168b8480b91219e6c17eee6d2cb27df5356869893632741900
Contents?: true
Size: 1.54 KB
Versions: 61
Compression:
Stored size: 1.54 KB
Contents
module RSpec module Matchers module BuiltIn class StartAndEndWith include BaseMatcher def initialize(*expected) @expected = expected.length == 1 ? expected.first : expected end def matches?(actual) @actual = actual.respond_to?(:[]) ? actual : (raise ArgumentError.new("#{actual.inspect} does not respond to :[]")) begin @expected.respond_to?(:length) ? subset_matches?(@expected, @actual) : element_matches?(@expected, @actual) rescue ArgumentError raise ArgumentError.new("#{actual.inspect} does not have ordered elements") end end def failure_message_for_should "expected #{@actual.inspect} to #{self.class.name.split('::').last.sub(/With/,'').downcase} with #{@expected.inspect}" end def failure_message_for_should_not "expected #{@actual.inspect} not to #{self.class.name.split('::').last.sub(/With/,'').downcase} with #{@expected.inspect}" end end class StartWith < StartAndEndWith def subset_matches?(expected, actual) actual[0, expected.length] == expected end def element_matches?(expected, actual) @actual[0] == @expected end end class EndWith < StartAndEndWith def subset_matches?(expected, actual) actual[-expected.length, expected.length] == expected end def element_matches?(expected, actual) actual[-1] == expected end end end end end
Version data entries
61 entries across 56 versions & 5 rubygems