mirror of
https://github.com/encounter/JSONAPI.git
synced 2026-03-30 11:18:38 -07:00
87 lines
2.6 KiB
Swift
87 lines
2.6 KiB
Swift
//
|
|
// ArrayCompareTests.swift
|
|
// JSONAPITestingTests
|
|
//
|
|
// Created by Mathew Polzin on 11/14/19.
|
|
//
|
|
|
|
import XCTest
|
|
@testable import JSONAPITesting
|
|
|
|
final class ArrayCompareTests: XCTestCase {
|
|
func test_same() {
|
|
let arr1 = ["a", "b", "c"]
|
|
let arr2 = ["a", "b", "c"]
|
|
|
|
let comparison = arr1.compare(to: arr2) { str1, str2 in
|
|
str1 == str2 ? .same : .differentValues(str1, str2)
|
|
}
|
|
|
|
XCTAssertEqual(
|
|
comparison,
|
|
[.same, .same, .same]
|
|
)
|
|
|
|
XCTAssertEqual(comparison.map { $0.description }, ["same", "same", "same"])
|
|
|
|
XCTAssertEqual(comparison.map(BasicComparison.init(reducing:)), [.same, .same, .same])
|
|
|
|
XCTAssertEqual(comparison.map(BasicComparison.init(reducing:)).map { $0.description }, ["same", "same", "same"])
|
|
}
|
|
|
|
func test_differentLengths() {
|
|
let arr1 = ["a", "b", "c"]
|
|
let arr2 = ["a", "b"]
|
|
|
|
let comparison1 = arr1.compare(to: arr2) { str1, str2 in
|
|
str1 == str2 ? .same : .differentValues(str1, str2)
|
|
}
|
|
|
|
XCTAssertEqual(
|
|
comparison1,
|
|
[.same, .same, .missing]
|
|
)
|
|
|
|
XCTAssertEqual(comparison1.map { $0.description }, ["same", "same", "missing"])
|
|
|
|
XCTAssertEqual(comparison1.map(BasicComparison.init(reducing:)), [.same, .same, .different("array length 1", "array length 2")])
|
|
|
|
let comparison2 = arr2.compare(to: arr1) { str1, str2 in
|
|
str1 == str2 ? .same : .differentValues(str1, str2)
|
|
}
|
|
|
|
XCTAssertEqual(
|
|
comparison2,
|
|
[.same, .same, .missing]
|
|
)
|
|
|
|
XCTAssertEqual(comparison2.map { $0.description }, ["same", "same", "missing"])
|
|
|
|
XCTAssertEqual(comparison2.map(BasicComparison.init(reducing:)), [.same, .same, .different("array length 1", "array length 2")])
|
|
}
|
|
|
|
func test_differentValues() {
|
|
let arr1 = ["c", "b", "a"]
|
|
let arr2 = ["a", "b", "c"]
|
|
|
|
let comparison = arr1.compare(to: arr2) { str1, str2 in
|
|
str1 == str2 ? .same : .differentValues(str1, str2)
|
|
}
|
|
|
|
XCTAssertEqual(
|
|
comparison,
|
|
[.differentValues("c", "a"), .same, .differentValues("a", "c")]
|
|
)
|
|
|
|
XCTAssertEqual(comparison.map { $0.description }, ["c ≠ a", "same", "a ≠ c"])
|
|
}
|
|
|
|
func test_reducePrebuilt() {
|
|
let prebuilt = ArrayElementComparison.prebuilt("hello world")
|
|
|
|
XCTAssertEqual(BasicComparison(reducing: prebuilt), .prebuilt("hello world"))
|
|
|
|
XCTAssertEqual(BasicComparison(reducing: prebuilt).description, "hello world")
|
|
}
|
|
}
|