コード例 #1
0
        protected override void GivenThat()
        {
            base.GivenThat();

            FileSorter            = GenerateMock <ISorter>();
            DirectoryInfoProvider = GenerateMock <IDirectoryInfoProvider>();
            DirectoryInfo         = GenerateMock <IDirectoryInfo>();

            FilesInDirectory = new IFileInfo[]
            {
                GenerateMock <IFileInfo>(),
                GenerateMock <IFileInfo>(),
                GenerateMock <IFileInfo>()
            };

            DirectoryInfo.Stub(d => d.GetFiles(null))
            .IgnoreArguments()
            .Return(FilesInDirectory);

            DirectoryInfoProvider.Stub(d => d.GetDirectoryInfo(null))
            .IgnoreArguments()
            .Return(DirectoryInfo);

            FileSorter.Stub(finder => finder.Sort(FilesInDirectory, PodcastFileSortField.FileName, true)).Return(FilesInDirectory);

            FileFinder = new Finder(FileSorter, DirectoryInfoProvider);
        }
コード例 #2
0
        // [TestCase(@"files/example_1GB.txt", @"files/example_expected.txt", 50000)]
        public async Task Sort_ProducesCorrectResult(string inputFileName, string expectedOutputFileName, int batchSize)
        {
            // arrange
            var options = new FileSorterOptions
            {
                BatchSize = batchSize
            };

            _fixture.Register(() => options);
            var outFileName = FileSorter.DefaultOutFileName(inputFileName);
            var sorter      = _fixture.Create <FileSorter>();

            // act
            await sorter.Sort(inputFileName, outFileName, CancellationToken.None);

            // assert
            await using var outputExpectedFile = File.OpenRead(expectedOutputFileName);
            using var outputExpectedReader     = new StreamReader(outputExpectedFile);

            await using var outputActualFile = File.OpenRead(outFileName);
            using var outputActualReader     = new StreamReader(outputActualFile);

            while (!outputExpectedReader.EndOfStream)
            {
                var expectedLine = await outputExpectedReader.ReadLineAsync();

                Assert.IsTrue(!outputActualReader.EndOfStream);
                var actualLine = await outputActualReader.ReadLineAsync();

                Assert.AreEqual(expectedLine, actualLine);
            }

            Assert.IsTrue(outputActualReader.EndOfStream);
        }
コード例 #3
0
        public override void Save()
        {
            if (_yes)
            {
                if (DiagnosticsHandler.LogViewerInstance.Visible)
                {
                    return;
                }

                string          logPath   = ServiceRegistration.Get <IPathManager>().GetPath("<LOG>");
                List <FileInfo> logsfiles = FileSorter.SortByLastWriteTime(logPath, "*.log");

                foreach (var file in logsfiles)
                {
                    DiagnosticsHandler.LogViewerInstance.AddLog(file.FullName);
                }

                SkinContext.Form.Invoke(new ParameterlessMethod(DiagnosticsHandler.LogViewerInstance.Show));
            }
            else
            {
                if (!DiagnosticsHandler.LogViewerInstance.Visible)
                {
                    return;
                }

                DiagnosticsHandler.LogViewerInstance.Dispose();
            }
        }
コード例 #4
0
 /// <exception cref="ArgumentNullException">any argument is null</exception>
 /// <exception cref="ArgumentException">defaultDirectory is empty</exception>
 public FilesViewPresenter(IFilesView filesView,
                           IToolBarView toolBarView,
                           IAddressToolBar addressToolBar,
                           ICommandsContainer commandsContainer,
                           IEnvironmentHelper environmentHelper,
                           Options options,
                           IMessageHelper messageHelper)
 {
     Checker.CheckNull(filesView, toolBarView, addressToolBar, commandsContainer, environmentHelper);
     this.filesView         = filesView;
     this.toolBarView       = toolBarView;
     this.addressToolBar    = addressToolBar;
     this.commandsContainer = commandsContainer;
     this.environmentHelper = environmentHelper;
     this.options           = options;
     this.messageHelper     = messageHelper;
     sorter = FileSorter.CreateSorter(options.InitialSortColumn, options.InitialSortDirection);
     filesView.SortByName            += view_SortByName;
     filesView.SortByLength          += ViewSortByLength;
     filesView.SortByType            += view_SortByType;
     filesView.SortByModifiedDate    += ViewSortByModifiedDate;
     filesView.OpenDirectory         += view_OpenDirectory;
     filesView.Cipher                += view_Cipher;
     filesView.Decipher              += view_Decipher;
     filesView.ToUpperDirectory      += view_ToUpperDirectory;
     filesView.SelectedEntityChanged += view_SelectedEntityChanged;
     addressToolBar.PathChanged      += addressToolBar_PathChanged;
 }
コード例 #5
0
ファイル: UnitTests.cs プロジェクト: paulvic/DataExercise
            public void IsNValidated()
            {
                FileSorter sorter = new FileSorter();
                ArgumentOutOfRangeException ex = Assert.Throws <ArgumentOutOfRangeException>(
                    delegate { sorter.TopN(@"", 0); });

                Assert.That(ex.ParamName, Is.EqualTo("n must be greater than 0"));
            }
コード例 #6
0
ファイル: MainForm.cs プロジェクト: nolik/BSUIR_labs
    public void OnLengthClick(object sender, EventArgs e)
    {
        OpenFileDialog dialog = new OpenFileDialog();

        dialog.Filter = "txt files (*.txt)|*.txt";

        if (dialog.ShowDialog(this) == DialogResult.OK)
        {
            FileSorter.SortByLength(dialog.FileName);
        }
    }
コード例 #7
0
ファイル: UnitTests.cs プロジェクト: paulvic/DataExercise
 public void Test_SmallFile_Distinct_Top5()
 {
     using (var testStreamWriter = new TestStreamWriter(new MemoryStream()))
     {
         FileSorter sorter = new FileSorter();
         sorter.TopN(GetFullTestDataPath("Valid_10Numbers_Distinct.txt"), 5, testStreamWriter);
         int[] expected = new int[] { 9, 8, 7, 6, 5 };
         int[] actual   = testStreamWriter.Data;
         Assert.AreEqual(expected, actual);
     }
 }
コード例 #8
0
ファイル: UnitTests.cs プロジェクト: paulvic/DataExercise
 public void Test_SmallFile_Negative_Top10()
 {
     using (var testStreamWriter = new TestStreamWriter(new MemoryStream()))
     {
         FileSorter sorter = new FileSorter();
         sorter.TopN(GetFullTestDataPath("Valid_10Numbers_Negative.txt"), 10, testStreamWriter);
         int[] expected = new int[] { 9, 8, 6, 5, 4, 3, 2, 0, -1, -7 };
         int[] actual   = testStreamWriter.Data;
         Assert.AreEqual(expected, actual);
     }
 }
コード例 #9
0
        public MainWindow()
        {
            Instance = this;
            InitializeComponent();

            InitTitleBar();
            InitFrame();
            FileSorter.Init();

            _poller = new Poller();
        }
コード例 #10
0
ファイル: UnitTests.cs プロジェクト: paulvic/DataExercise
 public void Test_SmallFile_Duplicates_Top3()
 {
     using (var testStreamWriter = new TestStreamWriter(new MemoryStream()))
     {
         FileSorter sorter = new FileSorter();
         sorter.TopN(GetFullTestDataPath("Valid_10Numbers_Duplicates.txt"), 3, testStreamWriter);
         int[] expected = new int[] { 8, 8, 6 };
         int[] actual   = testStreamWriter.Data;
         Assert.AreEqual(expected, actual);
     }
 }
コード例 #11
0
        public async Task SortFileIntegrationTest()
        {
            var inputFilePath = await TestsHelper.CreateFile("inputSortingFile.txt", DataStorage.InputData1);

            var fileSorter     = new FileSorter();
            var outputFilePath = await fileSorter.SortFileAsync(inputFilePath);

            var actual = await File.ReadAllTextAsync(outputFilePath);

            Assert.AreEqual(DataStorage.ExpectedData1, actual);
        }
コード例 #12
0
 private void ViewSortByModifiedDate(object sender, EventArgs e)
 {
     if (!(sorter is FileSorterByModifiedDate))
     {
         sorter = new FileSorterByModifiedDate();
     }
     else
     {
         sorter.ChangeDirection();
     }
     RefreshDirectory();
 }
コード例 #13
0
 private void view_SortByType(object sender, EventArgs e)
 {
     if (!(sorter is FileSorterByType))
     {
         sorter = new FileSorterByType();
     }
     else
     {
         sorter.ChangeDirection();
     }
     RefreshDirectory();
 }
コード例 #14
0
ファイル: UnitTests.cs プロジェクト: paulvic/DataExercise
 public void Test_MediumFile_Duplicates_Top4()
 {
     using (var testStreamWriter = new TestStreamWriter(new MemoryStream()))
     {
         FileSorter sorter          = new FileSorter();
         int        resultsReturned = sorter.TopN(
             GetFullTestDataPath("Valid_1000000Numbers_Duplicates.txt"), 4, testStreamWriter);
         int[] expected = new int[] { 2147483422, 2147483421, 2147483421, 2147483420 };
         int[] actual   = testStreamWriter.Data;
         Assert.AreEqual(expected, actual);
     }
 }
コード例 #15
0
        public void ValidateFile_FileIsValid_ReturnTrue()
        {
            var fileSystem = new MockFileSystem();

            fileSystem.AddDirectory(@"/test/");
            fileSystem.AddFile(@"/test/file.xml", new MockFileData("Test"));
            var sorter = new FileSorter(fileSystem);

            string input  = "/test/file.xml";
            bool   output = sorter.ValidateFile(input);

            Assert.True(output);
        }
コード例 #16
0
        public void ValidateFile_NoFileSelected_InvalidFileException()
        {
            var sorter = new FileSorter(new MockFileSystem());

            try
            {
                string input = "";
                sorter.ValidateFile(input);
            }
            catch (InvalidFileException e)
            {
                Assert.Equal("Please select a file", e.Message);
            }
        }
コード例 #17
0
        private IEnumerable <IFileInfo> GetSortedFiles(IDirectoryInfo src, string pattern, PodcastFileSortField sortField, bool ascendingSort)
        {
            try
            {
                var fileList = new Collection <IFileInfo>(src.GetFiles(pattern));

                return(FileSorter.Sort(fileList, sortField, ascendingSort));
            }
            catch (DirectoryNotFoundException)
            {
                // if the folder is not there then there is nothing to do
                return(new Collection <IFileInfo>());
            }
        }
コード例 #18
0
ファイル: UnitTests.cs プロジェクト: paulvic/DataExercise
 public void Test_SmallFile_Distinct_Top14()
 {
     // Asking for the top 14 numbers, but file only contains 10 numbers
     using (var testStreamWriter = new TestStreamWriter(new MemoryStream()))
     {
         FileSorter sorter          = new FileSorter();
         int        resultsReturned = sorter.TopN(
             GetFullTestDataPath("Valid_10Numbers_Distinct.txt"), 14, testStreamWriter);
         int[] expected = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
         int[] actual   = testStreamWriter.Data;
         Assert.AreEqual(expected, actual);
         Assert.AreEqual(10, resultsReturned);
     }
 }
コード例 #19
0
        public void FileSorterTest()
        {
            Assert.IsTrue(Directory.Exists(dirPath));
            FileSorter fs = new FileSorter(dirPath);
            // Find and sort .txt files by name;
            List <string> lsFiles = fs.FindAndSort("txt");

            Assert.AreEqual(4, lsFiles.Count);
            for (int i = 0; i < lsFiles.Count; i++)
            {
                string fileName = "File" + (i + 1).ToString("D2") + ".txt";
                Assert.AreEqual(Path.GetFileName(lsFiles[i]), fileName);
            }
            Assert.AreEqual(dirPath, fs.GetDirectory());
        }
コード例 #20
0
 public static void Main(string[] args)
 {
     if ("--alph" == args[0])
     {
         FileSorter.SortByAlphabet(args[1]);
     }
     else if ("--length" == args[0])
     {
         FileSorter.SortByLength(args[1]);
     }
     else
     {
         Console.WriteLine("Wrong usage.\n./MainConsole.exe [--alph/length] filename");
     }
 }
コード例 #21
0
        private void CreateButton_Click(object sender, RoutedEventArgs e)
        {
            Destination = Destination.TrimEnd('\\');
            Destination = Destination.TrimEnd('/');
            if (Directory.Exists(Destination) == false)
            {
                var results = MessageBox.Show("Directory does not seem to be valid or does not exists, try create a directory?", "Invalid File Path", MessageBoxButton.YesNo);
                if (results != MessageBoxResult.Yes)
                {
                    return;
                }
                try
                {
                    Directory.CreateDirectory(Destination);
                }
                catch (NotSupportedException)
                {
                    MessageBox.Show("Path is not a valid Windows File Path");
                }
                catch (Exception exception)
                {
                    MessageBox.Show(
                        $"Contact developer with the following information: \nFile Path: {Destination}\nException: {exception.Message}");
                }

                return;
            }
            if (_rule != null)
            {
                _rule.ChangeName(NameBox.Text);
                _rule.MoveLocation(Destination);
                _rule.Type = (RuleType)TypeCombo.SelectedIndex;
                _rule.UpdateData(SortBox.Text.Split('\n').ToList());
                FileSorter.UpdateRules();
            }
            else
            {
                FileSorter.AddRule(
                    new Rule(
                        NameBox.Text,
                        Destination,
                        SortBox.Text.Split('\n').ToList(),
                        (RuleType)TypeCombo.SelectedIndex));
            }

            MainWindow.Instance.NewFloatingFrame(new RulesList());
        }
コード例 #22
0
ファイル: Program.cs プロジェクト: teoadal/big-file
        private static int ExecuteSort(SortOptions options)
        {
            if (!options.Validate())
            {
                return(1);
            }

            var sorter = new FileSorter(options);
            var timer  = Stopwatch.StartNew();

            Console.WriteLine($"File '{options.Input}' sort started...");

            sorter.Sort();

            Console.WriteLine($"File sort executed at {timer.Elapsed}");
            return(0);
        }
コード例 #23
0
        public void ValidateFile_FileDoesNotExist_InvalidFileException()
        {
            var fileSystem = new MockFileSystem();

            fileSystem.AddDirectory(@"/test/");
            var sorter = new FileSorter(fileSystem);

            try
            {
                string input = "/test/file.txt";
                sorter.ValidateFile(input);
            }
            catch (InvalidFileException e)
            {
                Assert.Equal("File not found", e.Message);
            }
        }
コード例 #24
0
        public void ValidateFile_FileIsNotXml_InvalidFileException()
        {
            var fileSystem = new MockFileSystem();

            fileSystem.AddDirectory(@"/test/");
            fileSystem.AddFile(@"/test/file.txt", new MockFileData("Test"));
            var sorter = new FileSorter(fileSystem);

            try
            {
                string input = "/test/file.txt";
                sorter.ValidateFile(input);
            }
            catch (InvalidFileException e)
            {
                Assert.Equal("Invalid file", e.Message);
            }
        }
コード例 #25
0
        static void Main(string[] args)
        {
            var fileSorterParams = new FileSorterParams()
            {
                InputDataFileName          = "TestData_1Gb.txt",
                MaxMemoryUsageInBytes      = 2 * 1024L * 1024L * 1024L,
                OutputSortedFileName       = "SortedTestData.txt",
                SplittedFileSizeInBytes    = 50 * 1024L * 1024L,
                SplittedFilesDirectoryName = "TempData",
                ProgressInformer           = new ConsoleProgressInformer()
            };

            var fileSorter = new FileSorter(fileSorterParams);
            var isSuccess  = fileSorter.Sort();

            Console.WriteLine($"Is success sorting: {isSuccess}");
            Console.ReadLine();
        }
コード例 #26
0
        public void FileSorter_should_sort_file(string inputPath)
        {
            var outputPath = $"{inputPath}.sort_test";
            var bufferSize = 65 * 1024 * 1024;

            var sorter = new FileSorter <TestLine>(
                new TestLineParser(),
                new LinqSortStrategy(
                    new TestLineComparer()
                    ),
                new TestLineComparer(),
                new FileAdapter(),
                new FileReader(),
                new FileWriter());

            sorter.Sort(inputPath, outputPath, bufferSize, bufferSize);

            Check_sorting(outputPath);
            Check_for_brocken_line(outputPath);
        }
コード例 #27
0
        public void SortOrdersByDate_UnsortedXmlFile_ReturnOrderedByDate()
        {
            string xml = @"<?xml version=""1.0""?>  
                <Root>  
                    <Orders>
                        <Order><OrderDate>1997-02-12T00:00:00</OrderDate></Order>
                        <Order><OrderDate>1978-02-12T00:00:00</OrderDate></Order>
                        <Order><OrderDate>2018-02-12T00:00:00</OrderDate></Order>
                    </Orders>  
                </Root>";

            XDocument doc    = XDocument.Parse(xml);
            var       sorter = new FileSorter();

            XElement[] input  = doc.Descendants("Orders").ToArray();
            var        output = sorter.SortOrdersByDate(input);

            Assert.Equal("<Order>\n  <OrderDate>1978-02-12T00:00:00</OrderDate>\n</Order>", output[0].ToString());
            Assert.Equal("<Order>\n  <OrderDate>1997-02-12T00:00:00</OrderDate>\n</Order>", output[1].ToString());
            Assert.Equal("<Order>\n  <OrderDate>2018-02-12T00:00:00</OrderDate>\n</Order>", output[2].ToString());
        }
コード例 #28
0
        public static void Main(string[] args)
        {
            string fileName;

            if (args.Length < 1)
            {
                Console.Write("File name: ");

                fileName = Console.ReadLine();
            }
            else
            {
                fileName = args[0];
            }

            if (!File.Exists(fileName))
            {
                Console.WriteLine($"File '{fileName}' doesn't exist.");
            }

            var options = Options.Create(new FileSorterOptions
            {
                BatchSize = 50000
            });

            var sorter      = new FileSorter(options);
            var outFileName = FileSorter.DefaultOutFileName(fileName);

            var sw = new Stopwatch();

            sw.Start();

            Task.WaitAll(sorter.Sort(fileName, outFileName, CancellationToken.None));

            sw.Stop();

            Console.WriteLine($"Sorted. Output: '{outFileName}', elapsed: {sw.Elapsed.TotalSeconds:0.000} s.");
        }
コード例 #29
0
 protected override void When()
 {
     SortedFiles = FileSorter.Sort(OriginalFiles, PodcastFileSortField.CreationTime, false);
 }
コード例 #30
0
ファイル: UnitTests.cs プロジェクト: paulvic/DataExercise
 public void IsPathValidated()
 {
     FileSorter            sorter = new FileSorter();
     FileNotFoundException ex     = Assert.Throws <FileNotFoundException>(
         delegate { sorter.TopN(GetFullTestDataPath("1.txt"), 1); });
 }