public void CanTranslateRequestRangeToObjectRanges() { var blobs = new[] { new Blob(Range.ByLength(0L, 10L), "foo"), new Blob(Range.ByLength(10L, 10L), "foo"), new Blob(Range.ByLength(20L, 10L), "foo"), new Blob(Range.ByLength(0L, 15L), "bar"), new Blob(Range.ByLength(15L, 15L), "bar"), }; var rt = new RequestToObjectRangeTranslator( new[] { new[] { Range.ByLength(5L, 5L) }.ToGrouping(blobs[0]), new[] { Range.ByLength(10L, 5L), Range.ByLength(17L, 3L), }.ToGrouping(blobs[1]), new[] { Range.ByLength(20L, 7L) }.ToGrouping(blobs[2]), }.ToLookup() ); CollectionAssert.AreEqual( new[] { ContextRange.Create(Range.ByPosition(5L, 9L), "foo"), }, rt.Translate(ContextRange.Create(Range.ByLength(0L, 5L), blobs[0])).ToArray() ); CollectionAssert.AreEqual( new[] { ContextRange.Create(Range.ByPosition(10L, 14L), "foo"), ContextRange.Create(Range.ByPosition(17L, 19L), "foo"), }, rt.Translate(ContextRange.Create(Range.ByLength(0L, 8L), blobs[1])).ToArray() ); CollectionAssert.AreEqual( new[] { ContextRange.Create(Range.ByPosition(20L, 26L), "foo"), }, rt.Translate(ContextRange.Create(Range.ByLength(0L, 8L), blobs[2])).ToArray() ); }
public void ObjectPartsForFullObjectsReturnsExpectedParts() { var fullObjects = new[] { "foo", "bar", "baz" }; var blobs = new[] { new Blob(Range.ByLength(10L, 10L), "hello"), new Blob(Range.ByLength(0L, 123L), "baz"), new Blob(Range.ByLength(15L, 15L), "bar"), new Blob(Range.ByLength(100L, 10L), "foo"), new Blob(Range.ByLength(0L, 15L), "bar"), new Blob(Range.ByLength(0L, 100L), "foo"), }; CollectionAssert.AreEquivalent( new[] { new Ds3PartialObject(Range.ByLength(0L, 123L), "baz"), new Ds3PartialObject(Range.ByLength(0L, 110L), "foo"), new Ds3PartialObject(Range.ByLength(0L, 30L), "bar"), }, PartialObjectRangeUtilities.ObjectPartsForFullObjects(fullObjects, blobs) ); }