Esempio n. 1
0
        public void Setup()
        {
            _logger = (UnitTestLogger <CPU6502>)_serviceProvider.GetService <ILogger <CPU6502> >();
            _logger.GetOutput(); // Clear any buffered output

            mem = _serviceProvider.GetService <IAddressMap>();
            mem.Install(new Ram(0x0000, 0x10000));

            _display = _serviceProvider.GetService <IMemoryMappedDisplay>();
            _display.Locate(DISPLAY_BASE_ADDR, DISPLAY_SIZE);
            mem.Install(_display);
            AsyncUtil.RunSync(mem.Initialise);
            _display.Clear();
            _cpu          = (CPU6502)_serviceProvider.GetService <IDebuggableCpu>();
            _cpu.LogLevel = LogLevel.Trace;
            mem.WriteWord(_cpu.RESET_VECTOR, PROG_START);
            mem.Labels.Clear();
            mem.Labels.Add("DISPLAY_CONTROL_ADDR", MemoryMappedDisplay.DISPLAY_CONTROL_BLOCK_ADDR);
            mem.Labels.Add("DISPLAY_BASE_ADDR", DISPLAY_BASE_ADDR);
            mem.Labels.Add("DISPLAY_SIZE", DISPLAY_SIZE);
            mem.Labels.Add("RESET_VECTOR", _cpu.RESET_VECTOR);
            mem.Labels.Add("IRQ_VECTOR", _cpu.IRQ_VECTOR);
            mem.Labels.Add("NMI_VECTOR", _cpu.NMI_VECTOR);
            _cpuHoldEvent             = _serviceProvider.GetService <ICpuHoldEvent>();
            _cpuStepEvent             = _serviceProvider.GetService <ICpuStepEvent>();
            _cancellationTokenWrapper = _serviceProvider.GetService <CancellationTokenWrapper>();
            _cancellationTokenWrapper.Reset();
        }
            static async Task ImportAsync()
            {
                // Arrange
                var request                  = TestHelper.CreateImportDataRequest();
                var cancellationToken        = new CancellationToken(true);
                var cancellationTokenWrapper = new CancellationTokenWrapper(cancellationToken);
                var importer                 = GetCsvPagedPriceDataImporter(GetBlobStorageProvider(CsvHeader, CsvRecords));

                // Act
                await importer.ImportAsync(request, ProgressCallbackMock, cancellationTokenWrapper);
            }
Esempio n. 3
0
        public async Task GetNextChangesBatch_TasksWithDifferentWorkPathAndOptions_UseDifferentValues()
        {
            // Arrange
            var blobContents = new List <BlobEntry>()
            {
                new BlobInfo()
                {
                    Name = "Blob1.png",
                    Url  = "testPath1/Blob1.png",
                },
                new BlobInfo()
                {
                    Name = "Blob2.png",
                    Url  = "testPath2/Blob2.png",
                },
            };
            var changesProvider = GetBlobImagesChangesProvider(blobContents);
            var thumbnailOption = new ThumbnailOption()
            {
                FileSuffix = OptionSuffix
            };
            var task1 = new ThumbnailTask()
            {
                Id               = Guid.NewGuid().ToString(),
                LastRun          = null,
                WorkPath         = "testPath1",
                ThumbnailOptions = new List <ThumbnailOption>()
                {
                    thumbnailOption
                },
            };
            var task2 = new ThumbnailTask()
            {
                Id               = Guid.NewGuid().ToString(),
                LastRun          = null,
                WorkPath         = "testPath2",
                ThumbnailOptions = new List <ThumbnailOption>()
                {
                    thumbnailOption
                },
            };
            var cancellationToken = new CancellationTokenWrapper(new CancellationToken());

            // Act
            var changes1 = await changesProvider.GetNextChangesBatch(task1, null, 0, 10, cancellationToken);

            var changes2 = await changesProvider.GetNextChangesBatch(task2, null, 0, 10, cancellationToken);

            //Assert
            StorageProviderMock.Verify(x => x.SearchAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Exactly(2));

            Assert.Collection(changes1, x => Assert.Equal("Blob1.png", x.Name));
            Assert.Collection(changes2, x => Assert.Equal("Blob2.png", x.Name));
        }
Esempio n. 4
0
        public async Task GetNextChangesBatch_TasksWithOneWorkPathAndOptions_CacheIsWorking()
        {
            // Arrange
            var blobContents = new List <BlobEntry>()
            {
                new BlobInfo()
                {
                    Name = "Blob1.png",
                    Url  = "testPath/Blob1.png",
                },
            };
            var changesProvider = GetBlobImagesChangesProvider(blobContents);
            var thumbnailOption = new ThumbnailOption()
            {
                FileSuffix = OptionSuffix
            };
            var workPath = "testPath";
            var task1    = new ThumbnailTask()
            {
                Id               = Guid.NewGuid().ToString(),
                LastRun          = null,
                WorkPath         = workPath,
                ThumbnailOptions = new List <ThumbnailOption>()
                {
                    thumbnailOption
                },
            };
            var task2 = new ThumbnailTask()
            {
                Id               = Guid.NewGuid().ToString(),
                LastRun          = null,
                WorkPath         = workPath,
                ThumbnailOptions = new List <ThumbnailOption>()
                {
                    thumbnailOption
                },
            };
            var cancellationToken = new CancellationTokenWrapper(new CancellationToken());

            // Act
            var changes1 = await changesProvider.GetNextChangesBatch(task1, null, 0, 10, cancellationToken);

            var changes2 = await changesProvider.GetNextChangesBatch(task2, null, 0, 10, cancellationToken);

            //Assert
            StorageProviderMock.Verify(x => x.SearchAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Once);

            Assert.Single(changes1);
            Assert.Single(changes2);
            for (var i = 0; i < changes1.Length; i++)
            {
                Assert.Same(changes1[i], changes2[i]);
            }
        }
        public async void GenerateThumbnailsAsync_CancellationTokenNotNull_CancellationFired()
        {
            var options             = new List <ThumbnailOption>();
            CancellationToken token = new CancellationToken(true);
            var tokenWrapper        = new CancellationTokenWrapper(token);

            var mockStorage = new Mock <IImageService>();
            var mockResizer = new Mock <IImageResizer>();

            var target = new DefaultThumbnailGenerator(mockStorage.Object, mockResizer.Object);
            await Assert.ThrowsAsync <OperationCanceledException>(async() => await target.GenerateThumbnailsAsync("http://pathToFile.bmp", "dest", options, tokenWrapper));
        }
Esempio n. 6
0
        public async Task Start(string arguments, Action<string> processData, CancellationTokenWrapper token)
        {
            var tcs = new TaskCompletionSource<object>();

            _act = (s, e) =>
            {
                _output.AppendLine(e.Data);

                try
                {
                    processData(e.Data);
                }
                catch (Exception ex)
                {
                    tcs.TrySetException(ex);
                }
            };

            var process = new Process();

            process.Exited += (s, e) => ExitedMethod((Process)s, tcs);

            process.StartInfo = CreateStartInfo(arguments);
            process.EnableRaisingEvents = true;
            process.ErrorDataReceived += _act;
            process.OutputDataReceived += _act;

            _output.Clear();

            try
            {
                process.Start();
                process.BeginErrorReadLine();
                process.BeginOutputReadLine();

                token.Register(() => tcs.TrySetCanceled());
            }
            catch (Exception ex)
            {
                tcs.TrySetException(ex);
            }

            try
            {
                await tcs.Task;
            }
            finally
            {
                TryKillProcess(process);
                process.Dispose();
            }
        }
Esempio n. 7
0
        public async Task Start(string arguments, Action <string> processData, CancellationTokenWrapper token)
        {
            var tcs = new TaskCompletionSource <object>();

            _act = (s, e) =>
            {
                _output.AppendLine(e.Data);

                try
                {
                    processData(e.Data);
                }
                catch (Exception ex)
                {
                    tcs.TrySetException(ex);
                }
            };

            var process = new Process();

            process.Exited += (s, e) => ExitedMethod((Process)s, tcs);

            process.StartInfo           = CreateStartInfo(arguments);
            process.EnableRaisingEvents = true;
            process.ErrorDataReceived  += _act;
            process.OutputDataReceived += _act;

            _output.Clear();

            try
            {
                process.Start();
                process.BeginErrorReadLine();
                process.BeginOutputReadLine();

                token.Register(() => tcs.TrySetCanceled());
            }
            catch (Exception ex)
            {
                tcs.TrySetException(ex);
            }

            try
            {
                await tcs.Task;
            }
            finally
            {
                TryKillProcess(process);
                process.Dispose();
            }
        }
Esempio n. 8
0
 public ReplHost(
     ILabelMap labels,
     CancellationTokenWrapper cancellationToken,
     // CpuHoldEvent debuggerSyncEvent,
     IDebuggableCpu cpu,
     IAddressMap addressMap,
     IMemoryMappedKeyboard keyboard,
     IMemoryMappedDisplay memoryMappedDisplay)
 {
     Labels             = labels;
     _cancellationToken = cancellationToken;
     // _debuggerSyncEvent = debuggerSyncEvent;
     _cpu      = (CPU6502)cpu;
     mem       = addressMap;
     _keyboard = keyboard;
     _display  = memoryMappedDisplay;
 }
Esempio n. 9
0
 public ConsoleDebugger(
     IEmulatorHost host,
     IDebuggableCpu cpu,
     IAddressMap addressMap,
     ILogFormatter logFormatter,
     IParser parser,
     ILabelMap labels,
     CancellationTokenWrapper cancel,
     // CpuHoldEvent debuggerSyncEvent,
     ILogger <ConsoleDebugger> logger)
 {
     _host       = host;
     _cpu        = cpu;
     _addressMap = addressMap;
     _formatter  = logFormatter;
     _parser     = parser;
     _labels     = labels;
     _cancel     = cancel;
     // _debuggerSyncEvent = debuggerSyncEvent;
     _logger = logger;
 }
Esempio n. 10
0
        public async Task GetNextChangesBatch_TasksWithOneWorkPathAndOptions_CacheIsWorkingWithGetTotalChangesCount()
        {
            // Arrange
            var blobContents = new List <BlobEntry>()
            {
                new BlobInfo()
                {
                    Name = "Blob1.png",
                    Url  = "testPath/Blob1.png",
                },
            };
            var changesProvider = GetBlobImagesChangesProvider(blobContents);
            var thumbnailOption = new ThumbnailOption()
            {
                FileSuffix = OptionSuffix
            };
            var workPath = "testPath";
            var task     = new ThumbnailTask()
            {
                Id               = Guid.NewGuid().ToString(),
                LastRun          = null,
                WorkPath         = workPath,
                ThumbnailOptions = new List <ThumbnailOption>()
                {
                    thumbnailOption
                },
            };
            var cancellationToken = new CancellationTokenWrapper(new CancellationToken());

            // Act
            var changes = await changesProvider.GetNextChangesBatch(task, null, 0, 10, cancellationToken);

            var count = await changesProvider.GetTotalChangesCount(task, null, cancellationToken);

            //Assert
            StorageProviderMock.Verify(x => x.SearchAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Once);

            Assert.Collection(changes, x => Assert.Equal("Blob1.png", x.Name));
            Assert.Equal(1, count);
        }
Esempio n. 11
0
        public async Task ProcessTasksAsync_BlobChangesProviderCache_ExpiredAfterExecution()
        {
            // Arrange
            var blobContents = new List <BlobEntry>()
            {
                new BlobInfo()
                {
                    Name = "Blob1.png",
                    Url  = "testPath/Blob1.png",
                },
            };
            var imageChangesProvider         = GetBlobImagesChangesProvider(blobContents);
            var thumbnailGenerationProcessor = new ThumbnailGenerationProcessor(_generator.Object, _settingsManager.Object, imageChangesProvider);

            var thumbnailOption = new ThumbnailOption()
            {
                FileSuffix = OptionSuffix
            };
            var workPath = "testPath";
            var task1    = new ThumbnailTask()
            {
                Id               = Guid.NewGuid().ToString(),
                LastRun          = null,
                WorkPath         = workPath,
                ThumbnailOptions = new List <ThumbnailOption>()
                {
                    thumbnailOption
                },
            };
            var cancellationToken = new CancellationTokenWrapper(new CancellationToken());

            // Act

            await thumbnailGenerationProcessor.ProcessTasksAsync(new[] { task1 }, false, x => { }, cancellationToken);

            await thumbnailGenerationProcessor.ProcessTasksAsync(new[] { task1 }, false, x => { }, cancellationToken);

            //Assert
            StorageProviderMock.Verify(x => x.SearchAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Exactly(2));
        }