public void ShouldMapADynamicXmlObjectToClassWithNestedElements() { string xmlstring = @" <Contact Name=""Rui"" Id=""111""> <phone>1234567890</phone> <mail>[email protected]</mail> <cities> <city>Paris</city> <city>Lisbon</city> </cities> </Contact> "; dynamic contactDynamic = new DynamicXmlElement(xmlstring); Contact expected = new Contact(); expected.Name = "Rui"; expected.Id = 111; expected.Mail = "*****@*****.**"; expected.Phone = "1234567890"; expected.Cities.Add("Paris"); expected.Cities.Add("Lisbon"); Contact actual = ValueFactory.TryGet <Contact>(contactDynamic); Assert.AreEqual(actual, expected); }
public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result) { if (indexes.Length == 1 && indexes[0] is int) { result = new DynamicXmlElement(this.elements[(int)indexes[0]]); return(true); } return(base.TryGetIndex(binder, indexes, out result)); }
public void TryXmlDynamic() { string xml = @" <people> <Person name ='samuele'/> </people> "; var node = XElement.Parse(xml); dynamic dynamicNode = new DynamicXmlElement(node); Console.WriteLine(dynamicNode.Person.name); }
public void ShouldNotExplodeWithNonExistingKey() { string xmlstring = @" <add routeName=""default"" path=""{controller}/{action}""> <defaultValues controller=""Home"" action=""Index""/> </add>"; dynamic route = new DynamicXmlElement(xmlstring); Assert.DoesNotThrow( () => { var notExistingNode = route.constraints; }); }
public void ShouldUseDynamicXmlAsDynamicModel() { string xmlString = @"<Model name=""Rui""><site>ArtOfNet</site><child name=""Thaïs""/><child name=""Léandre"" /></Model>"; dynamic model = new DynamicXmlElement(xmlString); Assert.AreEqual(model.name, "Rui"); Assert.AreEqual(model.child.Count, 2); foreach (dynamic item in model.child) { Assert.IsNotNull(item.name); } Assert.AreEqual(model.child[0].name, "Thaïs"); Assert.AreEqual(model.child[1].name, "Léandre"); }
public void ShouldMapADynamicXmlObjectToARealImplementation() { string xmlstring = @" <Contact Name=""Rui"" Id=""111"" />"; dynamic contactDynamic = new DynamicXmlElement(xmlstring); Contact expected = new Contact(); expected.Name = "Rui"; expected.Id = 111; Contact actual = ValueFactory.TryGet <Contact>(contactDynamic); Assert.AreEqual(actual, expected); }
public void ShouldLoadDynamicFromXmlString() { string xmlString = @"<Contacts><User name=""user1""/><User name=""user2""/></Contacts>"; dynamic xml = new DynamicXmlElement(xmlString); dynamic users = xml.User; Assert.IsNotNull(users); Assert.IsTrue(users.Count == 2); foreach (dynamic user in users) { Assert.IsNotNull(user.name); } string user1 = users[0].name; Assert.AreEqual(user1, "user1"); string user2 = users[1].name; Assert.AreEqual(user2, "user2"); }
public override bool TryGetMember(GetMemberBinder binder, out object result) { XElement element = _node.Element(binder.Name); if (element is not null) { result = new DynamicXmlElement(element); return(true); } XAttribute attribute = _node.Attribute(binder.Name); if (attribute is not null) { result = attribute.Value; return(true); } result = null; return(false); }
public void ShouldGetValuesFromDynamicXmlRoute() { string xmlstring = @" <add routeName=""default"" path=""{controller}/{action}""> <defaultValues controller=""Home"" action=""Index""/> </add>"; dynamic route = new DynamicXmlElement(xmlstring); //Assert.AreEqual(route.Name, "add"); Assert.AreEqual(route.routeName, "default"); Assert.AreEqual(route.path, "{controller}/{action}"); dynamic defaults = route.defaultValues; Assert.AreEqual(defaults.controller, "Home"); var anon = new { controller = "Home", action = "Index" }; Assert.AreEqual(defaults.controller, anon.controller); Dictionary <string, object> dico = new Dictionary <string, object>(); dico.Add("controller", "Home"); dico.Add("action", "About"); }
public static string ProcessTemplateWithXmlModel(string template, string xml) { dynamic model = new DynamicXmlElement(xml); return(ProcessTemplate(template, model)); }
public static string ProcessTemplateWithXmlModel(string template, string xml) { dynamic model = new DynamicXmlElement(xml); return ProcessTemplate(template,model); }