コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 public static void SequenceShouldBeEqualTo(this FileChunk fileChunk, ProcessedChunk processedChunk)
 => fileChunk.Memory.Span.SequenceEqual(processedChunk.Memory.Span)
 .ShouldBeTrue();
コード例 #7
0
 public static void SequenceShouldBeEqualTo(this byte[] array, ProcessedChunk chunk)
 => array.AsSpan().SequenceEqual(chunk.Memory.Span).ShouldBeTrue();