This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
Doric/iOS/Example/Pods/Nimble-Snapshots/PrettySyntax.swift
2019-07-25 19:30:14 +08:00

55 lines
1.7 KiB
Swift

import Nimble
// MARK: - Nicer syntax using == operator
public struct Snapshot {
let name: String?
let record: Bool
let usesDrawRect: Bool
init(name: String?, record: Bool, usesDrawRect: Bool) {
self.name = name
self.record = record
self.usesDrawRect = usesDrawRect
}
}
public func snapshot(_ name: String? = nil,
usesDrawRect: Bool = false) -> Snapshot {
return Snapshot(name: name, record: false, usesDrawRect: usesDrawRect)
}
public func recordSnapshot(_ name: String? = nil,
usesDrawRect: Bool = false) -> Snapshot {
return Snapshot(name: name, record: true, usesDrawRect: usesDrawRect)
}
public func == (lhs: Expectation<Snapshotable>, rhs: Snapshot) {
if let name = rhs.name {
if rhs.record {
lhs.to(recordSnapshot(named: name, usesDrawRect: rhs.usesDrawRect))
} else {
lhs.to(haveValidSnapshot(named: name, usesDrawRect: rhs.usesDrawRect))
}
} else {
if rhs.record {
lhs.to(recordSnapshot(usesDrawRect: rhs.usesDrawRect))
} else {
lhs.to(haveValidSnapshot(usesDrawRect: rhs.usesDrawRect))
}
}
}
// MARK: - Nicer syntax using emoji
// swiftlint:disable:next identifier_name
public func 📷(_ snapshottable: Snapshotable, file: FileString = #file, line: UInt = #line) {
expect(snapshottable, file: file, line: line).to(recordSnapshot())
}
// swiftlint:disable:next identifier_name
public func 📷(_ snapshottable: Snapshotable, named name: String, file: FileString = #file, line: UInt = #line) {
expect(snapshottable, file: file, line: line).to(recordSnapshot(named: name))
}