A tool for providing the 2 features for efficient testing:
- Output diff between 2 any types
 - Default implementation of Equatable for any types
 
| Platform | Status | 
|---|---|
| macOS | |
| Linux | 
Usage
diff<T>(between: T, and: T)
 
import MirrorDiffKit
// Input 2 structs or classes implements Equatable:
let a = Example(
    key1: "I'm not changed",
    key2: "I'm deleted"
)
let b = Example(
    key1: "I'm not changed",
    key2: "I'm inserted"
)
XCTAssertEqual(a, b, diff(between: a, and: b))
// XCTAssertEqual failed: ("Example(key1: "I\'m not changed", key2: "I\'m deleted")") is not equal to ("Example(key1: "I\'m not changed", key2: "I\'m inserted")") - 
//     struct Example {
//         key1: "I'm not changed"
//       - key2: "I'm deleted"
//       + key2: "I'm inserted"
//     } 
Any =~ Any and Any !~ Any
 
import MirrorDiffKit
a = NotEquatable(
    key1: "I'm not changed",
    key2: "I'm deleted"
)
b = NotEquatable(
    key1: "I'm not changed",
    key2: "I'm inserted"
)
XCTAssert(a =~ b, diff(between: a, and: b))
// XCTAssertTrue failed - 
//     struct NotEquatable {
//         key1: "I'm not changed"
//       - key2: "I'm deleted"
//       + key2: "I'm inserted"
//     } 
Installation
Swift Package Manager
Add the following line to your Package.swift:
.package(url: "https://github.com/Kuniwak/MirrorDiffKit.git")
 
Carthage
Add the following line to your Cartfile:
github "Kuniwak/MirrorDiffKit"
 
CocoaPods
pod "MirrorDiffKit" 

