From 276df2cadc348f3f41ceb277f56ef0e1fb6076fe Mon Sep 17 00:00:00 2001 From: Dalton Claybrook Date: Mon, 24 Aug 2020 21:16:54 -0400 Subject: [PATCH] Add tests for extensions --- Tests/SettlerTests/ArrayAdditionsTests.swift | 37 ++++++++++++++ Tests/SettlerTests/StringAdditionsTests.swift | 50 +++++++++++++++++++ Tests/SettlerTests/XCTestManifests.swift | 31 ++++++++++++ .../XcodeErrorDescriptionTests.swift | 17 +++++++ 4 files changed, 135 insertions(+) create mode 100644 Tests/SettlerTests/ArrayAdditionsTests.swift create mode 100644 Tests/SettlerTests/StringAdditionsTests.swift diff --git a/Tests/SettlerTests/ArrayAdditionsTests.swift b/Tests/SettlerTests/ArrayAdditionsTests.swift new file mode 100644 index 0000000..f5d6ae4 --- /dev/null +++ b/Tests/SettlerTests/ArrayAdditionsTests.swift @@ -0,0 +1,37 @@ +import XCTest +@testable import SettlerFramework + +final class ArrayAdditionsTests: XCTestCase { + func testMutableForEach() { + var nums = [1, 2, 3] + nums.mutableForEach { $0 *= 2 } + XCTAssertEqual(nums, [2, 4, 6]) + } + + func testMapEachCombination() { + let nums = [1, 2, 3, 4] + let result = nums.mapEachCombination { $0 + $1 } + XCTAssertEqual(result, [3, 4, 5, 5, 6, 7]) + } + + func testFlatMapEachCombination() { + let nums = [1, 2, 3, 4] + let result = nums.flatMapEachCombination { [$0 + $1, -1] } + XCTAssertEqual(result, [3, -1, 4, -1, 5, -1, 5, -1, 6, -1, 7, -1]) + } + + func testReduceEachCombinationInto() { + let nums = [1, 2, 3] + let result = nums.reduceEachCombination(into: ["0"]) { result, first, second in + result.append("\(first)\(second)") + } + XCTAssertEqual(result, ["0", "12", "13", "23"]) + } + + func testCompactMapRemoving() { + var nums = [0, 1, 2, 3, 4, 5, 6] + let result = nums.compactMapRemoving { $0 % 2 == 0 ? $0 : nil } + XCTAssertEqual(nums, [1, 3, 5]) + XCTAssertEqual(result, [0, 2, 4, 6]) + } +} diff --git a/Tests/SettlerTests/StringAdditionsTests.swift b/Tests/SettlerTests/StringAdditionsTests.swift new file mode 100644 index 0000000..76c6ddd --- /dev/null +++ b/Tests/SettlerTests/StringAdditionsTests.swift @@ -0,0 +1,50 @@ +import XCTest +@testable import SettlerFramework + +final class StringAdditionsTests: XCTestCase { + func testPrefixIsStripped() { + let key = "Key.Foo" + let stripped = key.strippingPrefix("Key.") + XCTAssertEqual(stripped, "Foo") + } + + func testSuffixIsStripped() { + let key = "Key.Foo" + let stripped = key.strippingSuffix(".Foo") + XCTAssertEqual(stripped, "Key") + } + + func testPrefixAndSuffixAreStripped() { + let key = "Lazy" + let stripped = key.stripping(prefix: "Lazy<", andSuffix: ">") + XCTAssertEqual(stripped, "Key.Foo") + } + + func testSuffixIsNotStrippedWithoutPrefix() { + let key = "Key.Foo>" + let stripped = key.stripping(prefix: "Lazy<", andSuffix: ">") + XCTAssertEqual(stripped, "Key.Foo>") + } + + func testPrefixIsNotStrippedWithoutSuffix() { + let key = "Lazy") + XCTAssertEqual(stripped, "Lazy [XCTestCaseEntry] { return [ + testCase(ArrayAdditionsTests.__allTests__ArrayAdditionsTests), testCase(OrderedDefinitionBuilderTests.__allTests__OrderedDefinitionBuilderTests), testCase(OutputFileContentsBuilderTests.__allTests__OutputFileContentsBuilderTests), testCase(ResolverDefinitionBuilderTests.__allTests__ResolverDefinitionBuilderTests), + testCase(StringAdditionsTests.__allTests__StringAdditionsTests), testCase(TypeAliasDefinitionBuilderTests.__allTests__TypeAliasDefinitionBuilderTests), testCase(XcodeErrorDescriptionTests.__allTests__XcodeErrorDescriptionTests), ] diff --git a/Tests/SettlerTests/XcodeErrorDescriptionTests.swift b/Tests/SettlerTests/XcodeErrorDescriptionTests.swift index 0c23678..0bfe16e 100644 --- a/Tests/SettlerTests/XcodeErrorDescriptionTests.swift +++ b/Tests/SettlerTests/XcodeErrorDescriptionTests.swift @@ -24,6 +24,23 @@ final class XcodeErrorDescriptionTests: XCTestCase { let expected = ":2:5: error: \(locatedError.value.description)" XCTAssertEqual(locatedError.description, expected) } + + func testJoinedErrorStringsAreCorrect() { + let contents = "extension TestResolver {}" + let file1 = MockFile(path: "/path/one.swift", contents: contents) + let error1 = DefinitionError.cantFindDeclarationFile + .located(in: file1, offset: 0) + let file2 = MockFile(path: "/path/two.swift", contents: contents) + let error2 = DefinitionError + .resolverFunctionCannotBeThrowingIfResultIsUsedLazily + .located(in: file2, offset: 0) + let result = [error1, error2].errorString + let expected = """ + /path/one.swift:1:1: error: \(error1.value.description) + /path/two.swift:1:1: error: \(error2.value.description) + """ + XCTAssertEqual(result, expected) + } } struct MockFile: FileType {