Files
facebook-ios-sdk/FBSDKCoreKit/FBSDKCoreKitTests/Internal/Helpers/TestSwizzler.swift
Joe Susnick 99786670d6 Backfill Unit Tests EventManager
Summary: Backfills some unit tests for event manager and introduces a protocol `FBSDKSwizzling` to be able to examine what is being swizzled by the type without actually doing any swizzling.

Reviewed By: KylinChang

Differential Revision: D26855106

fbshipit-source-id: f57a7dc8a4a00a0a0a16ae4355644f4e9d492583
2021-03-09 09:57:37 -08:00

55 lines
1.8 KiB
Swift

// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
//
// You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
// copy, modify, and distribute this software in source code or binary form for use
// in connection with the web services and APIs provided by Facebook.
//
// As with any software that integrates with the Facebook platform, your use of
// this software is subject to the Facebook Developer Principles and Policies
// [http://developers.facebook.com/policy/]. This copyright notice shall be
// included in all copies or substantial portions of the software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
struct SwizzleEvidence: Equatable {
let selector: Selector
let `class`: AnyClass
let block: swizzleBlock?
init(
selector: Selector,
`class`: AnyClass,
block: swizzleBlock? = nil
) {
self.selector = selector
self.`class` = `class`
self.block = block
}
static func == (lhs: SwizzleEvidence, rhs: SwizzleEvidence) -> Bool {
return lhs.selector == rhs.selector && lhs.class == rhs.class
}
}
class TestSwizzler: Swizzling {
static var evidence = [SwizzleEvidence]()
static func swizzleSelector(
_ aSelector: Selector,
on aClass: AnyClass,
with block: @escaping swizzleBlock,
named aName: String
) {
evidence.append(.init(selector: aSelector, class: aClass, block: block))
}
static func reset() {
evidence = []
}
}