public static async Task TestQuitAllOnError() { FakeUIThread fakeUIThread = new FakeUIThread(); fakeUIThread.IsOn = true; TypeMap.Register.Singleton <IUIThread>(() => fakeUIThread); FakeRuntimeEnvironment.Instance.MaxConcurrency = 2; IDataStore info1 = New <IDataStore>(@"c:\file1.txt"); IDataStore info2 = New <IDataStore>(@"c:\file2.txt"); IDataStore info3 = New <IDataStore>(@"c:\file3.txt"); IDataStore info4 = New <IDataStore>(@"c:\file4.txt"); ParallelFileOperation pfo = new ParallelFileOperation(); int callCount = 0; await pfo.DoFilesAsync(new IDataStore[] { info1, info2, info3, info4 }, (info, progress) => { int result = Interlocked.Increment(ref callCount); if (result == 1) { return(Task.FromResult(new FileOperationContext(String.Empty, ErrorStatus.UnspecifiedError))); } Thread.Sleep(1); return(Task.FromResult(new FileOperationContext(String.Empty, ErrorStatus.Success))); }, (status) => Constant.CompletedTask); Assert.That(callCount, Is.LessThanOrEqualTo(2), "There are several files, but max concurrency is two, so there could be up to two calls."); }
public FileOperationViewModel(FileSystemState fileSystemState, SessionNotify sessionNotify, KnownIdentities knownIdentities, ParallelFileOperation fileOperation, IStatusChecker statusChecker, IdentityViewModel identityViewModel) { _fileSystemState = fileSystemState; _sessionNotify = sessionNotify; _knownIdentities = knownIdentities; _fileOperation = fileOperation; _statusChecker = statusChecker; IdentityViewModel = identityViewModel; InitializePropertyValues(); SubscribeToModelEvents(); }
public static async Task TestParallelFileOperationSimple() { IDataStore info1 = New <IDataStore>(@"c:\file1.txt"); IDataStore info2 = New <IDataStore>(@"c:\file2.txt"); ParallelFileOperation pfo = new ParallelFileOperation(); int callCount = 0; await pfo.DoFilesAsync(new IDataStore[] { info1, info2 }, (info, progress) => { ++callCount; return(Task.FromResult(new FileOperationContext(String.Empty, ErrorStatus.Success))); }, (status) => { return(Constant.CompletedTask); }); Assert.That(callCount, Is.EqualTo(2), "There are two files, so there should be two calls."); }