@@ -9,17 +9,17 @@ class ParameterAutomationTests: XCTestCase {
99
1010 func observerTest( events: [ AutomationEvent ] ,
1111 sampleTime: Float64 ,
12- startTime: Float = 0 ) -> ( [ AUParameterAddress ] , [ AUValue ] , [ AUAudioFrameCount ] ) {
12+ startTime: Double = 0 ) -> ( [ AUParameterAddress ] , [ ( AUValue , AUEventSampleTime ) ] , [ AUAudioFrameCount ] ) {
1313
1414 let address = AUParameterAddress ( 42 )
1515
1616 var addresses : [ AUParameterAddress ] = [ ]
17- var values : [ AUValue ] = [ ]
17+ var values : [ ( AUValue , AUEventSampleTime ) ] = [ ]
1818 var durations : [ AUAudioFrameCount ] = [ ]
1919
2020 let scheduleParameterBlock : AUScheduleParameterBlock = { ( sampleTime, rampDuration, address, value) in
2121 addresses. append ( address)
22- values. append ( value)
22+ values. append ( ( value, sampleTime ) )
2323 durations. append ( rampDuration)
2424 }
2525
@@ -42,13 +42,25 @@ class ParameterAutomationTests: XCTestCase {
4242
4343 func testSimpleAutomation( ) throws {
4444
45- let events = [ AutomationEvent ( targetValue: 880 , startTime: 0 , rampDuration: 1.0 ) ]
45+ let events = [ AutomationEvent ( targetValue: 880 , startTime: 0 , rampDuration: 0 ) ]
4646
4747 let ( addresses, values, _) = observerTest ( events: events, sampleTime: 0 )
4848
4949 // order is: taper, skew, offset, value
5050 XCTAssertEqual ( addresses, [ 42 ] )
51- XCTAssertEqual ( values, [ 880.0 ] )
51+ XCTAssertEqual ( values. map ( \. 0 ) , [ 880.0 ] )
52+ }
53+
54+ func testSimpleAutomationWithBigValues( ) throws {
55+
56+ let events = [ AutomationEvent ( targetValue: 880 , startTime: 0 , rampDuration: 0 ) ]
57+
58+ let ( addresses, values, _) = observerTest ( events: events, sampleTime: 1000000000 , startTime: 1000000001 )
59+
60+ // order is: taper, skew, offset, value
61+ XCTAssertEqual ( addresses, [ 42 ] )
62+ XCTAssertEqual ( values. map ( \. 0 ) , [ 880.0 ] )
63+ XCTAssertEqual ( values. map ( \. 1 ) , [ 1 ] )
5264 }
5365
5466 func testPastAutomation( ) {
@@ -59,7 +71,7 @@ class ParameterAutomationTests: XCTestCase {
5971
6072 // If the automation is in the past, the value should be set to the final value.
6173 XCTAssertEqual ( addresses, [ 42 ] )
62- XCTAssertEqual ( values, [ 880.0 ] )
74+ XCTAssertEqual ( values. map ( \ . 0 ) , [ 880.0 ] )
6375 }
6476
6577 func testPastAutomationTwo( ) {
@@ -71,7 +83,7 @@ class ParameterAutomationTests: XCTestCase {
7183
7284 // If the automation is in the past, the value should be set to the final value.
7385 XCTAssertEqual ( addresses, [ 42 ] )
74- XCTAssertEqual ( values, [ 440.0 ] )
86+ XCTAssertEqual ( values. map ( \ . 0 ) , [ 440.0 ] )
7587
7688 }
7789
@@ -83,7 +95,7 @@ class ParameterAutomationTests: XCTestCase {
8395
8496 // If the automation is in the future, we should not get anything.
8597 XCTAssertEqual ( addresses, [ ] )
86- XCTAssertEqual ( values, [ ] )
98+ XCTAssertEqual ( values. map ( \ . 0 ) , [ ] )
8799 }
88100
89101 func testAutomationMiddle( ) {
@@ -95,7 +107,7 @@ class ParameterAutomationTests: XCTestCase {
95107 let ( addresses, values, durations) = observerTest ( events: events, sampleTime: 128 )
96108
97109 XCTAssertEqual ( addresses, [ 42 ] )
98- XCTAssertEqual ( values, [ 1.0 ] )
110+ XCTAssertEqual ( values. map ( \ . 0 ) , [ 1.0 ] )
99111 XCTAssertEqual ( durations, [ UInt32 ( 44100 - 128 ) ] )
100112 }
101113
0 commit comments