Example #1
0
        private void ApplyChanges()
        {
            IDifferenceService service = new DifferenceService();

            service.Apply(_infoBases[0]);
            _infoBases.Clear();
        }
        public async Task PushesSourceContentToQueue()
        {
            var content = new SourceContent
            {
                Data       = new byte[] { 1, 2, 3 },
                SourceSide = SourceSide.Left
            };

            var queue   = Substitute.For <IDifferenceQueue>();
            var storage = Substitute.For <IStorage>();

            var service = new DifferenceService(queue, Enumerable.Empty <IQueueConsumer>(), storage);
            await service.AddSourceAsync(10, content);

            await queue.Received().PushSourceAsync(content.InDiffBag(10));
        }
        public async Task RunsQueueConsumersOnTaskPoolScheduler()
        {
            var queue   = Substitute.For <IDifferenceQueue>();
            var storage = Substitute.For <IStorage>();

            var consumer1 = Substitute.For <IQueueConsumer>();
            var consumer2 = Substitute.For <IQueueConsumer>();

            var cancellationToken = new CancellationToken();

            var service = new DifferenceService(queue, new[] { consumer1, consumer2 }, storage);
            await service.RunAsync(cancellationToken);

            await consumer1.Received().RunAsync(TaskPoolScheduler.Default, cancellationToken);

            await consumer2.Received().RunAsync(TaskPoolScheduler.Default, cancellationToken);
        }
        public void Compare_WhenSameObject_ShouldReturnEquals()
        {
            //Arrange
            var base64 = BuildSmallBase64();
            var id     = 1;
            //mocking left side
            var mockDiffLeftRepository = MockDiffLeft(base64, id);
            //mocking right side
            var mockDiffRightRepository = MockDiffRight(base64, id);

            var differenceService = new DifferenceService(mockDiffLeftRepository.Object, mockDiffRightRepository.Object);

            //Act
            var result = differenceService.Compare(id);

            //Assert
            Assert.Equal("EQUAL", result.Status);
        }
        public void Compare_WhenDifferentSize_ShouldReturnDifferentSize()
        {
            //Arrange
            var smallBase64  = BuildSmallBase64();
            var biggerBase64 = BuildBiggerBase64();
            var id           = 1;
            //mocking left side
            var mockDiffLeftRepository = MockDiffLeft(smallBase64, id);
            //mocking right side
            var mockDiffRightRepository = MockDiffRight(biggerBase64, id);

            var differenceService = new DifferenceService(mockDiffLeftRepository.Object, mockDiffRightRepository.Object);

            //Act
            var result = differenceService.Compare(id);

            //Assert
            Assert.Equal("DIFFERENT_SIZES", result.Status);
        }
        public void Compare_WhenSameSizeButOneDifference_ShouldReturnInsights()
        {
            //Arrange
            var smallBase64     = BuildSmallBase64();
            var differentBase64 = BuildSmallWithOneDifferenceBase64();
            //var smallBase64 = "asdfghjkl";
            //var differentBase64 = "asderhjkl";
            var id = 1;
            //mocking left side
            var mockDiffLeftRepository = MockDiffLeft(smallBase64, id);
            //mocking right side
            var mockDiffRightRepository = MockDiffRight(differentBase64, id);

            var differenceService = new DifferenceService(mockDiffLeftRepository.Object, mockDiffRightRepository.Object);

            //Act
            var result = differenceService.Compare(id);

            //Assert
            Assert.Equal("SAME_SIZE_BUT_DIFFERENT_DATA", result.Status);
            Assert.Equal(1, result.Insights.Count);
            Assert.Equal(298, result.Insights.FirstOrDefault().Offset);
            Assert.Equal(1, result.Insights.FirstOrDefault().Lenght);
        }
        public async Task FindsDiffInStorage(DifferenceType diffType,
                                             DifferenceReadiness diffReadiness, int leftOffset)
        {
            var queue   = Substitute.For <IDifferenceQueue>();
            var storage = Substitute.For <IStorage>();

            var diff = new DifferenceContent
            {
                Type    = diffType,
                Details = new[] { new DifferenceDetail {
                                      LeftOffset = leftOffset
                                  } },
            };

            storage.LoadDiffAsync(10).Returns(Task.FromResult((diff, diffReadiness)));

            var service = new DifferenceService(queue, Enumerable.Empty <IQueueConsumer>(), storage);

            var(found, readiness) = await service.FindDiffAsync(10);

            found.Type.Should().Be(diffType);
            found.Details.Should().ContainSingle(d => d.LeftOffset == leftOffset);
            readiness.Should().Be(diffReadiness);
        }