Ejemplo n.º 1
0
        public void SimpleEntries()
        {
            var nameValueColl = new NameValueCollection();

            nameValueColl.Add("name", "hammett");
            nameValueColl.Add("age", "27");
            nameValueColl.Add("age", "28");

            var           builder = new TreeBuilder();
            CompositeNode root    = builder.BuildSourceNode(nameValueColl);

            Assert.IsNotNull(root);
            Assert.AreEqual(2, root.ChildrenCount);

            var entry = (LeafNode)root.GetChildNode("name");

            Assert.IsNotNull(entry);
            Assert.IsFalse(entry.IsArray);
            Assert.AreEqual("name", entry.Name);
            Assert.AreEqual(NodeType.Leaf, entry.NodeType);
            Assert.AreEqual("hammett", entry.Value);

            entry = (LeafNode)root.GetChildNode("age");
            Assert.IsNotNull(entry);
            Assert.IsTrue(entry.IsArray);
            Assert.AreEqual("age", entry.Name);
            Assert.AreEqual(NodeType.Leaf, entry.NodeType);
            Assert.AreEqual(new[] { "27", "28" }, entry.Value);
        }
Ejemplo n.º 2
0
        public void EntriesStartingWithDotShouldBeConsideredSimple()
        {
            var nameValueColl = new NameValueCollection();

            nameValueColl.Add(".name", "hammett");
            nameValueColl.Add(".age", "27");

            var           builder = new TreeBuilder();
            CompositeNode root    = builder.BuildSourceNode(nameValueColl);

            Assert.IsNotNull(root);
            Assert.AreEqual(2, root.ChildrenCount);

            var entry = (LeafNode)root.GetChildNode(".name");

            Assert.IsNotNull(entry);
            Assert.IsFalse(entry.IsArray);
            Assert.AreEqual(".name", entry.Name);
            Assert.AreEqual(NodeType.Leaf, entry.NodeType);
            Assert.AreEqual("hammett", entry.Value);

            entry = (LeafNode)root.GetChildNode(".age");
            Assert.IsNotNull(entry);
            Assert.IsFalse(entry.IsArray);
            Assert.AreEqual(".age", entry.Name);
            Assert.AreEqual(NodeType.Leaf, entry.NodeType);
            Assert.AreEqual("27", entry.Value);
        }
Ejemplo n.º 3
0
        private object ObtainPrimaryKeyValue(ActiveRecordModel model, CompositeNode node, String prefix,
                                             out PrimaryKeyModel pkModel)
        {
            pkModel = ObtainPrimaryKey(model);

            var pkPropName = pkModel.Property.Name;

            var idNode = node.GetChildNode(pkPropName);

            if (idNode == null)
            {
                return(null);
            }

            if (idNode != null && idNode.NodeType != NodeType.Leaf)
            {
                throw new BindingException("Expecting leaf node to contain id for ActiveRecord class. " +
                                           "Prefix: {0} PK Property Name: {1}", prefix, pkPropName);
            }

            var lNode = (LeafNode)idNode;

            if (lNode == null)
            {
                throw new BindingException("ARDataBinder autoload failed as element {0} " +
                                           "doesn't have a primary key {1} value", prefix, pkPropName);
            }

            bool conversionSuc;

            return(Converter.Convert(pkModel.Property.PropertyType, lNode.ValueType, lNode.Value, out conversionSuc));
        }
        public void TwoLevels()
        {
            var args = new NameValueCollection();

            args.Add("customer.name", "hammett");
            args.Add("customer.age", "26");
            args.Add("customer.location.code", "pt-br");
            args.Add("customer.location.country", "55");

            var builder = new TreeBuilder();

            CompositeNode root = builder.BuildSourceNode(args);

            Assert.IsNotNull(root);

            var node = (CompositeNode)root.GetChildNode("customer");

            Assert.IsNotNull(root);

            var locationNode = (CompositeNode)node.GetChildNode("location");

            Assert.IsNotNull(locationNode);

            Assert.AreEqual("pt-br", ((LeafNode)locationNode.GetChildNode("code")).Value);
            Assert.AreEqual("55", ((LeafNode)locationNode.GetChildNode("country")).Value);
        }
Ejemplo n.º 5
0
        public void IndexedFlatEntries()
        {
            var nameValueColl = new NameValueCollection();

            nameValueColl.Add("emails[0]", "*****@*****.**");
            nameValueColl.Add("emails[1]", "*****@*****.**");
            nameValueColl.Add("emails[2]", "*****@*****.**");

            var           builder = new TreeBuilder();
            CompositeNode root    = builder.BuildSourceNode(nameValueColl);

            Assert.IsNotNull(root);
            Assert.AreEqual(1, root.ChildrenCount);

            var indexNode = (IndexedNode)root.GetChildNode("emails");

            Assert.IsNotNull(indexNode);
            Assert.AreEqual(3, indexNode.ChildrenCount);

            Node[] entries = indexNode.ChildNodes;
            Assert.IsNotNull(entries);
            Assert.AreEqual(3, entries.Length);

            Assert.AreEqual("*****@*****.**", ((LeafNode)entries[0]).Value);
            Assert.AreEqual("*****@*****.**", ((LeafNode)entries[1]).Value);
            Assert.AreEqual("*****@*****.**", ((LeafNode)entries[2]).Value);
        }
        public void IndexedContent()
        {
            var args = new NameValueCollection();

            args.Add("customer[0].name", "hammett");
            args.Add("customer[0].age", "26");
            args.Add("customer[0].all", "yada yada yada");
            args.Add("customer[10].name", "frasier");
            args.Add("customer[10].age", "50");
            args.Add("customer[10].all", "yada");

            var builder = new TreeBuilder();

            CompositeNode root = builder.BuildSourceNode(args);

            var node = (IndexedNode)root.GetChildNode("customer");

            Assert.IsNotNull(node);
            Assert.AreEqual(2, node.ChildrenCount);

            var cnode = (CompositeNode)node.GetChildNode("0");

            Assert.AreEqual("hammett", ((LeafNode)cnode.GetChildNode("name")).Value);
            Assert.AreEqual("26", ((LeafNode)cnode.GetChildNode("age")).Value);
            Assert.AreEqual("yada yada yada", ((LeafNode)cnode.GetChildNode("all")).Value);

            cnode = (CompositeNode)node.GetChildNode("10");

            Assert.AreEqual("frasier", ((LeafNode)cnode.GetChildNode("name")).Value);
            Assert.AreEqual("50", ((LeafNode)cnode.GetChildNode("age")).Value);
            Assert.AreEqual("yada", ((LeafNode)cnode.GetChildNode("all")).Value);
        }
        public void NoValidEntries()
        {
            var args = new NameValueCollection();

            args.Add("customername", "x");
            args.Add("customerage", "x");
            args.Add("customerall", "x");

            var builder = new TreeBuilder();

            CompositeNode root = builder.BuildSourceNode(args);

            Assert.IsNull(root.GetChildNode("customer"));
        }
Ejemplo n.º 8
0
        public void IndexedEntries()
        {
            var nameValueColl = new NameValueCollection();

            nameValueColl.Add("customer[0].name", "hammett");
            nameValueColl.Add("customer[0].age", "27");
            nameValueColl.Add("customer[0].age", "28");
            nameValueColl.Add("customer[1].name", "hamilton");
            nameValueColl.Add("customer[1].age", "28");
            nameValueColl.Add("customer[1].age", "29");

            var           builder = new TreeBuilder();
            CompositeNode root    = builder.BuildSourceNode(nameValueColl);

            Assert.IsNotNull(root);
            Assert.AreEqual(1, root.ChildrenCount);

            var indexNode = (IndexedNode)root.GetChildNode("customer");

            Assert.IsNotNull(indexNode);
            Assert.AreEqual(2, indexNode.ChildrenCount);

            var node = (CompositeNode)indexNode.GetChildNode("0");

            Assert.IsNotNull(node);
            Assert.AreEqual(2, node.ChildrenCount);

            var entry = (LeafNode)node.GetChildNode("name");

            Assert.IsNotNull(entry);
            Assert.IsFalse(entry.IsArray);
            Assert.AreEqual("name", entry.Name);
            Assert.AreEqual(NodeType.Leaf, entry.NodeType);
            Assert.AreEqual("hammett", entry.Value);

            node = (CompositeNode)indexNode.GetChildNode("1");
            Assert.IsNotNull(node);
            Assert.AreEqual(2, node.ChildrenCount);

            entry = (LeafNode)node.GetChildNode("name");
            Assert.IsNotNull(entry);
            Assert.IsFalse(entry.IsArray);
            Assert.AreEqual("name", entry.Name);
            Assert.AreEqual(NodeType.Leaf, entry.NodeType);
            Assert.AreEqual("hamilton", entry.Value);
        }
Ejemplo n.º 9
0
        CompositeNode GetOrCreateIndexedNode(CompositeNode parent, string nodeName)
        {
            nodeName = NormalizeKey(nodeName);
            var node = parent.GetChildNode(nodeName);

            if (node != null && node.NodeType != NodeType.Indexed)
            {
                throw new BindingException("Attempt to create or obtain an indexed node " +
                                           "named {0}, but a node with the same exists with the type {1}", nodeName, node.NodeType);
            }

            if (node == null)
            {
                node = new IndexedNode(nodeName);
                parent.AddChildNode(node);
            }

            return((IndexedNode)node);
        }
        public void OneLevelNode()
        {
            var args = new NameValueCollection();

            args.Add("customer.name", "hammett");
            args.Add("customer.age", "26");
            args.Add("customer.all", "yada yada yada");

            var builder = new TreeBuilder();

            CompositeNode root = builder.BuildSourceNode(args);

            var node = (CompositeNode)root.GetChildNode("customer");

            Assert.IsNotNull(node);

            Assert.AreEqual("hammett", ((LeafNode)node.GetChildNode("name")).Value);
            Assert.AreEqual("26", ((LeafNode)node.GetChildNode("age")).Value);
            Assert.AreEqual("yada yada yada", ((LeafNode)node.GetChildNode("all")).Value);
        }
Ejemplo n.º 11
0
        public static string GetParameter(this CompositeNode node, string param)
        {
            var childnode = node.GetChildNode(param) as LeafNode;

            return(childnode == null ? string.Empty : childnode.Value.ToString());
        }