import Testing @testable import AppLibrary @Suite("PathProvider", .tags(.provider)) struct PathProviderTests { // MARK: Functions tests @Test(arguments: zip([String].pathURLs, [String].nameArchives)) func archiveName( from path: String, expects name: String ) async throws { // GIVEN // WHEN let result = PathProvider.archiveName(from: path) // THEN #expect(result == name) } @Test(arguments: zip([String].pathURLs, [String].pathArchives)) func archivePath( from path: String, expects archive: String ) async throws { // GIVEN // WHEN let result = PathProvider.archivePath(from: path) // THEN #expect(result == archive) } @Test(arguments: zip([String].pathURLs, [String].pathResources)) func resourcePath( from path: String, expects resource: String ) async throws { // GIVEN // WHEN let result = PathProvider.resourcePath(from: path) // THEN #expect(result == resource) } } // MARK: - Collection+Strings private extension Collection where Element == String { // MARK: Properties static var nameArchives: [Element] {[ .empty, .empty, .empty, "somearchive", "somearchive", "somearchive" ]} static var pathArchives: [Element] {[ .empty, .empty, .empty, "/SomeArchive.doccarchive", "/SomeArchive.doccarchive", "/SomeArchive.doccarchive" ]} static var pathResources: [Element] {[ .forwardSlash, .forwardSlash, .forwardSlash, .forwardSlash, .forwardSlash, "/path/to/resource" ]} static var pathURLs: [Element] {[ .empty, "/archives", "/archives/", "/archives/SomeArchive", "/archives/SomeArchive/", "/archives/SomeArchive/path/to/resource" ]} }