Files
JSONAPI/Tests/JSONAPITestingTests/Comparisons/ArrayCompareTests.swift
T

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")
}
}