-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCubase TrackArchive MusicalAndLinearTest.swift
123 lines (87 loc) · 5.28 KB
/
Cubase TrackArchive MusicalAndLinearTest.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//
// Cubase TrackArchive MusicalAndLinearTest.swift
// DAWFileKit • https://github.com/orchetect/DAWFileKit
// © 2022 Steffan Andrews • Licensed under MIT License
//
#if os(macOS) // XMLNode only works on macOS
import XCTest
@testable import DAWFileKit
import OTCore
import TimecodeKit
class Cubase_TrackArchive_MusicalAndLinearTest: XCTestCase {
override func setUp() { }
override func tearDown() { }
func testMusicalAndLinearTest() throws {
let filename = "MusicalAndLinearTest"
guard let rawData = loadFileContents(
forResource: filename,
withExtension: "xml",
subFolder: .cubaseTrackArchiveXML
)
else { XCTFail("Could not form URL, possibly could not find file."); return }
// parse
var parseMessages: [Cubase.TrackArchive.ParseMessage] = []
let trackArchive = try Cubase.TrackArchive(fileContent: rawData, messages: &parseMessages)
// parse messages
XCTAssertEqual(parseMessages.errors.count, 0)
if !parseMessages.errors.isEmpty {
dump(parseMessages.errors)
}
// ---- tracks ----
XCTAssertEqual(trackArchive.tracks?.count, 2)
// track 1 - musical mode
let track1 = trackArchive.tracks?[0] as? Cubase.TrackArchive.MarkerTrack
XCTAssertNotNil(track1)
let track1event1 = track1?.events[safe: 0] as? Cubase.TrackArchive.Marker
XCTAssertEqual(track1event1?.startTimecode.stringValue, "01:00:02:00")
let track1event2 = track1?.events[safe: 1] as? Cubase.TrackArchive.CycleMarker
XCTAssertEqual(track1event2?.startTimecode.stringValue, "01:00:04:00")
let track1event3 = track1?.events[safe: 2] as? Cubase.TrackArchive.Marker
XCTAssertEqual(track1event3?.startTimecode.stringValue, "01:00:09:18")
let track1event4 = track1?.events[safe: 3] as? Cubase.TrackArchive.CycleMarker
XCTAssertEqual(track1event4?.startTimecode.stringValue, "01:00:11:06")
let track1event5 = track1?.events[safe: 4] as? Cubase.TrackArchive.Marker
XCTAssertEqual(track1event5?.startTimecode.stringValue, "01:00:16:05")
let track1event6 = track1?.events[safe: 5] as? Cubase.TrackArchive.CycleMarker
XCTAssertEqual(track1event6?.startTimecode.stringValue, "01:00:17:29")
#warning(
"> TODO: these four asserts are correct, but will fail for now until tempo ramp events are implemented"
)
let track1event7 = track1?.events[safe: 6] as? Cubase.TrackArchive.Marker
// XCTAssertEqual(track1event7?.startTimecode.stringValue, "01:00:26:02")
_ = track1event7 // silence warning
let track1event8 = track1?.events[safe: 7] as? Cubase.TrackArchive.Marker
// XCTAssertEqual(track1event8?.startTimecode.stringValue, "01:00:29:09")
_ = track1event8 // silence warning
let track1event9 = track1?.events[safe: 8] as? Cubase.TrackArchive.Marker
// XCTAssertEqual(track1event9?.startTimecode.stringValue, "01:00:31:24")
_ = track1event9 // silence warning
let track1event10 = track1?.events[safe: 9] as? Cubase.TrackArchive.Marker
// XCTAssertEqual(track1event10?.startTimecode.stringValue, "01:50:25:07")
_ = track1event10 // silence warning
// track 2 - linear mode
let track2 = trackArchive.tracks?[1] as? Cubase.TrackArchive.MarkerTrack
XCTAssertNotNil(track2)
let track2event1 = track2?.events[safe: 0] as? Cubase.TrackArchive.Marker
XCTAssertEqual(track2event1?.startTimecode.stringValue, "01:00:02:00")
let track2event2 = track2?.events[safe: 1] as? Cubase.TrackArchive.CycleMarker
XCTAssertEqual(track2event2?.startTimecode.stringValue, "01:00:04:00")
let track2event3 = track2?.events[safe: 2] as? Cubase.TrackArchive.Marker
XCTAssertEqual(track2event3?.startTimecode.stringValue, "01:00:09:18")
let track2event4 = track2?.events[safe: 3] as? Cubase.TrackArchive.CycleMarker
XCTAssertEqual(track2event4?.startTimecode.stringValue, "01:00:11:06")
let track2event5 = track2?.events[safe: 4] as? Cubase.TrackArchive.Marker
XCTAssertEqual(track2event5?.startTimecode.stringValue, "01:00:16:05")
let track2event6 = track2?.events[safe: 5] as? Cubase.TrackArchive.CycleMarker
XCTAssertEqual(track2event6?.startTimecode.stringValue, "01:00:17:29")
let track2event7 = track2?.events[safe: 6] as? Cubase.TrackArchive.Marker
XCTAssertEqual(track2event7?.startTimecode.stringValue, "01:00:26:02")
let track2event8 = track2?.events[safe: 7] as? Cubase.TrackArchive.Marker
XCTAssertEqual(track2event8?.startTimecode.stringValue, "01:00:29:09")
let track2event9 = track2?.events[safe: 8] as? Cubase.TrackArchive.Marker
XCTAssertEqual(track2event9?.startTimecode.stringValue, "01:00:31:24")
let track2event10 = track2?.events[safe: 9] as? Cubase.TrackArchive.Marker
XCTAssertEqual(track2event10?.startTimecode.stringValue, "01:50:25:07")
}
}
#endif