1515//<http: //www.gnu.org/licenses />.
1616using AudioCuesheetEditor . Data . Options ;
1717using AudioCuesheetEditor . Extensions ;
18+ using AudioCuesheetEditor . Model . AudioCuesheet ;
1819using AudioCuesheetEditor . Model . Entity ;
1920using AudioCuesheetEditor . Model . IO . Audio ;
2021using AudioCuesheetEditor . Model . IO . Import ;
2122using AudioCuesheetEditor . Model . Options ;
2223using AudioCuesheetEditor . Model . UI ;
2324using AudioCuesheetEditor . Services . IO ;
24- using AudioCuesheetEditorTests . Properties ;
25- using AudioCuesheetEditorTests . Utility ;
25+ using AudioCuesheetEditor . Tests . Properties ;
26+ using AudioCuesheetEditor . Tests . Utility ;
2627using Microsoft . VisualStudio . TestTools . UnitTesting ;
2728using Moq ;
2829using System ;
2930using System . Collections . Generic ;
3031using System . IO ;
3132using System . Linq ;
33+ using System . Threading ;
3234using System . Threading . Tasks ;
3335
34- namespace AudioCuesheetEditor . Model . AudioCuesheet . Tests
36+ namespace AudioCuesheetEditor . Tests . Model . AudioCuesheet
3537{
3638 [ TestClass ( ) ]
3739 public class CuesheetTests
@@ -41,15 +43,12 @@ public void AddTrackTest()
4143 {
4244 var testHelper = new TestHelper ( ) ;
4345 var cuesheet = new Cuesheet ( ) ;
44- var trackAddedFired = false ;
45- cuesheet . TrackAdded += delegate
46- {
47- trackAddedFired = true ;
48- } ;
46+ AutoResetEvent tracksAddedEvent = new ( false ) ;
47+ cuesheet . TracksAdded += ( object ? sender , TracksAddedRemovedEventArgs args ) => tracksAddedEvent . Set ( ) ;
4948 Assert . AreEqual ( cuesheet . Tracks . Count , 0 ) ;
5049 cuesheet . AddTrack ( new Track ( ) , testHelper . ApplicationOptions ) ;
5150 Assert . AreEqual ( cuesheet . Tracks . Count , 1 ) ;
52- Assert . IsTrue ( trackAddedFired ) ;
51+ Assert . IsTrue ( tracksAddedEvent . WaitOne ( 1000 ) ) ;
5352 }
5453
5554 [ TestMethod ( ) ]
@@ -221,7 +220,7 @@ public void MoveAndDeleteTrackTest()
221220 public async Task ImportTestAsync ( )
222221 {
223222 // Arrange
224- var fileContent = new List < String >
223+ var fileContent = new List < string >
225224 {
226225 "CuesheetArtist - CuesheetTitle c:\\ tmp\\ Testfile.mp3" ,
227226 "Sample Artist 1 - Sample Title 1 00:05:00" ,
@@ -271,7 +270,7 @@ public async Task ImportTestCalculateEndCorrectlyAsync()
271270 // Arrange
272271 var textImportMemoryStream = new MemoryStream ( Resources . Textimport_Bug_54 ) ;
273272 using var reader = new StreamReader ( textImportMemoryStream ) ;
274- List < String ? > lines = [ ] ;
273+ List < string ? > lines = [ ] ;
275274 while ( reader . EndOfStream == false )
276275 {
277276 lines . Add ( reader . ReadLine ( ) ) ;
@@ -320,11 +319,11 @@ public void RecordTest()
320319 cuesheet = new Cuesheet ( ) ;
321320 cuesheet . StartRecording ( ) ;
322321 track = new Track ( ) ;
323- testHelper . RecordOptions . RecordTimeSensitivity = Options . TimeSensitivityMode . Seconds ;
322+ testHelper . RecordOptions . RecordTimeSensitivity = TimeSensitivityMode . Seconds ;
324323 cuesheet . AddTrack ( track , testHelper . ApplicationOptions , testHelper . RecordOptions ) ;
325324 Assert . AreEqual ( TimeSpan . Zero , track . Begin ) ;
326325 Assert . IsNull ( track . End ) ;
327- System . Threading . Thread . Sleep ( 3000 ) ;
326+ Thread . Sleep ( 3000 ) ;
328327 track2 = new Track ( ) ;
329328 cuesheet . AddTrack ( track2 , testHelper . ApplicationOptions , testHelper . RecordOptions ) ;
330329 Assert . IsNotNull ( track . End ) ;
@@ -427,7 +426,9 @@ public void RemoveTrackTest()
427426 {
428427 var testHelper = new TestHelper ( ) ;
429428 testHelper . ApplicationOptions . LinkTracksWithPreviousOne = true ;
429+ AutoResetEvent tracksRemovedEvent = new ( false ) ;
430430 var cuesheet = new Cuesheet ( ) ;
431+ cuesheet . TracksRemoved += ( sender , trackAddRemoveEventArgs ) => tracksRemovedEvent . Set ( ) ;
431432 var track1 = new Track ( ) { Artist = "1" , Title = "1" } ;
432433 var track2 = new Track ( ) { Artist = "2" , Title = "2" } ;
433434 var track3 = new Track ( ) { Artist = "3" , Title = "3" } ;
@@ -445,12 +446,14 @@ public void RemoveTrackTest()
445446 track5 . End = new TimeSpan ( 0 , 25 , 0 ) ;
446447 Assert . AreEqual ( 5 , cuesheet . Tracks . Count ) ;
447448 cuesheet . RemoveTrack ( track2 ) ;
449+ Assert . AreEqual ( true , tracksRemovedEvent . WaitOne ( 1000 ) ) ;
448450 Assert . AreEqual ( ( uint ) 2 , track3 . Position ) ;
449451 Assert . AreEqual ( ( uint ) 3 , track4 . Position ) ;
450452 Assert . AreEqual ( ( uint ) 4 , track5 . Position ) ;
451453 testHelper = new TestHelper ( ) ;
452454 testHelper . ApplicationOptions . LinkTracksWithPreviousOne = true ;
453455 cuesheet = new Cuesheet ( ) ;
456+ cuesheet . TracksRemoved += ( sender , trackAddRemoveEventArgs ) => tracksRemovedEvent . Set ( ) ;
454457 track1 = new Track
455458 {
456459 Artist = "Track 1" ,
@@ -487,6 +490,7 @@ public void RemoveTrackTest()
487490 cuesheet . AddTrack ( track5 , testHelper . ApplicationOptions ) ;
488491 var list = new List < Track > ( ) { track2 , track4 } ;
489492 cuesheet . RemoveTracks ( list . AsReadOnly ( ) ) ;
493+ Assert . AreEqual ( true , tracksRemovedEvent . WaitOne ( 1000 ) ) ;
490494 Assert . AreEqual ( 3 , cuesheet . Tracks . Count ) ;
491495 Assert . AreEqual ( new TimeSpan ( 0 , 5 , 0 ) , track3 . Begin ) ;
492496 Assert . AreEqual ( new TimeSpan ( 0 , 15 , 0 ) , track5 . Begin ) ;
@@ -634,5 +638,35 @@ public void ValidateTest()
634638 cuesheet . Title = "Testtitle" ;
635639 Assert . AreEqual ( ValidationStatus . Success , cuesheet . Validate ( x => x . Title ) . Status ) ;
636640 }
641+
642+ [ TestMethod ( ) ]
643+ public void IsLinkedToPreviousTrack_ChangedLastTrackBegin_SetsTrackProperties ( )
644+ {
645+ //Arrange
646+ var applicationOptions = new ApplicationOptions ( )
647+ {
648+ LinkTracksWithPreviousOne = false
649+ } ;
650+ var cuesheet = new Cuesheet ( ) ;
651+ var track1 = new Track ( )
652+ {
653+ Artist = "Track1 Artist" ,
654+ Title = "Track1 Title"
655+ } ;
656+ var track2 = new Track ( )
657+ {
658+ Artist = "Track2 Artist" ,
659+ Title = "Track2 Title" ,
660+ End = new TimeSpan ( 0 , 9 , 12 )
661+ } ;
662+ cuesheet . AddTrack ( track1 , applicationOptions ) ;
663+ cuesheet . AddTrack ( track2 , applicationOptions ) ;
664+ track2 . Begin = new TimeSpan ( 0 , 4 , 23 ) ;
665+ //Act
666+ track2 . IsLinkedToPreviousTrack = true ;
667+ //Assert
668+ Assert . AreEqual ( ( uint ) 2 , track2 . Position ) ;
669+ Assert . AreEqual ( track2 . Begin , track1 . End ) ;
670+ }
637671 }
638672}
0 commit comments