public async Task SavesDiffToDataDir(int diffId, DifferenceType type, int offset) { var content = new DifferenceContent { Type = type, Details = new[] { new DifferenceDetail { LeftOffset = offset }, new DifferenceDetail { RightOffset = offset }, } }; var expectedFileName = Path.Combine(_DataDir, string.Concat(diffId.ToString(), ".diff")); File.Delete(expectedFileName); var storage = new DiskStorage(_Options); await storage.SaveDiffAsync(content.InDiffBag(diffId)); File.ReadAllText(expectedFileName) .Should().Be(JsonConvert.SerializeObject(content)); }
public async Task SavesDifferenceContentInStorage() { var ready = new[] { new SourceContent { SourceSide = SourceSide.Left, Data = new byte[] { 1, 2, 3 } }, new SourceContent { SourceSide = SourceSide.Right, Data = new byte[] { 3, 4, 5 } } }.AsEnumerable(); var diff = new DifferenceContent { Type = DifferenceType.Detailed, Details = new[] { new DifferenceDetail { LeftOffset = 1, RightOffset = 2 }, new DifferenceDetail { LeftLength = 3, RightLength = 4 }, } }; var queue = Substitute.For <IDifferenceQueue>(); var storage = Substitute.For <IStorage>(); var algorithm = Substitute.For <IDifferenceAlgorithm>(); queue.ReadyContents.Returns(Observable.Return(ready.InDiffBag(5))); algorithm.GetDiffAsync(ready).Returns(Task.FromResult(diff)); var consumer = new ReadyConsumer(queue, storage, algorithm); await consumer.RunAsync(Scheduler.Immediate, CancellationToken.None); await storage.Received().SaveDiffAsync(diff.InDiffBag(5)); }