Skip to content

Commit cd0b359

Browse files
First set of real unit tests
1 parent d11c28b commit cd0b359

File tree

4 files changed

+167
-14
lines changed

4 files changed

+167
-14
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1520"
4+
version = "1.7">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "SwiftCSVEncoder"
18+
BuildableName = "SwiftCSVEncoder"
19+
BlueprintName = "SwiftCSVEncoder"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
<BuildActionEntry
24+
buildForTesting = "YES"
25+
buildForRunning = "YES"
26+
buildForProfiling = "NO"
27+
buildForArchiving = "NO"
28+
buildForAnalyzing = "YES">
29+
<BuildableReference
30+
BuildableIdentifier = "primary"
31+
BlueprintIdentifier = "SwiftCSVEncoderTests"
32+
BuildableName = "SwiftCSVEncoderTests"
33+
BlueprintName = "SwiftCSVEncoderTests"
34+
ReferencedContainer = "container:">
35+
</BuildableReference>
36+
</BuildActionEntry>
37+
</BuildActionEntries>
38+
</BuildAction>
39+
<TestAction
40+
buildConfiguration = "Debug"
41+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
42+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
43+
shouldUseLaunchSchemeArgsEnv = "YES"
44+
shouldAutocreateTestPlan = "YES">
45+
<Testables>
46+
<TestableReference
47+
skipped = "NO">
48+
<BuildableReference
49+
BuildableIdentifier = "primary"
50+
BlueprintIdentifier = "SwiftCSVEncoderTests"
51+
BuildableName = "SwiftCSVEncoderTests"
52+
BlueprintName = "SwiftCSVEncoderTests"
53+
ReferencedContainer = "container:">
54+
</BuildableReference>
55+
</TestableReference>
56+
</Testables>
57+
</TestAction>
58+
<LaunchAction
59+
buildConfiguration = "Debug"
60+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
61+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
62+
launchStyle = "0"
63+
useCustomWorkingDirectory = "NO"
64+
ignoresPersistentStateOnLaunch = "NO"
65+
debugDocumentVersioning = "YES"
66+
debugServiceExtension = "internal"
67+
allowLocationSimulation = "YES">
68+
</LaunchAction>
69+
<ProfileAction
70+
buildConfiguration = "Release"
71+
shouldUseLaunchSchemeArgsEnv = "YES"
72+
savedToolIdentifier = ""
73+
useCustomWorkingDirectory = "NO"
74+
debugDocumentVersioning = "YES">
75+
<MacroExpansion>
76+
<BuildableReference
77+
BuildableIdentifier = "primary"
78+
BlueprintIdentifier = "SwiftCSVEncoder"
79+
BuildableName = "SwiftCSVEncoder"
80+
BlueprintName = "SwiftCSVEncoder"
81+
ReferencedContainer = "container:">
82+
</BuildableReference>
83+
</MacroExpansion>
84+
</ProfileAction>
85+
<AnalyzeAction
86+
buildConfiguration = "Debug">
87+
</AnalyzeAction>
88+
<ArchiveAction
89+
buildConfiguration = "Release"
90+
revealArchiveInOrganizer = "YES">
91+
</ArchiveAction>
92+
</Scheme>

Sources/SwiftCSVEncoder/SwiftCSVEncoder.swift

-2
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
//
2+
// CSVEncodableTests.swift
3+
//
4+
//
5+
// Created by Scott Matthewman on 30/12/2023.
6+
//
7+
8+
import XCTest
9+
import SwiftCSVEncoder
10+
11+
final class CSVEncodableTests: XCTestCase {
12+
let date = ISO8601DateFormatter().date(from: "2023-11-07T18:34:21+0100")!
13+
14+
func testStringEncodesToItself() {
15+
let sourceString = #"This is a source string, with commas and "double quotes" in it"#
16+
17+
XCTAssertEqual(sourceString, sourceString.encode(configuration: .default), "String should not change when encoded")
18+
}
19+
20+
func testIntEncodesToStringRepresentation() {
21+
let sourceInt = 12_345_678
22+
23+
XCTAssertEqual(sourceInt.encode(configuration: .default), "12345678", "Int should encode as a plain number without formatting")
24+
}
25+
26+
func testDoubleEncodesToStringRepresentation() {
27+
let sourceDouble = 12_345.678_901
28+
29+
XCTAssertEqual(sourceDouble.encode(configuration: .default), "12345.678901", "Double should encode as a plain number without formatting")
30+
}
31+
32+
func testOptionalEncodesToEmptyStringWhenNil() {
33+
let sourceInt: Int? = nil
34+
35+
XCTAssertEqual(sourceInt.encode(configuration: .default), "", "A nil optional value should encode as an empty string")
36+
}
37+
38+
func testOptionalEncodesToWrappedValueWhenNotNil() {
39+
let sourceInt: Int? = 12_345
40+
41+
XCTAssertEqual(sourceInt.encode(configuration: .default), "12345", "A non-nil optional value should encode its wrapped value")
42+
}
43+
44+
func testUUIDEncodesToStringRepresentation() {
45+
let uuid = UUID()
46+
47+
XCTAssertEqual(uuid.encode(configuration: .default), uuid.uuidString, "A UUID should encode as its uuidString")
48+
}
49+
50+
func testDateEncodesWithISO8601InUTCByDefault() {
51+
XCTAssertEqual(date.encode(configuration: .default), "2023-11-07T17:34:21Z")
52+
}
53+
54+
func testDateEncodesWithDeferredFormat() {
55+
let configuration = CSVEncoderConfiguration(dateEncodingStrategy: .deferredToDate)
56+
57+
XCTAssertEqual(date.encode(configuration: configuration), "07/11/2023, 5:34 pm")
58+
}
59+
60+
func testDateEncodesWithFormatter() {
61+
let dateFormatter = DateFormatter()
62+
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
63+
dateFormatter.dateFormat = "HH:mm:ss -- dd-MM-yyyy"
64+
65+
let configuration = CSVEncoderConfiguration(dateEncodingStrategy: .formatted(dateFormatter))
66+
67+
XCTAssertEqual(date.encode(configuration: configuration), "17:34:21 -- 07-11-2023")
68+
}
69+
70+
func testDateEncodedWithCustomClosure() {
71+
let configuration = CSVEncoderConfiguration(dateEncodingStrategy: .custom({ date in "Custom returned value" }))
72+
73+
XCTAssertEqual(date.encode(configuration: configuration), "Custom returned value")
74+
}
75+
}

Tests/SwiftCSVEncoderTests/SwiftCSVEncoderTests.swift

-12
This file was deleted.

0 commit comments

Comments
 (0)