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)); }
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); } }