Beispiel #1
0
        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);
        }
Beispiel #2
0
            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));
            }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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;
            });
        }
Beispiel #5
0
        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");
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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");
        }
Beispiel #8
0
            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);
            }
Beispiel #9
0
        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");
        }
Beispiel #10
0
        public static string ProcessTemplateWithXmlModel(string template, string xml)
        {
            dynamic model = new DynamicXmlElement(xml);

            return(ProcessTemplate(template, model));
        }
Beispiel #11
0
 public static string ProcessTemplateWithXmlModel(string template, string xml)
 {
     dynamic model = new DynamicXmlElement(xml);
     return ProcessTemplate(template,model);
 }