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); }
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); }
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); }
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")); }
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); }
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); }
public static string GetParameter(this CompositeNode node, string param) { var childnode = node.GetChildNode(param) as LeafNode; return(childnode == null ? string.Empty : childnode.Value.ToString()); }