@@ -782,7 +782,7 @@ public void NoteCallback_MoveBack_BeyondPlaybackStart()
782782
783783 [ Retry ( RetriesNumber ) ]
784784 [ Test ]
785- public void NoteCallback_MoveToTime ( )
785+ public void NoteCallback_MoveToTime_1 ( )
786786 {
787787 var lastEventTime = TimeSpan . FromMilliseconds ( 2000 ) ;
788788
@@ -850,6 +850,61 @@ public void NoteCallback_MoveToTime()
850850 } ) ;
851851 }
852852
853+ [ Retry ( RetriesNumber ) ]
854+ [ Test ]
855+ public void NoteCallback_MoveToTime_2 ( )
856+ {
857+ var firstNoteTime = TimeSpan . FromMilliseconds ( 0 ) ;
858+ var firstNoteLength = TimeSpan . FromMilliseconds ( 600 ) ;
859+
860+ var secondNoteTime = TimeSpan . FromMilliseconds ( 700 ) ;
861+ var secondNoteLength = TimeSpan . FromMilliseconds ( 600 ) ;
862+
863+ var moveFrom = TimeSpan . FromMilliseconds ( 300 ) ;
864+ var moveTo = TimeSpan . FromMilliseconds ( 1000 ) ;
865+
866+ var originalNote1 = new Note ( ( SevenBitNumber ) 0 ) { Velocity = SevenBitNumber . MinValue }
867+ . SetTime ( ( MetricTimeSpan ) firstNoteTime , TempoMap )
868+ . SetLength ( ( MetricTimeSpan ) firstNoteLength , TempoMap ) ;
869+
870+ var note1 = ( Note ) originalNote1 . Clone ( ) ;
871+ note1 . NoteNumber += TransposeBy ;
872+
873+ var originalNote2 = new Note ( ( SevenBitNumber ) 20 ) { Velocity = SevenBitNumber . MinValue }
874+ . SetTime ( ( MetricTimeSpan ) secondNoteTime , TempoMap )
875+ . SetLength ( ( MetricTimeSpan ) secondNoteLength , TempoMap ) ;
876+
877+ var note2 = ( Note ) originalNote2 . Clone ( ) ;
878+ note2 . NoteNumber += TransposeBy ;
879+
880+ CheckNoteCallback (
881+ initialPlaybackObjects : new [ ]
882+ {
883+ originalNote1 ,
884+ originalNote2 ,
885+ } ,
886+ actions : new [ ]
887+ {
888+ new PlaybackAction ( moveFrom , p =>
889+ p . MoveToTime ( ( MetricTimeSpan ) moveTo ) ) ,
890+ } ,
891+ expectedReceivedEvents : new [ ]
892+ {
893+ new SentReceivedEvent ( new NoteOnEvent ( TransposeBy , SevenBitNumber . MinValue ) , TimeSpan . Zero ) ,
894+ new SentReceivedEvent ( new NoteOffEvent ( TransposeBy , SevenBitNumber . MinValue ) , moveFrom ) ,
895+ new SentReceivedEvent ( new NoteOnEvent ( ( SevenBitNumber ) ( TransposeBy + 20 ) , SevenBitNumber . MinValue ) , moveFrom ) ,
896+ new SentReceivedEvent ( new NoteOffEvent ( ( SevenBitNumber ) ( TransposeBy + 20 ) , SevenBitNumber . MinValue ) , moveFrom + secondNoteTime + secondNoteLength - moveTo ) ,
897+ } ,
898+ expectedNotesEvents : new [ ]
899+ {
900+ ( EventType . Started , note1 , originalNote1 , true ) ,
901+ ( EventType . Finished , note1 , originalNote1 , true ) ,
902+ ( EventType . Started , note2 , originalNote2 , true ) ,
903+ ( EventType . Finished , note2 , originalNote2 , true ) ,
904+ } ,
905+ setupPlayback : playback => playback . NoteCallback = NoteCallback ) ;
906+ }
907+
853908 [ Retry ( RetriesNumber ) ]
854909 [ Test ]
855910 public void NoteCallback_MoveToTime_BeyondDuration ( )
0 commit comments