public void ExtendedTest() { String input = "</my/Päth>;rt=\"MyName\";if=\"/someRef/path\";ct=42;obs;sz=10"; Resource root = RemoteResource.NewRoot(input); RemoteResource my = new RemoteResource("my"); my.ResourceType = "replacement"; root.AddSubResource(my); Resource res = root.GetResource("/my/Päth"); Assert.IsNotNull(res); res = root.GetResource("my/Päth"); Assert.IsNotNull(res); res = root.GetResource("my"); res = res.GetResource("Päth"); Assert.IsNotNull(res); res = res.GetResource("/my/Päth"); Assert.IsNotNull(res); Assert.AreEqual(res.Name, "Päth"); Assert.AreEqual(res.Path, "/my/Päth"); Assert.AreEqual(res.ResourceType, "MyName"); Assert.AreEqual(res.InterfaceDescriptions[0], "/someRef/path"); Assert.AreEqual(42, res.ContentTypeCode); Assert.AreEqual(10, res.MaximumSizeEstimate); Assert.AreEqual(true, res.Observable); res = root.GetResource("my"); Assert.IsNotNull(res); Assert.AreEqual("replacement", res.ResourceTypes[0]); }
public static RemoteResource Deserialize(String linkFormat) { RemoteResource root = new RemoteResource(String.Empty); Scanner scanner = new Scanner(linkFormat); String path = null; while ((path = scanner.Find(ResourceNameRegex)) != null) { path = path.Substring(1, path.Length - 2); // Retrieve specified resource, create if necessary RemoteResource resource = new RemoteResource(path); LinkAttribute attr = null; while (scanner.Find(DelimiterRegex, 1) == null && (attr = ParseAttribute(scanner)) != null) { AddAttribute(resource.Attributes, attr); } root.AddSubResource(resource); } return root; }