A tool for providing the 2 features for efficient testing:
- Output diff between 2 any types
- Default implementation of Equatable for any types
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
.package(url: "https://github.com/Kuniwak/MirrorDiffKit.git")

