public void CompleteChunk_ChunkWithToAssignees_CompleteByAllAssignees_ChunkStatusIsCompleted() { var package = CreatePackageWithData(PackageProcessingPolicy.Default); var chunk = package.CreateChunk(); var alice = new User { Id = 1 }; var bob = new User { Id = 2 }; chunk.Value.AssignUsers(alice, bob); var result1 = new ProcessedChunk(chunk.Value.Id, alice, chunk.Value.ToProcessed(Mark.Correct)); var result2 = new ProcessedChunk(chunk.Value.Id, bob, chunk.Value.ToProcessed(Mark.Correct)); var result = package.RegisterResult(result1); Assert.True(result.IsSuccess); result = package.RegisterResult(result2); Assert.True(result.IsSuccess); Assert.AreEqual(ChunkStatus.Completed, chunk.Value.Status); }
public void CompleteTask_ProcessingResultWithEmptyList_Failure() { var package = CreatePackageWithData(PackageProcessingPolicy.Default); var chunk = package.CreateChunk(); var alice = new User(); var processedChunk = new ProcessedChunk(chunk.Value.Id, alice, new List <ProcessedItem>()); Assert.IsFalse(package.RegisterResult(processedChunk).IsSuccess); }
public void CompleteTask_CompleteResultWithAnotherChunk_ReturnsFailure() { var package = CreatePackageWithData(PackageProcessingPolicy.Default); var originalChunk = package.CreateChunk(); var anotherChunk = package.CreateChunk(); var alice = new User(); originalChunk.Value.AssignUsers(alice); var processedChunk = new ProcessedChunk(anotherChunk.Value.Id, alice, new List <ProcessedItem>()); var result = package.RegisterResult(processedChunk); Assert.True(result.IsFailure); }
public void CompleteChunk_CompleteSameChunkTwoTimes_ReturnsFailure() { var package = CreatePackageWithData(PackageProcessingPolicy.Default); var chunk = package.CreateChunk(); var alice = new User(); chunk.Value.AssignUsers(alice); var processedChunk = new ProcessedChunk(chunk.Value.Id, alice, chunk.Value.ToProcessed(Mark.Correct)); var result = package.RegisterResult(processedChunk); Assert.True(result.IsSuccess); result = package.RegisterResult(processedChunk); Assert.False(result.IsSuccess); }
public void AbortsWhenCancellationRequested() { var good = new ProcessedChunk(new byte[] { }, Memory <byte> .Empty); var result = new ProcessedChunk(new byte[] { }, Memory <byte> .Empty); processor.Setup(p => p.Process(good.Memory)).Returns(result); inputQueue.Add(new FileChunk(ArrayPool <byte> .Shared.Rent(0), good.Memory)); cancellationTokenSource.Cancel(); chunkProcessor.Start(cancellationTokenSource.Token); countdownEvent.Signal(); countdownEvent.Wait(); jobContextMock.Verify( context => context.Failure(It.IsAny <Exception>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); outputBufferMock.Verify(buffer => buffer.SubmitCompleted(), Times.Once); outputBufferMock.Verify(buffer => buffer.SubmitProcessedBatchItem(It.IsAny <ProcessedBatchItem>()), Times.Never); }
public static void SequenceShouldBeEqualTo(this FileChunk fileChunk, ProcessedChunk processedChunk) => fileChunk.Memory.Span.SequenceEqual(processedChunk.Memory.Span) .ShouldBeTrue();
public static void SequenceShouldBeEqualTo(this byte[] array, ProcessedChunk chunk) => array.AsSpan().SequenceEqual(chunk.Memory.Span).ShouldBeTrue();