Skip to content

amorde/Difference

 
 

Repository files navigation

CircleCI Version License Platform

Difference

Better way to identify what's different between 2 instances.

Have you ever written tests? Usually they use equality asserts, e.g. XCTAssertEqual, what happens if the objects aren't equal? Xcode throws a wall of text at you:

This forces you to manually scan the text and try to figure out exactly whats wrong, what if instead you could just learn which property is different?

Installation

CocoaPods

Add pod 'Difference' to your Podfile.

Carthage

Add github "krzysztofzablocki/Difference" to your Cartfile.

Using lldb

Just write the following to see the difference between 2 instances:

po dumpDiff(expected, received)

Integrate with XCTest

Just add this to your test target:

public func AssertEqual<T: Equatable>(_ expected: T, _ received: T, file: StaticString = #file, line: UInt = #line) {
    XCTAssertTrue(expected == received, "Found difference for " + diff(expected, received).joined(separator: ", "), file: file, line: line)
}

Integrate with Quick

Just add this to your test target:

public func equalDiff<T: Equatable>(_ otherObject: T?) -> Predicate<T> {
    return Predicate.define { actualExpression in
        guard let otherObject = otherObject else {
            return PredicateResult(status: .fail, message: ExpectationMessage.fail("").appendedBeNilHint())
        }

        let object = try actualExpression.evaluate()

        return PredicateResult(bool: object != otherObject, message: ExpectationMessage.fail("Found difference for " + diff(object, otherObject).joined(separator: ", ")))
    }
}

About

Simple way to identify whats different between 2 instances.

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages

  • Swift 86.4%
  • Ruby 13.6%