Sha256: 900bef30e9a9a91c1dd4a45cabbccedd761339c8df80c1800fdfcc3a3125591d
Contents?: true
Size: 1.21 KB
Versions: 21
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true require 'support' require 'mustermann/equality_map' RSpec.describe Mustermann::EqualityMap do before { GC.disable } after { GC.enable } describe :fetch do subject { Mustermann::EqualityMap.new } specify 'with existing entry' do next if subject.is_a? Hash subject.fetch("foo") { "foo" } result = subject.fetch("foo") { "bar" } expect(result).to be == "foo" end specify 'with GC-removed entry' do next if subject.is_a? Hash subject.fetch(String.new('foo')) { "foo" } expect(subject.map).to receive(:[]).and_return(nil) result = subject.fetch(String.new('foo')) { "bar" } expect(result).to be == "bar" end specify 'allows a frozen key and value' do next if subject.is_a? Hash key = "foo".freeze value = "bar".freeze subject.fetch(key) { value } result = subject.fetch("foo".dup) { raise "not executed" } expect(result).to be == value expect(result).not_to equal value end specify 'allows only a single argument to be compatible with Hash#fetch' do expect { subject.fetch("foo", "bar", "baz") { "value" } }.to raise_error(ArgumentError) end end end
Version data entries
21 entries across 18 versions & 4 rubygems