Exemplo n.º 1
0
        public async Task ComparisonService_ComparisonAsync_Should_Return_Equal_True(byte[] valueLeft, byte[] valueRight, ComparisonEnum type)
        {
            ComparisonService comparisonService = new ComparisonService(_comparisonRepository.Object, _applicationDbContext.Object);

            await comparisonService.InsertOrUpdateAsync(new ComparisonInsertRequestDto()
            {
                Id = id, Value = valueLeft, ValueType = ComparisonEnum.Left
            });

            await comparisonService.InsertOrUpdateAsync(new ComparisonInsertRequestDto()
            {
                Id = id, Value = valueRight, ValueType = ComparisonEnum.Right
            });

            comparison.Should().NotBeNull();

            ComparisonResponseDto result = await comparisonService.CompareAsync(new ComparisonRequestDto()
            {
                Id = id, ValueType = type
            });

            ComparisonResponseObject resultObject = (ComparisonResponseObject)result.Result;

            resultObject.Equal.Should().BeFalse();
            resultObject.SameSize.Should().BeTrue();
        }
        public async Task <IActionResult> Get(int id, [FromBody] CompareRequestModel value)
        {
            ComparisonResponseDto response = await _comparisonService.CompareAsync(new ComparisonRequestDto()
            {
                Id = id, ValueType = value.Type
            });

            return(Ok(response));
        }
Exemplo n.º 3
0
        public async Task ComparisonService_ComparisonAsync_Should_Return_Equal_False(byte[] valueLeft, byte[] valueRight, ComparisonEnum type)
        {
            ComparisonService comparisonService = new ComparisonService(_comparisonRepository.Object, _applicationDbContext.Object);

            await comparisonService.InsertOrUpdateAsync(new ComparisonInsertRequestDto()
            {
                Id = id, Value = valueLeft, ValueType = ComparisonEnum.Left
            });

            await comparisonService.InsertOrUpdateAsync(new ComparisonInsertRequestDto()
            {
                Id = id, Value = valueRight, ValueType = ComparisonEnum.Right
            });

            comparison.Should().NotBeNull();

            ComparisonResponseDto result = await comparisonService.CompareAsync(new ComparisonRequestDto()
            {
                Id = id, ValueType = type
            });

            ComparisonResponseObject resultObject = (ComparisonResponseObject)result.Result;

            resultObject.Equal.Should().BeFalse();
            resultObject.SameSize.Should().BeTrue();
            resultObject.Difference.Length.Should().Be(2);
            var diffList = resultObject.Difference.OffSets.ToList();

            if (type == ComparisonEnum.Left)
            {
                diffList[0].OffSet.Should().Be(0);
                diffList[1].OffSet.Should().Be(3);
            }
            else
            {
                diffList[0].OffSet.Should().Be(2);
                diffList[1].OffSet.Should().Be(3);
            }
        }
        public async Task <ComparisonResponseDto> CompareAsync(ComparisonRequestDto requestDto)
        {
            Comparison comparison = await _comparisonRepository.GetByIdAsync(requestDto.Id);

            if (comparison == null)
            {
                throw new BusinessException("No record found!");
            }

            if (comparison.LeftArray == null)
            {
                throw new BusinessException("Left array is null!");
            }

            if (comparison.RightArray == null)
            {
                throw new BusinessException("Right array is null!");
            }

            ComparisonResponseDto    responseDto    = new ComparisonResponseDto();
            ComparisonResponseObject responseObject = new ComparisonResponseObject();

            responseDto.Success = true;

            // If not of equal size just return that
            if (!comparison.EqualSize())
            {
                responseObject.Equal    = false;
                responseObject.SameSize = false;

                responseDto.Result = responseObject;

                return(responseDto);
            }

            responseObject.SameSize = true;

            // If equal return that
            if (!comparison.IsEqual())
            {
                responseObject.Equal = false;
            }

            // If of same size provide insight in where the diffs are, actual diffs are not needed.
            if (requestDto.ValueType == ComparisonEnum.Left)
            {
                responseObject.Difference = comparison.FindDiffsInLeft();

                responseDto.Result = responseObject;

                return(responseDto);
            }
            else
            {
                responseObject.Difference = comparison.FindDiffsInRight();

                responseDto.Result = responseObject;

                return(responseDto);
            }
        }