From 11e920b1b883fe169c5ebb58e6489c0f28e9ad90 Mon Sep 17 00:00:00 2001 From: James Bean Date: Fri, 16 Nov 2018 21:48:53 -0500 Subject: [PATCH] Add CustomStringConvertible conformances to Pair types (#204) --- Sources/DataStructures/Pair/Cross.swift | 10 ++++++++++ Sources/DataStructures/Pair/OrderedPair.swift | 10 ++++++++++ Sources/DataStructures/Pair/UnorderedPair.swift | 10 ++++++++++ Tests/DataStructuresTests/CrossTests.swift | 4 ++++ .../PairTests/OrderedPairTests.swift | 4 ++++ .../PairTests/UnorderedPairTests.swift | 4 ++++ Tests/DataStructuresTests/XCTestManifests.swift | 3 +++ 7 files changed, 45 insertions(+) diff --git a/Sources/DataStructures/Pair/Cross.swift b/Sources/DataStructures/Pair/Cross.swift index d211675..5e1b7db 100644 --- a/Sources/DataStructures/Pair/Cross.swift +++ b/Sources/DataStructures/Pair/Cross.swift @@ -41,3 +41,13 @@ extension Cross: Comparable where T: Comparable, U: Comparable { extension Cross: Equatable where T: Equatable, U: Equatable { } extension Cross: Hashable where T: Hashable, U: Hashable { } + +extension Cross: CustomStringConvertible { + + // MARK: - CustomStringConvertible + + /// Printable description of `Cross`. + public var description: String { + return "<\(a),\(b)>" + } +} diff --git a/Sources/DataStructures/Pair/OrderedPair.swift b/Sources/DataStructures/Pair/OrderedPair.swift index d7939d5..c95d1ff 100644 --- a/Sources/DataStructures/Pair/OrderedPair.swift +++ b/Sources/DataStructures/Pair/OrderedPair.swift @@ -28,3 +28,13 @@ public struct OrderedPair : SwappablePair { extension OrderedPair: Equatable where T: Equatable { } extension OrderedPair: Hashable where T: Hashable { } + +extension OrderedPair: CustomStringConvertible { + + // MARK: - CustomStringConvertible + + /// Printable description of `OrderedPair`. + public var description: String { + return "(\(a),\(b))" + } +} diff --git a/Sources/DataStructures/Pair/UnorderedPair.swift b/Sources/DataStructures/Pair/UnorderedPair.swift index 3e072de..437d51f 100644 --- a/Sources/DataStructures/Pair/UnorderedPair.swift +++ b/Sources/DataStructures/Pair/UnorderedPair.swift @@ -58,3 +58,13 @@ extension UnorderedPair: Hashable where T: Hashable { hasher.combine(a.hashValue ^ b.hashValue) } } + +extension UnorderedPair: CustomStringConvertible { + + // MARK: - CustomStringConvertible + + /// Printable description of `UnorderedPair`. + public var description: String { + return "{\(a),\(b)}" + } +} diff --git a/Tests/DataStructuresTests/CrossTests.swift b/Tests/DataStructuresTests/CrossTests.swift index 97b1d7a..c3bf361 100644 --- a/Tests/DataStructuresTests/CrossTests.swift +++ b/Tests/DataStructuresTests/CrossTests.swift @@ -39,4 +39,8 @@ class CrossTests: XCTestCase { } XCTAssertEqual(start.map(function),expected) } + + func testDescription() { + XCTAssertEqual(Cross("a",0).description, "") + } } diff --git a/Tests/DataStructuresTests/PairTests/OrderedPairTests.swift b/Tests/DataStructuresTests/PairTests/OrderedPairTests.swift index 3076e34..6a654d9 100644 --- a/Tests/DataStructuresTests/PairTests/OrderedPairTests.swift +++ b/Tests/DataStructuresTests/PairTests/OrderedPairTests.swift @@ -15,4 +15,8 @@ class OrderedPairTests: XCTestCase { let expected = OrderedPair(1,2) XCTAssertEqual(start.map { $0.count }, expected) } + + func testDescription() { + XCTAssertEqual(OrderedPair("3","four").description, "(3,four)") + } } diff --git a/Tests/DataStructuresTests/PairTests/UnorderedPairTests.swift b/Tests/DataStructuresTests/PairTests/UnorderedPairTests.swift index 7473a3b..f28d287 100644 --- a/Tests/DataStructuresTests/PairTests/UnorderedPairTests.swift +++ b/Tests/DataStructuresTests/PairTests/UnorderedPairTests.swift @@ -64,6 +64,10 @@ class UnorderedPairTests: XCTestCase { let expected = UnorderedPair(1,2) XCTAssertEqual(start.map { $0.count }, expected) } + + func testDescription() { + XCTAssertEqual(UnorderedPair("a","z").description, "{a,z}") + } } func randomString(maxLength: Int = 10) -> String { diff --git a/Tests/DataStructuresTests/XCTestManifests.swift b/Tests/DataStructuresTests/XCTestManifests.swift index afb0dcf..c77c2e7 100644 --- a/Tests/DataStructuresTests/XCTestManifests.swift +++ b/Tests/DataStructuresTests/XCTestManifests.swift @@ -110,6 +110,7 @@ extension CrossTests { ("testComparableFalseEqual", testComparableFalseEqual), ("testComparableLexicographic", testComparableLexicographic), ("testComparableLexicographicFalse", testComparableLexicographicFalse), + ("testDescription", testDescription), ("testMap", testMap), ] } @@ -285,6 +286,7 @@ extension OrderedDictionaryTests { extension OrderedPairTests { static let __allTests = [ + ("testDescription", testDescription), ("testMap", testMap), ] } @@ -518,6 +520,7 @@ extension TreeTests { extension UnorderedPairTests { static let __allTests = [ + ("testDescription", testDescription), ("testEquatable", testEquatable), ("testHashValuesInt", testHashValuesInt), ("testHashValuesString", testHashValuesString),