Skip to content

Commit b5f994a

Browse files
michallaskowskiMichal Laskowski
authored and
Michal Laskowski
committed
Add a test for decoding segments, fix too many segments issue
1 parent 82be2cc commit b5f994a

File tree

10 files changed

+413
-18
lines changed

10 files changed

+413
-18
lines changed

Diff for: .gitignore

+12-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
1-
.DS_Store
2-
/.build
3-
/Packages
4-
/*.xcodeproj
5-
xcuserdata/
1+
# Created by https://www.toptal.com/developers/gitignore/api/swiftpackagemanager
2+
# Edit at https://www.toptal.com/developers/gitignore?templates=swiftpackagemanager
3+
4+
### SwiftPackageManager ###
5+
Packages
6+
.build/
7+
xcuserdata
8+
DerivedData/
9+
*.xcodeproj
10+
11+
12+
# End of https://www.toptal.com/developers/gitignore/api/swiftpackagemanager
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1220"
4+
version = "1.3">
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 = "FitWorkoutDecoder"
18+
BuildableName = "FitWorkoutDecoder"
19+
BlueprintName = "FitWorkoutDecoder"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES">
30+
<Testables>
31+
</Testables>
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
launchStyle = "0"
38+
useCustomWorkingDirectory = "NO"
39+
ignoresPersistentStateOnLaunch = "NO"
40+
debugDocumentVersioning = "YES"
41+
debugServiceExtension = "internal"
42+
allowLocationSimulation = "YES">
43+
</LaunchAction>
44+
<ProfileAction
45+
buildConfiguration = "Release"
46+
shouldUseLaunchSchemeArgsEnv = "YES"
47+
savedToolIdentifier = ""
48+
useCustomWorkingDirectory = "NO"
49+
debugDocumentVersioning = "YES">
50+
<MacroExpansion>
51+
<BuildableReference
52+
BuildableIdentifier = "primary"
53+
BlueprintIdentifier = "FitWorkoutDecoder"
54+
BuildableName = "FitWorkoutDecoder"
55+
BlueprintName = "FitWorkoutDecoder"
56+
ReferencedContainer = "container:">
57+
</BuildableReference>
58+
</MacroExpansion>
59+
</ProfileAction>
60+
<AnalyzeAction
61+
buildConfiguration = "Debug">
62+
</AnalyzeAction>
63+
<ArchiveAction
64+
buildConfiguration = "Release"
65+
revealArchiveInOrganizer = "YES">
66+
</ArchiveAction>
67+
</Scheme>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1220"
4+
version = "1.3">
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 = "WorkoutDecoders_WorkoutDecodersTests"
18+
BuildableName = "WorkoutDecoders_WorkoutDecodersTests"
19+
BlueprintName = "WorkoutDecoders_WorkoutDecodersTests"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
<BuildActionEntry
24+
buildForTesting = "YES"
25+
buildForRunning = "YES"
26+
buildForProfiling = "YES"
27+
buildForArchiving = "YES"
28+
buildForAnalyzing = "YES">
29+
<BuildableReference
30+
BuildableIdentifier = "primary"
31+
BlueprintIdentifier = "FitWorkoutDecoder"
32+
BuildableName = "FitWorkoutDecoder"
33+
BlueprintName = "FitWorkoutDecoder"
34+
ReferencedContainer = "container:">
35+
</BuildableReference>
36+
</BuildActionEntry>
37+
<BuildActionEntry
38+
buildForTesting = "YES"
39+
buildForRunning = "YES"
40+
buildForProfiling = "YES"
41+
buildForArchiving = "YES"
42+
buildForAnalyzing = "YES">
43+
<BuildableReference
44+
BuildableIdentifier = "primary"
45+
BlueprintIdentifier = "WorkoutDecoders"
46+
BuildableName = "WorkoutDecoders"
47+
BlueprintName = "WorkoutDecoders"
48+
ReferencedContainer = "container:">
49+
</BuildableReference>
50+
</BuildActionEntry>
51+
<BuildActionEntry
52+
buildForTesting = "YES"
53+
buildForRunning = "YES"
54+
buildForProfiling = "YES"
55+
buildForArchiving = "YES"
56+
buildForAnalyzing = "YES">
57+
<BuildableReference
58+
BuildableIdentifier = "primary"
59+
BlueprintIdentifier = "ZwoWorkoutDecoder"
60+
BuildableName = "ZwoWorkoutDecoder"
61+
BlueprintName = "ZwoWorkoutDecoder"
62+
ReferencedContainer = "container:">
63+
</BuildableReference>
64+
</BuildActionEntry>
65+
<BuildActionEntry
66+
buildForTesting = "YES"
67+
buildForRunning = "YES"
68+
buildForProfiling = "NO"
69+
buildForArchiving = "NO"
70+
buildForAnalyzing = "YES">
71+
<BuildableReference
72+
BuildableIdentifier = "primary"
73+
BlueprintIdentifier = "WorkoutDecodersTests"
74+
BuildableName = "WorkoutDecodersTests"
75+
BlueprintName = "WorkoutDecodersTests"
76+
ReferencedContainer = "container:">
77+
</BuildableReference>
78+
</BuildActionEntry>
79+
<BuildActionEntry
80+
buildForTesting = "YES"
81+
buildForRunning = "YES"
82+
buildForProfiling = "YES"
83+
buildForArchiving = "YES"
84+
buildForAnalyzing = "YES">
85+
<BuildableReference
86+
BuildableIdentifier = "primary"
87+
BlueprintIdentifier = "WorkoutDecoderBase"
88+
BuildableName = "WorkoutDecoderBase"
89+
BlueprintName = "WorkoutDecoderBase"
90+
ReferencedContainer = "container:">
91+
</BuildableReference>
92+
</BuildActionEntry>
93+
</BuildActionEntries>
94+
</BuildAction>
95+
<TestAction
96+
buildConfiguration = "Debug"
97+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
98+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
99+
shouldUseLaunchSchemeArgsEnv = "YES">
100+
<Testables>
101+
<TestableReference
102+
skipped = "NO">
103+
<BuildableReference
104+
BuildableIdentifier = "primary"
105+
BlueprintIdentifier = "WorkoutDecodersTests"
106+
BuildableName = "WorkoutDecodersTests"
107+
BlueprintName = "WorkoutDecodersTests"
108+
ReferencedContainer = "container:">
109+
</BuildableReference>
110+
</TestableReference>
111+
</Testables>
112+
</TestAction>
113+
<LaunchAction
114+
buildConfiguration = "Debug"
115+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
116+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
117+
launchStyle = "0"
118+
useCustomWorkingDirectory = "NO"
119+
ignoresPersistentStateOnLaunch = "NO"
120+
debugDocumentVersioning = "YES"
121+
debugServiceExtension = "internal"
122+
allowLocationSimulation = "YES">
123+
</LaunchAction>
124+
<ProfileAction
125+
buildConfiguration = "Release"
126+
shouldUseLaunchSchemeArgsEnv = "YES"
127+
savedToolIdentifier = ""
128+
useCustomWorkingDirectory = "NO"
129+
debugDocumentVersioning = "YES">
130+
<MacroExpansion>
131+
<BuildableReference
132+
BuildableIdentifier = "primary"
133+
BlueprintIdentifier = "WorkoutDecoders_WorkoutDecodersTests"
134+
BuildableName = "WorkoutDecoders_WorkoutDecodersTests"
135+
BlueprintName = "WorkoutDecoders_WorkoutDecodersTests"
136+
ReferencedContainer = "container:">
137+
</BuildableReference>
138+
</MacroExpansion>
139+
</ProfileAction>
140+
<AnalyzeAction
141+
buildConfiguration = "Debug">
142+
</AnalyzeAction>
143+
<ArchiveAction
144+
buildConfiguration = "Release"
145+
revealArchiveInOrganizer = "YES">
146+
</ArchiveAction>
147+
</Scheme>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1220"
4+
version = "1.3">
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 = "WorkoutDecoders"
18+
BuildableName = "WorkoutDecoders"
19+
BlueprintName = "WorkoutDecoders"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES">
30+
<Testables>
31+
</Testables>
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
launchStyle = "0"
38+
useCustomWorkingDirectory = "NO"
39+
ignoresPersistentStateOnLaunch = "NO"
40+
debugDocumentVersioning = "YES"
41+
debugServiceExtension = "internal"
42+
allowLocationSimulation = "YES">
43+
</LaunchAction>
44+
<ProfileAction
45+
buildConfiguration = "Release"
46+
shouldUseLaunchSchemeArgsEnv = "YES"
47+
savedToolIdentifier = ""
48+
useCustomWorkingDirectory = "NO"
49+
debugDocumentVersioning = "YES">
50+
<MacroExpansion>
51+
<BuildableReference
52+
BuildableIdentifier = "primary"
53+
BlueprintIdentifier = "WorkoutDecoders"
54+
BuildableName = "WorkoutDecoders"
55+
BlueprintName = "WorkoutDecoders"
56+
ReferencedContainer = "container:">
57+
</BuildableReference>
58+
</MacroExpansion>
59+
</ProfileAction>
60+
<AnalyzeAction
61+
buildConfiguration = "Debug">
62+
</AnalyzeAction>
63+
<ArchiveAction
64+
buildConfiguration = "Release"
65+
revealArchiveInOrganizer = "YES">
66+
</ArchiveAction>
67+
</Scheme>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1220"
4+
version = "1.3">
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 = "ZwoWorkoutDecoder"
18+
BuildableName = "ZwoWorkoutDecoder"
19+
BlueprintName = "ZwoWorkoutDecoder"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES">
30+
<Testables>
31+
</Testables>
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
launchStyle = "0"
38+
useCustomWorkingDirectory = "NO"
39+
ignoresPersistentStateOnLaunch = "NO"
40+
debugDocumentVersioning = "YES"
41+
debugServiceExtension = "internal"
42+
allowLocationSimulation = "YES">
43+
</LaunchAction>
44+
<ProfileAction
45+
buildConfiguration = "Release"
46+
shouldUseLaunchSchemeArgsEnv = "YES"
47+
savedToolIdentifier = ""
48+
useCustomWorkingDirectory = "NO"
49+
debugDocumentVersioning = "YES">
50+
<MacroExpansion>
51+
<BuildableReference
52+
BuildableIdentifier = "primary"
53+
BlueprintIdentifier = "ZwoWorkoutDecoder"
54+
BuildableName = "ZwoWorkoutDecoder"
55+
BlueprintName = "ZwoWorkoutDecoder"
56+
ReferencedContainer = "container:">
57+
</BuildableReference>
58+
</MacroExpansion>
59+
</ProfileAction>
60+
<AnalyzeAction
61+
buildConfiguration = "Debug">
62+
</AnalyzeAction>
63+
<ArchiveAction
64+
buildConfiguration = "Release"
65+
revealArchiveInOrganizer = "YES">
66+
</ArchiveAction>
67+
</Scheme>

Diff for: Package.swift

+4-1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ let package = Package(
4141
dependencies: ["ZwoWorkoutDecoder", "FitWorkoutDecoder"]),
4242
.testTarget(
4343
name: "WorkoutDecodersTests",
44-
dependencies: ["WorkoutDecoders"]),
44+
dependencies: ["WorkoutDecoders"],
45+
resources: [
46+
.copy("Resources")
47+
]),
4548
]
4649
)

Diff for: Sources/WorkoutDecoderBase/WorkoutDecoding.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public enum WorkoutPart {
2222
case .steady(let duration, let power):
2323
return [WorkoutSegment(duration: duration, index: startIndex, intervalIndex: nil, powerStart: power, powerEnd: nil)]
2424
case .intervals(let repeats, let onDuration, let onPower, let offDuration, let offPower):
25-
return (0...repeats).map { index -> [WorkoutSegment] in
25+
return (0..<repeats).map { index -> [WorkoutSegment] in
2626
[
2727
WorkoutSegment(duration: onDuration, index: startIndex + index * 2,
2828
intervalIndex: index, powerStart: onPower, powerEnd: nil),
@@ -40,7 +40,7 @@ public enum WorkoutPart {
4040
}
4141
}
4242

43-
public struct WorkoutSegment: Codable {
43+
public struct WorkoutSegment: Codable, Equatable {
4444
public let duration: Int
4545
public let index: Int
4646
public let intervalIndex: Int?

0 commit comments

Comments
 (0)