public async Task EncodingStatisticsTest() { TestIFileSelectorService fileSelector = new TestIFileSelectorService(); fileSelector.FilePath = @"path"; viewModel.FileSelectorService = fileSelector; viewModel.Path = @"C:\dir\"; TestIInputDataService inputDataService = new TestIInputDataService(); inputDataService.InputCommand = InputCommand.Encode; viewModel.InputDataService = inputDataService; TestIFileSystemService fileSystem = new TestIFileSystemService(); fileSystem.EnumFileSystemEntriesFunc = _ => { return(new[] { new FileSystemEntry(FileSystemEntryType.Directory, "dir", @"C:\dir\"), new FileSystemEntry(FileSystemEntryType.File, "f1.dat", @"C:\dir\f1.dat"), new FileSystemEntry(FileSystemEntryType.File, "f2.dat", @"C:\dir\f2.dat"), }); }; WritableMemoryStream outputStream = new WritableMemoryStream(); TestIPlatformService platform = new TestIPlatformService(); platform.WriteFileFunc = _ => outputStream; platform.ReadFileFunc = x => { switch (x) { case @"C:\dir\f1.dat": return(new MemoryStream(new byte[200 * 1024])); case @"C:\dir\f2.dat": return(new MemoryStream(new byte[300 * 1024])); default: throw new NotImplementedException(); } }; viewModel.EncodingService = new DefaultHuffmanEncodingService(fileSystem, platform, new DefaultStreamBuilder()); await viewModel.Run(); window.UpdateLayout(); TextBlock inputSizeTextBlock = window.EncodingResultControl.GetContentTemplateControl <TextBlock>("InputSizeTextBlock"); TextBlock outputSizeTextBlock = window.EncodingResultControl.GetContentTemplateControl <TextBlock>("OutputSizeTextBlock"); TextBlock saveFactorTextBlock = window.EncodingResultControl.GetContentTemplateControl <TextBlock>("SaveFactorTextBlock"); Assert.AreEqual("Input Size: 512 Kb", inputSizeTextBlock.Text); Assert.AreEqual("Output Size: 64.1 Kb", outputSizeTextBlock.Text); Assert.AreEqual("Save Factor: 87.48%", saveFactorTextBlock.Text); }
public async Task EncodingCancellationTest1() { TestIFileSelectorService fileSelector = new TestIFileSelectorService(); fileSelector.FilePath = @"path"; viewModel.FileSelectorService = fileSelector; viewModel.Path = @"C:\dir\"; TestIInputDataService inputDataService = new TestIInputDataService(); inputDataService.InputCommand = InputCommand.Encode; viewModel.InputDataService = inputDataService; TestIFileSystemService fileSystem = new TestIFileSystemService(); fileSystem.EnumFileSystemEntriesFunc = _ => { return(new[] { new FileSystemEntry(FileSystemEntryType.Directory, "dir", @"C:\dir\"), new FileSystemEntry(FileSystemEntryType.File, "f1.dat", @"C:\dir\f1.dat"), new FileSystemEntry(FileSystemEntryType.File, "f2.dat", @"C:\dir\f2.dat"), }); }; WritableMemoryStream outputStream = new WritableMemoryStream(); TestIPlatformService platform = new TestIPlatformService(); platform.WriteFileFunc = _ => outputStream; int fileRequest = 0; platform.ReadFileFunc = x => { if (++fileRequest == 4) { viewModel.Cancel(); } switch (x) { case @"C:\dir\f1.dat": return(new MemoryStream(new byte[200 * 1024])); case @"C:\dir\f2.dat": return(new MemoryStream(new byte[300 * 1024])); default: throw new NotImplementedException(); } }; viewModel.EncodingService = new DefaultHuffmanEncodingService(fileSystem, platform, new DefaultStreamBuilder()); await viewModel.Run(); Assert.AreEqual(32855, outputStream.Length); }
public async Task EncodingCancellationTest2() { TestIFolderSelectorService folderSelector = new TestIFolderSelectorService(); folderSelector.FolderPath = @"C:\folder\"; viewModel.FolderSelectorService = folderSelector; viewModel.Path = @"C:\dir\"; TestIInputDataService inputDataService = new TestIInputDataService(); inputDataService.InputCommand = InputCommand.Decode; viewModel.InputDataService = inputDataService; WritableMemoryStream outputStream = new WritableMemoryStream(); TestIPlatformService platform = new TestIPlatformService(); platform.WriteFileFunc = x => { if (string.Equals(x, @"C:\folder\dir\f2.dat", StringComparison.OrdinalIgnoreCase)) { viewModel.Cancel(); } return(outputStream); }; platform.ReadFileFunc = x => new BufferBuilder() .AddByte(0x2) .AddInt(0x9) .AddByte(0x0) .AddLong(0x1) .AddByte(0x1) .AddInt(0x6) .AddString("dir") .AddInt(2) .AddByte(0x0) .AddInt(0xC) .AddString("f1.dat") .AddLong(200 * 1024 * 8) // 200Kb .AddByte(0x0, 200 * 1024) .AddByte(0x0) .AddInt(0xC) .AddString("f2.dat") .AddLong(300 * 1024 * 8) // 300Kb .AddByte(0x0, 300 * 1024).GetStream(); viewModel.DecodingService = new DefaultHuffmanDecodingService(platform, new DefaultStreamParser()); await viewModel.Run(); Assert.AreEqual(256 * 1024 * 8, outputStream.Length); }
private void SetupDecodingService(Action decodeAction) { TestIFolderSelectorService folderSelector = new TestIFolderSelectorService(); folderSelector.FolderPath = @"C:\folder\"; viewModel.FolderSelectorService = folderSelector; TestIInputDataService inputDataService = new TestIInputDataService(); inputDataService.InputCommand = InputCommand.Decode; viewModel.InputDataService = inputDataService; TestIHuffmanDecodingService encodingService = new TestIHuffmanDecodingService(); encodingService.DecodeAction = decodeAction; viewModel.DecodingService = encodingService; }
private void SetupEncodingService(Action encodeAction) { TestIFileSelectorService fileSelector = new TestIFileSelectorService(); fileSelector.FilePath = @"path"; viewModel.FileSelectorService = fileSelector; TestIInputDataService inputDataService = new TestIInputDataService(); inputDataService.InputCommand = InputCommand.Encode; viewModel.InputDataService = inputDataService; TestIHuffmanEncodingService encodingService = new TestIHuffmanEncodingService(); encodingService.EncodeAction = encodeAction; viewModel.EncodingService = encodingService; }