From 647c5bd32a24f0ccbec4a49510692f20f3656377 Mon Sep 17 00:00:00 2001 From: Javier Cicchelli Date: Sat, 18 Jan 2025 01:45:29 +0100 Subject: [PATCH] Defined the ResourceFile enumeration in the library target and also, implemented its "fileName" computed property. --- .../Files/{license_apache => license} | 0 .../Sources/Enumerations/ResourceFile.swift | 29 +++++++++++++++++++ .../Enumerations/ResourceFileTests.swift | 20 +++++++++++++ 3 files changed, 49 insertions(+) rename Library/Resources/Files/{license_apache => license} (100%) create mode 100644 Library/Sources/Enumerations/ResourceFile.swift create mode 100644 Test/Sources/Cases/Enumerations/ResourceFileTests.swift diff --git a/Library/Resources/Files/license_apache b/Library/Resources/Files/license similarity index 100% rename from Library/Resources/Files/license_apache rename to Library/Resources/Files/license diff --git a/Library/Sources/Enumerations/ResourceFile.swift b/Library/Sources/Enumerations/ResourceFile.swift new file mode 100644 index 0000000..7180349 --- /dev/null +++ b/Library/Sources/Enumerations/ResourceFile.swift @@ -0,0 +1,29 @@ +enum ResourceFile: String { + case dockerIgnore = "docker_ignore" + case gitIgnore = "git_ignore" + case license + case package + case readme +} + +// MARK: - Properties + +extension ResourceFile { + + // MARK: Computed + + var fileName: String { + switch self { + case .dockerIgnore: return ".dockerignore" + case .gitIgnore: return ".gitignore" + case .license: return "LICENSE" + case .readme: return "README.md" + case .package: return "Package.swift" + } + } + +} + +// MARK: - CaseIterable + +extension ResourceFile: CaseIterable {} diff --git a/Test/Sources/Cases/Enumerations/ResourceFileTests.swift b/Test/Sources/Cases/Enumerations/ResourceFileTests.swift new file mode 100644 index 0000000..13a176c --- /dev/null +++ b/Test/Sources/Cases/Enumerations/ResourceFileTests.swift @@ -0,0 +1,20 @@ +import Testing + +@testable import ColibriLibrary + +struct ResourceFileTests { + + // MARK: Properties tests + + @Test(arguments: zip(ResourceFile.allCases, + [".dockerignore", ".gitignore", "LICENSE", "Package.swift", "README.md"])) + func fileName(for resource: ResourceFile, expects fileName: String) async throws { + // GIVEN + // WHEN + let result = resource.fileName + + // THEN + #expect(result == fileName) + } + +}