コード例 #1
0
        static void Main(string[] args)
        {
            var fileSystem = new FileSystem();
            var extensions =
                ((FileSystemConfigurationSection)ConfigurationManager.GetSection("fileSystem")).Extensions
                .Cast <ExtensionElement>().Select(e => e.Value).ToArray();
            var collectionPaths = ((AnalyserConfigurationSection)ConfigurationManager.GetSection("analyser")).CollectionPaths
                                  .Cast <CollectionPathElement>().Select(e => e.Value).ToArray();
            var collectionMarker =
                ((AnalyserConfigurationSection)ConfigurationManager.GetSection("analyser")).CollectionMarker;



            var analyser = new FileAnalyser(collectionPaths, fileSystem, collectionMarker);

            Container.GetInstance().Add(new RegisteredType().For <Mp3File>().BasedOn <IMp3Stream>().With(LifeStyle.Transient).IdentifiedBy(analyser.Mp3IocKey));

            fileSystem.ExtensionsRead += FileSystem_ExtensionsRead;
            fileSystem.DirectoryRead  += FileSystem_DirectoryRead;
            analyser.AnalyserProgress += Analyser_AnalyserProgress;
            var runner = new Runner(fileSystem, args[0], extensions, analyser, args[1]);
            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            cancellationToken.Register(runner.Stop);
            Task runTask = new Task(runner.Start, cancellationToken);

            runTask.Start();
            Console.ReadKey();
            runner.Stop();
        }
コード例 #2
0
        public void AnalyseFileNoMp3Stream()
        {
            var collectionPaths = new string[] { "..", "abc" };
            var FileSystemMock  = MockRepository.GenerateStub <IFileSystem>();

            FileSystemMock.Expect(m => m.DirectoriesExist(collectionPaths)).Return(true);
            var fileAnalyser = new FileAnalyser(collectionPaths, FileSystemMock, "some marker");

            Assert.That(() => fileAnalyser.AnalyseFile(null, default(string)), Throws.ArgumentNullException);
        }
コード例 #3
0
        public void FileAnalyserCollectionMarkerOk()
        {
            var collectionPaths = new string[] { "..", "abc" };
            var FileSystemMock  = MockRepository.GenerateStub <IFileSystem>();

            FileSystemMock.Expect(m => m.DirectoriesExist(collectionPaths)).Return(true);
            var fileAnalyser = new FileAnalyser(collectionPaths, FileSystemMock, "some marker");

            Assert.AreEqual("some marker", fileAnalyser.CollectionMarker);
        }
コード例 #4
0
        public void AnalyseFileWrongFilePath()
        {
            var collectionPaths = new string[] { "..", "abc" };
            var FileSystemMock  = MockRepository.GenerateStub <IFileSystem>();

            FileSystemMock.Expect(m => m.DirectoriesExist(collectionPaths)).Return(true);
            FileSystemMock.Expect(m => m.FileExists("myownfile.mp3")).Return(false);
            var mp3FileMock = MockRepository.GenerateStub <IMp3Stream>();

            var fileAnalyser = new FileAnalyser(collectionPaths, FileSystemMock, "some marker");

            Assert.That(() => fileAnalyser.AnalyseFile(mp3FileMock, "myownfile.mp3"), Throws.ArgumentException);
        }
コード例 #5
0
        public void FileAnalyserCollectionPathsOk()
        {
            var collectionPaths = new string[] { "..", "abc" };
            var FileSystemMock  = MockRepository.GenerateStub <IFileSystem>();

            FileSystemMock.Expect(m => m.DirectoriesExist(collectionPaths)).Return(true);
            var fileAnalyser = new FileAnalyser(collectionPaths, FileSystemMock, "some marker");

            for (int i = 0; i < collectionPaths.Length; i++)
            {
                Assert.AreEqual(collectionPaths[i], fileAnalyser.CollectionPaths[i]);
            }
        }
コード例 #6
0
        public void EmtpyList()
        {
            Mock <ILineReader> lineReaderMock = new Mock <ILineReader>();

            lineReaderMock.Setup(x => x.GetLines(It.IsAny <string>())).Returns(new List <string>());

            FileAnalyser f = new FileAnalyser(loggerMock.Object, lineReaderMock.Object);

            f.AnalyzeLines(new FileDetails("", 0));
            Assert.AreEqual(f.TotalLines, 0);
            Assert.AreEqual(f.TotalEmptyLines, 0);
            Assert.AreEqual(f.TotalDashLines, 0);
        }
コード例 #7
0
        public void ThreeDifferentLines()
        {
            Mock <ILineReader> lineReaderMock = new Mock <ILineReader>();

            lineReaderMock.Setup(x => x.GetLines(It.IsAny <string>())).Returns(new List <string>()
            {
                "", "--Test Line", "Normal Line"
            });

            FileAnalyser f = new FileAnalyser(loggerMock.Object, lineReaderMock.Object);

            f.AnalyzeLines(new FileDetails("", 0));
            Assert.AreEqual(f.TotalLines, 3);
            Assert.AreEqual(f.TotalEmptyLines, 1);
            Assert.AreEqual(f.TotalDashLines, 1);
        }
コード例 #8
0
        public void AnalyseFileTagShouldbeInCollectionMarkedWrong()
        {
            var collectionPaths = new string[] { "..", "abc" };
            var FileSystemMock  = MockRepository.GenerateStub <IFileSystem>();

            FileSystemMock.Expect(m => m.DirectoriesExist(collectionPaths)).Return(true);
            FileSystemMock.Expect(m => m.FileExists(@"..\myownfile.mp3")).Return(true);
            var fileAnalyser = new FileAnalyser(collectionPaths, FileSystemMock, "some marker");

            var mp3FileMock = MockRepository.GenerateStub <IMp3Stream>();


            var mockTitleFrame = MockRepository.GenerateStub <TitleFrame>();

            mockTitleFrame.TextValue = "my song";
            var mockAlbumFrame = MockRepository.GenerateStub <AlbumFrame>();

            mockAlbumFrame.TextValue = "my album";
            var mockId3Tag = MockRepository.GenerateStub <IId3Tag>();

            mockId3Tag.Stub(m => m.Artists).Return(new ArtistsFrame {
                Value = { "my artist" }
            });
            mockId3Tag.Stub(m => m.Title).Return(mockTitleFrame);
            mockId3Tag.Stub(m => m.Album).Return(mockAlbumFrame);
            mockId3Tag.Stub(m => m.Band).Return(new BandFrame {
                Value = "some other marker"
            });
            mp3FileMock.Expect(m => m.HasTags).Return(true);
            mp3FileMock.Expect(m => m.AvailableTagVersions).Return(new Version[] { new Version(3, 1) });
            mp3FileMock.Expect(m => m.GetTag(3, 1)).Return(mockId3Tag);
            var fileAnalysed = fileAnalyser.AnalyseFile(mp3FileMock, @"..\myownfile.mp3");

            Assert.AreEqual(fileAnalysed.Album, "my album");
            Assert.AreEqual(fileAnalysed.Artist, "my artist");
            Assert.AreEqual(fileAnalysed.Title, "my song");
            Assert.AreEqual(fileAnalysed.FilePath, @"..\myownfile.mp3");
            Assert.True(fileAnalysed.InCollectionPath);
            Assert.False(fileAnalysed.MarkedAsPartOfCollection);
            Assert.False(fileAnalysed.Id3TagIncomplete);
        }