module Sus::Mocks

def after(error = nil)

def after(error = nil)
	super
	
	@mocks&.each_value(&:clear)
end

def mock(target)

def mock(target)
	validate_mock!(target)
	mock = self.mocks[target]
	if block_given?
		yield mock
	end
	return mock
end

def mocks

def mocks
	@mocks ||= Hash.new{|h,k| h[k] = Mock.new(k)}.compare_by_identity
end

def validate_mock!(target)

def validate_mock!(target)
	if target.frozen?
		raise MockTargetError, "Cannot mock frozen object #{target.inspect}!"
	end
end