public void Test_Write_Delete_CorrectState(string key) { var route = DocumentRoute.Create(TestContext.CurrentContext.Test.Name); var address = DocumentAddress.Create(route, key); var data = new byte[] { 1, 2, 3 }; // act1 using (var writeStream = store.GetWriteStream(address)) { writeStream.Write(data); } var keys1 = store.GetAddresses( route: route, options: DocumentSearchOption.TopLevelOnly ); var contains1 = store.ContainsAddress(address); // assert1 Assert.IsTrue(contains1); Assert.IsTrue(keys1.Contains(address)); // act2 store.Clear(); var keys2 = store.GetAddresses( route: route, options: DocumentSearchOption.TopLevelOnly ); var contains2 = store.ContainsAddress(address); // assert2 Assert.IsFalse(contains2); Assert.IsFalse(keys2.Contains(address)); }
public void InvalidPathCharRoutes_Encode_Decode_IsEqual() { var values = Path.GetInvalidFileNameChars().Select(c => c.ToString()); var routes = values.Select(c => DocumentRoute.Create(c)).ToArray(); var roundTrippedRoutes = routes .Select(k => k.Encode()) .Select(k => k.Decode()) .ToArray(); Assert.AreEqual(routes, roundTrippedRoutes); }
public void Equals_Correct() { const string SEG_1 = "S1"; const string SEG_2 = "S2"; var route1 = DocumentRoute.Create(SEG_1); var route2 = DocumentRoute.Create(SEG_1); var route3 = DocumentRoute.Create(SEG_2); Assert.AreEqual(route1, route2); Assert.AreNotEqual(route1, route3); }
public void Equals_Correct() { DocumentRoute route = DocumentRoute.Create("S1"); const string KEY_1 = "K1"; const string KEY_2 = "K2"; var address1 = DocumentAddress.Create(route, KEY_1); var address2 = DocumentAddress.Create(route, KEY_2); Assert.AreEqual(address1, address1); Assert.AreNotEqual(address1, address2); }
public void Test_Routing() { var routeRoot = DocumentRoute.Create(TestContext.CurrentContext.Test.Name); const string A = "<|.A.|>"; var routeA = DocumentRoute.Create(A).Prepend(routeRoot); const string B = "<|.B.|>"; var routeAB = DocumentRoute.Create(A, B).Prepend(routeRoot); var addressA1 = DocumentAddress.Create(routeA, Guid.NewGuid().ToString()); var addressAB2 = DocumentAddress.Create(routeAB, Guid.NewGuid().ToString()); var data = new byte[] { 1, 2, 3 }; using (var writeStream = store.GetWriteStream(addressA1)) { writeStream.Write(data); } using (var writeStream = store.GetWriteStream(addressAB2)) { writeStream.Write(data); } // A var addressesA = store.GetAddresses(routeA, DocumentSearchOption.TopLevelOnly); // A/* var addressesAPlus = store.GetAddresses(routeA, DocumentSearchOption.AllLevels); // A/B var addressesAB = store.GetAddresses(routeAB, DocumentSearchOption.TopLevelOnly); Assert.AreEqual( new DocumentAddress[] { addressA1 }, addressesA.ToArray() ); Assert.AreEqual( new DocumentAddress[] { addressA1, addressAB2 }, addressesAPlus.ToArray() ); Assert.AreEqual( new DocumentAddress[] { addressAB2 }, addressesAB.ToArray() ); }
public void Test_RoundTripData_Equals() { var route = DocumentRoute.Create(TestContext.CurrentContext.Test.Name); var address = DocumentAddress.Create(route, Guid.NewGuid().ToString()); var data = new byte[] { 1, 2, 3 }; using (var writeStream = store.GetWriteStream(address)) { writeStream.Write(data); } var buffer = new byte[data.Length]; using (var readStream = store.GetReadStream(address)) { readStream.Read(buffer, 0, (int)readStream.Length); } Assert.AreEqual(buffer, data); }
public void StartsWith_Correct() { const string SEG_1 = "S1"; const string SEG_2 = "S2"; var route0 = DocumentRoute.Default; var route1 = DocumentRoute.Create(SEG_1); var route2 = DocumentRoute.Create(SEG_1, SEG_2); var expectedStartsWithTrueRelations = new List <(DocumentRoute, DocumentRoute)>() { (route0, route0), (route1, route0), (route1, route1), (route2, route0), (route2, route1) }; var expectedStartsWithFalseRelations = new List <(DocumentRoute, DocumentRoute)>() { (route0, route1), (route0, route2), (route1, route2) }; foreach (var rel in expectedStartsWithTrueRelations) { Assert.IsTrue(rel.Item1.StartsWith(rel.Item2)); } foreach (var rel in expectedStartsWithFalseRelations) { Assert.IsFalse(rel.Item1.StartsWith(rel.Item2)); } } [Test]
private static DocumentAddress GetAddress(string path) { var fileName = Path .GetFileName(path); var segments = path .Split(Path.DirectorySeparatorChar) .Except(new[] { string.Empty, fileName }) .ToArray(); var route = DocumentRoute .Create(segments) .Decode(); var fileNameTrimmed = Path .GetFileNameWithoutExtension(fileName); var key = DocumentKey .Create(fileNameTrimmed) .Decode(); return(DocumentAddress .Create(route, key)); }
static DocumentRoute GetTypedRoute() => DocumentRoute .Create(typeof(T) .ShortName(true) .Replace(">", "}") .Replace("<", "{"));