{"id":2129,"url":"https://github.com/Kuniwak/MirrorDiffKit","last_synced_at":"2025-08-02T23:32:01.379Z","repository":{"id":62447888,"uuid":"83046068","full_name":"Kuniwak/MirrorDiffKit","owner":"Kuniwak","description":"Graduation from messy XCTAssertEqual messages.","archived":false,"fork":false,"pushed_at":"2023-10-17T00:23:59.000Z","size":790,"stargazers_count":181,"open_issues_count":2,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-04-24T14:15:36.275Z","etag":null,"topics":["diff","ios","library","macos","swift","testing","tvos","watchos"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kuniwak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-02-24T13:52:21.000Z","updated_at":"2024-04-15T08:02:21.000Z","dependencies_parsed_at":"2024-04-24T09:59:03.159Z","dependency_job_id":"29d22fbe-cd75-4be4-aa90-f51f6c6e4e65","html_url":"https://github.com/Kuniwak/MirrorDiffKit","commit_stats":{"total_commits":80,"total_committers":2,"mean_commits":40.0,"dds":"0.012499999999999956","last_synced_commit":"8a4e0c645c2a7369527bfabe31af984a277b14ef"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuniwak%2FMirrorDiffKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuniwak%2FMirrorDiffKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuniwak%2FMirrorDiffKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuniwak%2FMirrorDiffKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kuniwak","download_url":"https://codeload.github.com/Kuniwak/MirrorDiffKit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228503126,"owners_count":17930517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["diff","ios","library","macos","swift","testing","tvos","watchos"],"created_at":"2024-01-05T20:16:05.410Z","updated_at":"2024-12-06T17:30:44.653Z","avatar_url":"https://github.com/Kuniwak.png","language":"Swift","readme":"![MirrorDiffKit](https://raw.githubusercontent.com/Kuniwak/MirrorDiffKit/master/Documentation/Images/logo.png)\n=============\n\nA tool for providing the 2 features for efficient testing:\n\n- Output diff between 2 any types\n- Default implementation of Equatable for any types\n\n\n![](./Documentation/Images/XcodePreview.png)\n\n\nUsage\n-----\n\n### `diff\u003cT\u003e(between: T, and: T)`\n\n```swift\nimport MirrorDiffKit\n\n// Input 2 structs or classes implements Equatable:\nlet a = Example(\n    key1: \"I'm not changed\",\n    key2: \"I'm deleted\"\n)\nlet b = Example(\n    key1: \"I'm not changed\",\n    key2: \"I'm inserted\"\n)\n\n\nXCTAssertEqual(a, b, diff(between: a, and: b))\n\n// 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\")\") - \n//     struct Example {\n//         key1: \"I'm not changed\"\n//       - key2: \"I'm deleted\"\n//       + key2: \"I'm inserted\"\n//     }\n```\n\n\n### `Any =~ Any` and `Any !~ Any`\n\n```swift\nimport MirrorDiffKit\n\na = NotEquatable(\n    key1: \"I'm not changed\",\n    key2: \"I'm deleted\"\n)\nb = NotEquatable(\n    key1: \"I'm not changed\",\n    key2: \"I'm inserted\"\n)\n\n\nXCTAssert(a =~ b, diff(between: a, and: b))\n\n// XCTAssertTrue failed - \n//     struct NotEquatable {\n//         key1: \"I'm not changed\"\n//       - key2: \"I'm deleted\"\n//       + key2: \"I'm inserted\"\n//     }\n```\n\n\nInstallation\n------------\n\n```\n.package(url: \"https://github.com/Kuniwak/MirrorDiffKit.git\")\n```\n\n\nLicense\n-------\n\n[MIT License](./LICENSE)\n","funding_links":[],"categories":["Testing","Swift"],"sub_categories":["Other Testing","Other free courses"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKuniwak%2FMirrorDiffKit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKuniwak%2FMirrorDiffKit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKuniwak%2FMirrorDiffKit/lists"}