public void Test() { using (IMusicSession ms = MusicSessionImpl.GetSession(_SK.Builder)) { Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); IMusicImporter imi = ms.GetDBImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(25)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); //World_Saxophone_Quartet-Steppin_With _SK.Settings.RarFileManagement.RarZipFileAfterSuccessfullExtract = CompleteFileBehaviour.Delete; string rarpath = Path.Combine(DirectoryIn, "a.rar"); Assert.That(File.Exists(rarpath), Is.True); IFilesImporterBuilder imi2 = ms.GetImporterBuilder(MusicImportType.Compressed) as IFilesImporterBuilder; Assert.That(imi2, Is.Not.Null); imi2.Files = new string[] { rarpath }; Assert.That(imi2.IsValid, Is.True); imi = imi2.BuildImporter(); ImportExportError error=null; WPFSynchroneousImportProgess ip = new WPFSynchroneousImportProgess((e) => { error = e; }, null); //imi.Error += (o, e) => error = e; imi.Load(ip); if (error != null) { Console.WriteLine(error); if (error is NotEnougthSpace) { Assert.Ignore("Not Enougth Disk space. Omitting."); } else { Assert.That(false); } } Assert.That(File.Exists(rarpath), Is.False); Assert.That(ms.AllAlbums.Count, Is.EqualTo(1)); CueSheet cs = new CueSheet(Path.Combine(DirectoryIn, "a.cue")); AssertAlbum(ms.AllAlbums[0], cs, AlbumDescriptorCompareMode.AlbumandTrackMD); AssertAlbum(ms.AllAlbums[0], Albums[0][0], AlbumDescriptorCompareMode.AlbumandTrackMD); } }
public void Test() { using (IMusicSession ms = MusicSessionImpl.GetSession(_SK.Builder)) { Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); IMusicImporter imi = ms.GetDBImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(25)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); foreach (IGenre genreso in ms.AllGenres) { genreso.Albums.Should().BeEmpty(); foreach (IGenre genresm in ms.AllGenres) { int res = genreso.Compare(genresm); Console.WriteLine("{0} Compare to {1}: {2}", genreso, genresm, res); if (genreso == genresm) { Assert.That(res, Is.EqualTo(0)); } } } IGenre monde = ms.AllGenres.FirstOrDefault(g => g.Name == "Monde"); monde.Should().NotBeNull(); monde.SubGenres.Should().NotBeEmpty(); foreach (IGenre sub in monde.SubGenres) { sub.Father.Should().Be(monde); sub.Compare(monde).Should().NotBe(int.MaxValue); } Console.WriteLine("Importing Music Folder"); IDirectoryImporterBuilder imib = ms.GetImporterBuilder(MusicImportType.Directory) as IDirectoryImporterBuilder; Assert.That(imib, Is.Not.Null); imib.Directory = DirectoryIn; imib.DefaultAlbumMaturity = AlbumMaturity.Discover; Assert.That(imib.IsValid, Is.True); imi = imib.BuildImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); Assert.That(ms.AllAlbums.Count, Is.EqualTo(5)); Assert.That(ms.AllGenres.Count, Is.EqualTo(25)); Assert.That(ms.AllArtists.Count, Is.EqualTo(12)); AssertEnumerable(from a in ms.AllAlbums select a.Name, from a in OldAlbums[0] select a.Name, n => n); AssertEnumerable(from a in ms.AllAlbums select (a.Genre), from a in OldAlbums[0] select a.Genre, n => n); AssertEnumerable(from a in ms.AllAlbums select a.Year, from a in OldAlbums[0] select a.Year, n => n); AssertAlbums(ms, OldAlbums[0], AlbumDescriptorCompareMode.AlbumMD); AssertAlbums(ms, OldAlbums[0], AlbumDescriptorCompareMode.AlbumandTrackMD); Console.WriteLine("Import Successful 5 Albums"); } using (IMusicSession ms = MusicSessionImpl.GetSession(_SK.Builder)) { Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); Console.WriteLine("Cheking Persistency"); IMusicImporter imi = ms.GetDBImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); Assert.That(ms.AllAlbums.Count, Is.EqualTo(5)); Assert.That(ms.AllGenres.Count, Is.EqualTo(25)); Assert.That(ms.AllArtists.Count, Is.EqualTo(12)); AssertEnumerable(from a in ms.AllAlbums select a.Name, from a in OldAlbums[0] select a.Name, n => n); AssertEnumerable(from a in ms.AllAlbums select (a.Genre), from a in OldAlbums[0] select a.Genre, n => n); AssertEnumerable(from a in ms.AllAlbums select a.Year, from a in OldAlbums[0] select a.Year, n => n); AssertAlbums(ms, OldAlbums[0], AlbumDescriptorCompareMode.AlbumandTrackMD); IAlbum res = ms.AllAlbums.FirstOrDefault(a => a.Name == OldAlbums[0][0].Name); Assert.That(res, Is.Not.Null); ITrack tr = res.Tracks[0]; Assert.That(tr, Is.Not.Null); Assert.That(tr.Rating, Is.EqualTo(0)); tr.Rating = 5; Assert.That(tr.Rating, Is.EqualTo(5)); Console.WriteLine("Albums restored"); } using (IMusicSession ms = MusicSessionImpl.GetSession(_SK.Builder)) { Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); Console.WriteLine("Cheking Persistency"); IMusicImporter imi = ms.GetDBImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); Assert.That(ms.AllAlbums.Count, Is.EqualTo(5)); Assert.That(ms.AllGenres.Count, Is.EqualTo(25)); Assert.That(ms.AllArtists.Count, Is.EqualTo(12)); AssertAlbums(ms, OldAlbums[0], AlbumDescriptorCompareMode.AlbumandTrackMD); AlbumCollection ac = (ms as IInternalMusicSession).Albums; IEnumerable<MatchAlbum> res0 = ac.FindAlbums(OldAlbums[0][0]); Assert.That(res0.Any(), Is.True); MatchAlbum ma = res0.First(); Assert.That(ma, Is.Not.Null); Assert.That(ma.Way, Is.EqualTo(FindWay.ByName)); Assert.That(ma.Precision, Is.EqualTo(MatchPrecision.Exact)); IAlbum res = ms.AllAlbums.FirstOrDefault(a => a.Name == OldAlbums[0][0].Name); Assert.That(res, Is.EqualTo(ma.FindItem)); Assert.That(res, Is.Not.Null); ITrack tr = res.Tracks[0]; Assert.That(tr.Rating, Is.EqualTo(5)); IModifiableAlbum ima = res.GetModifiableAlbum(); ima.Artists.Clear(); ima.Artists.Add(ms.CreateArtist("C")); //ima.Author = "C"; ima.Name = "C"; Assert.That(res.Name, Is.Not.EqualTo("C")); Assert.That(res.Author, Is.Not.EqualTo("C")); ima.Commit(); Assert.That(res.Name, Is.EqualTo("C")); Assert.That(res.Author, Is.EqualTo("C")); res0 = ac.FindAlbums(OldAlbums[0][0]); Assert.That(res0.Any(), Is.False); res0 = ac.FindAlbums(OldAlbums[1][0]); Assert.That(res0.Any(), Is.True); ma = res0.First(); Assert.That(ma, Is.Not.Null); Assert.That(ma.Way, Is.EqualTo(FindWay.ByName)); Assert.That(ma.Precision, Is.EqualTo(MatchPrecision.Exact)); Assert.That(res, Is.EqualTo(ma.FindItem)); AssertAlbums(ms, OldAlbums[1], AlbumDescriptorCompareMode.AlbumandTrackMD); ms.AllAlbums.ShouldBeCoherentWithAlbums(OldAlbums[1]); Console.WriteLine("Albums restored"); } using (IMusicSession ms = MusicSessionImpl.GetSession(_SK.Builder)) { Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); Console.WriteLine("Cheking Persistency"); IMusicImporter imi = ms.GetDBImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); AssertAlbums(ms, OldAlbums[1], AlbumDescriptorCompareMode.AlbumandTrackMD); Assert.That(ms.AllAlbums.Count, Is.EqualTo(5)); Assert.That(ms.AllGenres.Count, Is.EqualTo(25)); Assert.That(ms.AllArtists.Count, Is.EqualTo(10)); AlbumCollection ac = (ms as IInternalMusicSession).Albums; IEnumerable<MatchAlbum> res0 = ac.FindAlbums(OldAlbums[0][1]); Assert.That(res0.Any(), Is.True); MatchAlbum ma = res0.First(); Assert.That(ma, Is.Not.Null); Assert.That(ma.Way, Is.EqualTo(FindWay.ByName)); Assert.That(ma.Precision, Is.EqualTo(MatchPrecision.Exact)); res0 = ac.FindAlbums(OldAlbums[1][0]); Assert.That(res0.Any(), Is.True); MatchAlbum ma2 = res0.First(); Assert.That(ma2, Is.Not.Null); Assert.That(ma2.Way, Is.EqualTo(FindWay.ByName)); Assert.That(ma2.Precision, Is.EqualTo(MatchPrecision.Exact)); Assert.That(ma2.FindItem.Name, Is.EqualTo("C")); Assert.That(ma2.FindItem.Author, Is.EqualTo("C")); IAlbum album = ma2.FindItem; Assert.That(album.Tracks.Count, Is.EqualTo(1)); IModifiableAlbum ima = (ma.FindItem as IAlbum).GetModifiableAlbum(); //SmartEventListener sel = new SmartEventListener(); //sel.SetExpectation(new OtherAlbumConfirmationNeededEventArgs(album), a => a.Continue = true); //ima.Error += sel.Listener; bool called = false; WPFSynchroneProgress<ImportExportError> Prog = new WPFSynchroneProgress<ImportExportError> ( (ie) => { OtherAlbumConfirmationNeededEventArgs conf = ie as OtherAlbumConfirmationNeededEventArgs; conf.Continue = true; called = true; } ); ima.Artists.Clear(); ima.Artists.Add(ms.CreateArtist("C")); ima.Name = "C"; Assert.That(ma.FindItem.Name, Is.Not.EqualTo("C")); Assert.That(ma.FindItem.Author, Is.Not.EqualTo("C")); ima.Commit(Prog); called.Should().BeTrue(); Assert.That((ma.FindItem as IObjectState).State, Is.EqualTo(ObjectState.Removed)); Assert.That(ms.AllAlbums.Count, Is.EqualTo(4)); //Assert.That(sel.IsOk, Is.True); ma2 = res0.First(); Assert.That(ma2, Is.Not.Null); Assert.That(ma2.Way, Is.EqualTo(FindWay.ByName)); Assert.That(ma2.Precision, Is.EqualTo(MatchPrecision.Exact)); Assert.That(ma2.FindItem.Name, Is.EqualTo("C")); Assert.That(ma2.FindItem.Author, Is.EqualTo("C")); album = ma2.FindItem; Assert.That(album.Tracks.Count, Is.EqualTo(2)); AssertAlbums(ms, OldAlbums[2], AlbumDescriptorCompareMode.AlbumandTrackMD); ms.AllAlbums.ShouldBeCoherentWithAlbums(OldAlbums[2]); Console.WriteLine("Albums restored"); } string toberemovedlater; using (IMusicSession ms = MusicSessionImpl.GetSession(_SK.Builder)) { Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); Console.WriteLine("Cheking Persistency"); IMusicImporter imi = ms.GetDBImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); AssertAlbums(ms, OldAlbums[2], AlbumDescriptorCompareMode.AlbumandTrackMD); AlbumCollection ac = (ms as IInternalMusicSession).Albums; IEnumerable<MatchAlbum> res0 = ac.FindAlbums(OldAlbums[2][1]); Assert.That(res0.Any(), Is.True); MatchAlbum ma2 = res0.First(); Assert.That(ma2, Is.Not.Null); Assert.That(ma2.Way, Is.EqualTo(FindWay.ByName)); Assert.That(ma2.Precision, Is.EqualTo(MatchPrecision.Exact)); toberemovedlater = ma2.FindItem.Tracks[0].Path; Assert.That(File.Exists(toberemovedlater), Is.True); _SK.Settings.CollectionFileSettings.DeleteRemovedFile = BasicBehaviour.No; IMusicRemover imr = ms.GetMusicRemover(); Assert.That(imr, Is.Not.Null); imr.AlbumtoRemove.Add(ma2.FindItem); imr.Comit(); Assert.That((ma2.FindItem as IObjectState).State, Is.EqualTo(ObjectState.Removed)); Assert.That(File.Exists(toberemovedlater), Is.True); AssertAlbums(ms, OldAlbums[3], AlbumDescriptorCompareMode.AlbumandTrackMD); Console.WriteLine("Reimport Files"); IDirectoryImporterBuilder imib = ms.GetImporterBuilder(MusicImportType.Directory) as IDirectoryImporterBuilder; Assert.That(imib, Is.Not.Null); imib.Directory = DirectoryIn; imib.DefaultAlbumMaturity = AlbumMaturity.Discover; Assert.That(imib.IsValid, Is.True); imi = imib.BuildImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); Console.WriteLine("check that files correctly re-imported"); AssertAlbums(ms, OldAlbums[2], AlbumDescriptorCompareMode.AlbumandTrackMD); Console.WriteLine("remove again"); ac = (ms as IInternalMusicSession).Albums; res0 = ac.FindAlbums(OldAlbums[2][1]); Assert.That(res0.Any(), Is.True); ma2 = res0.First(); Assert.That(ma2, Is.Not.Null); Assert.That(ma2.Way, Is.EqualTo(FindWay.ByName)); Assert.That(ma2.Precision, Is.EqualTo(MatchPrecision.Exact)); toberemovedlater = ma2.FindItem.Tracks[0].Path; Assert.That(File.Exists(toberemovedlater), Is.True); _SK.Settings.CollectionFileSettings.DeleteRemovedFile = BasicBehaviour.No; imr = ms.GetMusicRemover(); Assert.That(imr, Is.Not.Null); imr.AlbumtoRemove.Add(ma2.FindItem); imr.Comit(); Assert.That((ma2.FindItem as IObjectState).State, Is.EqualTo(ObjectState.Removed)); Assert.That(File.Exists(toberemovedlater), Is.True); AssertAlbums(ms, OldAlbums[3], AlbumDescriptorCompareMode.AlbumandTrackMD); } using (IMusicSession ms = MusicSessionImpl.GetSession(_SK.Builder)) { Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); Console.WriteLine("Cheking Persistency"); IMusicImporter imi = ms.GetDBImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); AssertAlbums(ms, OldAlbums[3], AlbumDescriptorCompareMode.AlbumandTrackMD); AlbumCollection ac = (ms as IInternalMusicSession).Albums; IEnumerable<MatchAlbum> res0 = ac.FindAlbums(OldAlbums[3][1]); Assert.That(res0.Any(), Is.True); MatchAlbum ma2 = res0.First(); Assert.That(ma2, Is.Not.Null); Assert.That(ma2.Way, Is.EqualTo(FindWay.ByName)); Assert.That(ma2.Precision, Is.EqualTo(MatchPrecision.Exact)); string ipath = ma2.FindItem.Tracks[0].Path; Assert.That(File.Exists(ipath), Is.True); _SK.Settings.CollectionFileSettings.DeleteRemovedFile = BasicBehaviour.Yes; IMusicRemover imr = ms.GetMusicRemover(); Assert.That(imr, Is.Not.Null); imr.AlbumtoRemove.Add(ma2.FindItem); imr.Comit(); Assert.That((ma2.FindItem as IObjectState).State, Is.EqualTo(ObjectState.Removed)); Assert.That(File.Exists(ipath), Is.False); AssertAlbums(ms, OldAlbums[4], AlbumDescriptorCompareMode.AlbumandTrackMD); } using (IMusicSession ms = MusicSessionImpl.GetSession(_SK.Builder)) { Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); Console.WriteLine("Cheking Persistency"); IMusicImporter imi = ms.GetDBImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); AssertAlbums(ms, OldAlbums[4], AlbumDescriptorCompareMode.AlbumandTrackMD); AlbumCollection ac = (ms as IInternalMusicSession).Albums; IEnumerable<MatchAlbum> res0 = ac.FindAlbums(OldAlbums[4][0]); Assert.That(res0.Any(), Is.True); MatchAlbum ma2 = res0.First(); Assert.That(ma2, Is.Not.Null); Assert.That(ma2.Way, Is.EqualTo(FindWay.ByName)); Assert.That(ma2.Precision, Is.EqualTo(MatchPrecision.Exact)); res0 = ac.FindAlbums(OldAlbums[4][1]); Assert.That(res0.Any(), Is.True); MatchAlbum ma3 = res0.First(); Assert.That(ma3, Is.Not.Null); Assert.That(ma3.Way, Is.EqualTo(FindWay.ByName)); Assert.That(ma3.Precision, Is.EqualTo(MatchPrecision.Exact)); Album al = ma3.FindItem; IModifiableAlbum ima = (ma2.FindItem as IAlbum).GetModifiableAlbum(); ima.MergeFromMetaData(OldAlbums[4][1], ms.Strategy.OnlyIfDummy); ima.Commit(); AssertAlbums(ms, OldAlbums[4], AlbumDescriptorCompareMode.AlbumandTrackMD); ima = (ma2.FindItem as IAlbum).GetModifiableAlbum(); ima.MergeFromMetaData(OldAlbums[4][1], ms.Strategy.Get(IndividualMergeStategy.Always, IndividualMergeStategy.Always, IndividualMergeStategy.Always)); bool called = false; WPFSynchroneProgress<ImportExportError> Prog = new WPFSynchroneProgress<ImportExportError> ( (ie) => { OtherAlbumConfirmationNeededEventArgs conf = ie as OtherAlbumConfirmationNeededEventArgs; conf.Continue = true; called = true; } ); //SmartEventListener sel = new SmartEventListener(); //sel.SetExpectation(new OtherAlbumConfirmationNeededEventArgs(al), a => a.Continue = true); //ima.Error += sel.Listener; ima.Commit(Prog); called.Should().BeTrue(); AssertAlbums(ms, OldAlbums[5], AlbumDescriptorCompareMode.AlbumandTrackMD); ms.AllAlbums.ShouldBeCoherentWithAlbums(OldAlbums[5]); } using (IMusicSession ms = MusicSessionImpl.GetSession(_SK.Builder)) { Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); Console.WriteLine("Cheking Persistency"); IMusicImporter imi = ms.GetDBImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); AssertAlbums(ms, OldAlbums[5], AlbumDescriptorCompareMode.AlbumandTrackMD); _SK.Settings.CollectionFileSettings.DeleteRemovedFile = BasicBehaviour.No; IMusicRemover imr = ms.GetMusicRemover(); Assert.That(imr, Is.Not.Null); imr.AlbumtoRemove.AddCollection(ms.AllAlbums); imr.Comit(); Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); } File.Delete(toberemovedlater); using (IMusicSession ms = MusicSessionImpl.GetSession(_SK.Builder)) { Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllGenres.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); Console.WriteLine("Cheking Persistency"); IMusicImporter imi = ms.GetDBImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); Assert.That(ms.AllAlbums.Count, Is.EqualTo(0)); Assert.That(ms.AllArtists.Count, Is.EqualTo(0)); Console.WriteLine("Importing Music Folder"); IDirectoryImporterBuilder imib = ms.GetImporterBuilder(MusicImportType.Directory) as IDirectoryImporterBuilder; Assert.That(imib, Is.Not.Null); imib.Directory = DirectoryIn; imib.DefaultAlbumMaturity = AlbumMaturity.Discover; Assert.That(imib.IsValid, Is.True); imi = imib.BuildImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); AssertAlbums(ms, OldAlbums[5], AlbumDescriptorCompareMode.AlbumandTrackMD); Console.WriteLine("Testing track remover"); ITrack wbrd = ms.AllTracks.Where(tr => tr.Name == "One To Grow On").FirstOrDefault(); Assert.That(wbrd, Is.Not.Null); IMusicRemover imr = ms.GetMusicRemover(); imr.IncludePhysicalRemove = false; imr.TrackRemove.Add(wbrd); Assert.That(imr.TrackRemove.Count, Is.EqualTo(1)); imr.Comit(); Assert.That(wbrd.State, Is.EqualTo(ObjectState.Removed)); string mp = wbrd.Path; Assert.That(File.Exists(mp), Is.True); AssertAlbums(ms, OldAlbums[6], AlbumDescriptorCompareMode.AlbumandTrackMD); Assert.That(ms.AllTracks.Count, Is.EqualTo(2)); Console.WriteLine("Testing re-import"); imib = ms.GetImporterBuilder(MusicImportType.Directory) as IDirectoryImporterBuilder; Assert.That(imib, Is.Not.Null); imib.Directory = DirectoryIn; imib.DefaultAlbumMaturity = AlbumMaturity.Discover; Assert.That(imib.IsValid, Is.True); imi = imib.BuildImporter(); Assert.That(imi, Is.Not.Null); Action<ImportExportError> Continue = (e) => { OtherAlbumsConfirmationNeededEventArgs oa = e as OtherAlbumsConfirmationNeededEventArgs; if (oa != null) oa.Continue = true; }; WPFSynchroneousImportProgess ip = new WPFSynchroneousImportProgess(Continue, null); //imi.Error += ImportError; imi.Load(ip); //imi.Error -= ImportError; AssertAlbums(ms, OldAlbums[5], AlbumDescriptorCompareMode.AlbumandTrackMD); wbrd = ms.AllTracks.Where(tr => tr.Name == "One To Grow On").FirstOrDefault(); Assert.That(wbrd, Is.Not.Null); Track twbrd = wbrd as Track; string newDir = TempDirectoryIn; //Path.Combine(_SK.InPath, MYIn, "TempDir"); //Directory.CreateDirectory(newDir); string oldpath = wbrd.Path; IInternalMusicSession mss = ms as IInternalMusicSession; using (IImportContext Context = mss.GetNewSessionContext()) { using (IMusicTransaction imut = Context.CreateTransaction()) { Context.AddForUpdate(twbrd); //IMaturityUserSettings imm = Context.MaturityUserSettings; bool OK = twbrd.ReRoot(newDir, Context); imut.Commit(); } } string newpath = wbrd.Path; AssertAlbums(ms, OldAlbums[5], AlbumDescriptorCompareMode.AlbumandTrackMD); Assert.That(File.Exists(oldpath),Is.False); Assert.That(newpath.StartsWith(newDir), Is.False); DirectoryInfo di = new DirectoryInfo(newDir); FileInfo[] fis=di.GetFiles(); Assert.That(fis, Is.Not.Null); Assert.That(fis.Length, Is.EqualTo(1)); FileInfo fis0 = fis[0]; Assert.That(fis0, Is.Not.Null); Assert.That(fis0.FullName.ToLower(), Is.EqualTo(newpath)); } }
public void TestRollBack() { IDirectoryImporterBuilder imib = _MS.GetImporterBuilder(MusicImportType.Directory) as IDirectoryImporterBuilder; Assert.That(imib, Is.Not.Null); imib.Directory = this._MainDirectory; imib.DefaultAlbumMaturity = AlbumMaturity.Discover; Assert.That(imib.IsValid, Is.True); IMusicImporter imi = imib.BuildImporter(); Assert.That(imi, Is.Not.Null); imi.Load(); AssertAlbums(_MS, OldAlbums[7], AlbumDescriptorCompareMode.AlbumandTrackMD); IAlbum ia = _MS.AllAlbums.Where(al => al.Name == "Live - Instal Glasgow - 2006").FirstOrDefault(); Assert.That(ia, Is.Not.Null); IModifiableAlbum ima = ia.GetModifiableAlbum(); ima.Artists.Clear(); ima.Artists.Add(_MS.CreateArtist( "Greg Kelley")); ima.Commit(); AssertAlbums(_MS, OldAlbums[8], AlbumDescriptorCompareMode.AlbumandTrackMD); _MS.AllAlbums.ShouldBeCoherentWithAlbums(OldAlbums[8]); IArtist ar = _MS.AllArtists.Where(art => art.Name == "Greg Kelley").FirstOrDefault(); Assert.That(ar, Is.Not.Null); Assert.That(ar.Albums.Count, Is.EqualTo(1)); Assert.That(_MS.AllArtists.Count, Is.EqualTo(8)); //Prep End DummyBufferType.IsOK = false;//needs to fails imib = _MS.GetImporterBuilder(MusicImportType.Directory) as IDirectoryImporterBuilder; Assert.That(imib, Is.Not.Null); imib.Directory = this._AddDirectory; imib.DefaultAlbumMaturity = AlbumMaturity.Discover; Assert.That(imib.IsValid, Is.True); imi = imib.BuildImporter(); Assert.That(imi, Is.Not.Null); ImportExportError error = null; WPFSynchroneousImportProgess ip = new WPFSynchroneousImportProgess((e) => error = e, null); //imi.Error += (o, e) => error = e; imi.Load(ip); Assert.That(error, Is.Not.Null); ar = _MS.AllArtists.Where(art => art.Name == "Tatsuya Nakatani").FirstOrDefault(); Assert.That(ar, Is.Null); //Tatsuya Nakatani AssertAlbums(_MS, OldAlbums[8], AlbumDescriptorCompareMode.AlbumandTrackMD); Assert.That(_MS.AllArtists.Count, Is.EqualTo(8)); Assert.That(error is UnknowError, Is.True); //import will be ok DummyBufferType.IsOK = true; imib = _MS.GetImporterBuilder(MusicImportType.Directory) as IDirectoryImporterBuilder; Assert.That(imib, Is.Not.Null); imib.Directory = this._AddDirectory; imib.DefaultAlbumMaturity = AlbumMaturity.Discover; Assert.That(imib.IsValid, Is.True); imi = imib.BuildImporter(); Assert.That(imi, Is.Not.Null); error = null; //imi.Error += (o, e) => error = e; imi.Load(ip); Assert.That(error, Is.Null); AssertAlbums(_MS, OldAlbums[9], AlbumDescriptorCompareMode.AlbumandTrackMD); Assert.That(_MS.AllArtists.Count, Is.EqualTo(10)); ar = _MS.AllArtists.Where(art => art.Name == "Tatsuya Nakatani").FirstOrDefault(); Assert.That(ar, Is.Not.Null); }
private async Task DoExport(IAlbum ialls) { if (ialls == null) return; var alls = GetContextual(ialls); Exporter exp = new Exporter(_IMusicSession, alls); this.Window.CreateFromViewModel(exp).ShowDialog(); IMusicExporter res = exp.MusicExporter; if (res != null) { WPFSynchroneousImportProgess ImportProgess = new WPFSynchroneousImportProgess(OnImportError, ProgressExport); await res.ExportAsync(ImportProgess); } }
private async Task DoImportAsync(IMusicImporter IMu) { if (IMu == null) return; WPFSynchroneousImportProgess ImportProgess = new WPFSynchroneousImportProgess(OnImportError, OnImportProgress); await _ImporterCollection.Import(IMu, ImportProgess); }
private async Task DoiPodSynchro() { IItunesExporter itte = _IMusicSession.GetExporterFactory().FromType(MusicExportType.iTunes) as IItunesExporter; InfoQuestionViewModel question = new InfoQuestionViewModel() { Title = "Confirm to synchronize iTunes with MusicCollection", Question = "Delete broken iTunes file?", Answer = null }; IWindow w = this.Window.CreateFromViewModel(question); if (w.ShowDialog() == false) return; WPFSynchroneousImportProgess ImportProgess = new WPFSynchroneousImportProgess(OnImportError, Progress); await itte.SynchronizeAsync(question.Answer.Value, ImportProgess); }