public void ParseListInvalid3() { Assert.Throws(typeof(FormatException), () => { XamlTypeName.ParseList("", new MyNSResolver()); }); }
StartTagInfo GetStartTagInfo() { string name = r.LocalName; string ns = r.NamespaceURI; string typeArgNames = null; var members = new List <Pair> (); var atts = ProcessAttributes(r, members); // check TypeArguments to resolve Type, and remove them from the list. They don't appear as a node. var l = new List <Pair> (); foreach (var p in members) { if (p.Key == XamlLanguage.TypeArguments) { typeArgNames = p.Value; l.Add(p); break; } } foreach (var p in l) { members.Remove(p); } IList <XamlTypeName> typeArgs = typeArgNames == null ? null : XamlTypeName.ParseList(typeArgNames, xaml_namespace_resolver); var xtn = new XamlTypeName(ns, name, typeArgs); return(new StartTagInfo() { Name = name, Namespace = ns, TypeName = xtn, Members = members, Attributes = atts }); }
public void ParseListNullNames() { Assert.Throws(typeof(ArgumentNullException), () => { XamlTypeName.ParseList(null, new MyNSResolver()); }); }
public void ParseListNullResolver() { Assert.Throws(typeof(ArgumentNullException), () => { XamlTypeName.ParseList("foo", null); }); }
public void ParseListValid() { var l = XamlTypeName.ParseList("foo, bar", new MyNSResolver()); Assert.AreEqual(2, l.Count, "#1"); Assert.AreEqual("{}foo", l [0].ToString(), "#2"); Assert.AreEqual("{}bar", l [1].ToString(), "#3"); l = XamlTypeName.ParseList("foo,bar", new MyNSResolver()); Assert.AreEqual("{}foo", l [0].ToString(), "#4"); Assert.AreEqual("{}bar", l [1].ToString(), "#5"); }
StartTagInfo GetStartTagInfo() { string name = r.LocalName; string ns = ResolveLocalNamespace(r.NamespaceURI); string typeArgNames; var members = new List <Pair> (); var atts = ProcessAttributes(r, members, out typeArgNames); IList <XamlTypeName> typeArgs = typeArgNames == null ? null : XamlTypeName.ParseList(typeArgNames, xaml_namespace_resolver); var xtn = new XamlTypeName(ns, name, typeArgs); return(new StartTagInfo { Name = name, Namespace = ns, TypeName = xtn, Members = members, Attributes = atts }); }
public void ParseListInvalid3() { XamlTypeName.ParseList("", new MyNSResolver()); }
void ReadStartTypeOrContentGetObject() { string name = r.LocalName; string ns = r.NamespaceURI; string typeArgNames = null; var members = new List <Pair> (); var atts = ProcessAttributes(members); // check TypeArguments to resolve Type, and remove them from the list. They don't appear as a node. var l = new List <Pair> (); foreach (var p in members) { if (p.Key == XamlLanguage.TypeArguments) { typeArgNames = p.Value; l.Add(p); break; } } foreach (var p in l) { members.Remove(p); } XamlType xt; IList <XamlTypeName> typeArgs = typeArgNames == null ? null : XamlTypeName.ParseList(typeArgNames, xaml_namespace_resolver); var xtn = new XamlTypeName(ns, name, typeArgs); xt = sctx.GetXamlType(xtn); if (xt == null) { // creates name-only XamlType. Also, it does not seem that it does not store this XamlType to XamlSchemaContext (Try GetXamlType(xtn) after reading such xaml node, it will return null). xt = new XamlType(ns, name, typeArgs == null ? null : typeArgs.Select <XamlTypeName, XamlType> (xxtn => sctx.GetXamlType(xxtn)).ToArray(), sctx); } if (current_member != null && !xt.CanAssignTo(current_member.Type)) { var pxt = types.Count > 0 ? types.Peek() : null; if (pxt != null && pxt.ContentProperty == current_member) { SetGetObject(); return; } // It could still be GetObject if current_member // is not a directive and current type is not // a markup extension. // (I'm not very sure about the condition; // it could be more complex.) // seealso: bug #682131 if (!get_flags.Peek() && !(current_member is XamlDirective) && !xt.IsMarkupExtension) { SetGetObject(); return; } } types.Push(xt); get_flags.Push(false); current = xt; if (!r.IsEmptyElement) { r.Read(); do { r.MoveToContent(); switch (r.NodeType) { case XmlNodeType.Element: // FIXME: parse type arguments etc. case XmlNodeType.EndElement: break; default: // this value is for Initialization, or Content property value if (xt.ContentProperty != null) { members.Add(new Pair(xt.ContentProperty, r.Value)); } else { members.Add(new Pair(XamlLanguage.Initialization, r.Value)); } r.Read(); continue; } break; } while (true); } else { is_empty_object = true; } foreach (var p in atts) { int idx = p.Key.IndexOf(':'); string prefix = idx > 0 ? p.Key.Substring(0, idx) : String.Empty; string aname = idx > 0 ? p.Key.Substring(idx + 1) : p.Key; idx = aname.IndexOf('.'); if (idx > 0) { string apns = prefix.Length > 0 ? r.LookupNamespace(prefix) : r.NamespaceURI; var apname = aname.Substring(0, idx); var axtn = new XamlTypeName(apns, apname, null); var at = sctx.GetXamlType(axtn); var am = at.GetAttachableMember(aname.Substring(idx + 1)); if (am != null) { members.Add(new Pair(am, p.Value)); } // ignore unknown attribute } var xm = xt.GetMember(aname); if (xm != null) { members.Add(new Pair(xm, p.Value)); } // ignore unknown attribute } node_type = XamlNodeType.StartObject; inside_object_not_member = true; // The next Read() results are likely directives. stored_member_enumerator = members.GetEnumerator(); }
public void ParseListNullResolver() { XamlTypeName.ParseList("foo", null); }
public void ParseListNullNames() { XamlTypeName.ParseList(null, new MyNSResolver()); }
public void ParseListInvalid3() { Assert.Throws <FormatException> (() => XamlTypeName.ParseList("", new MyNSResolver())); }
public void ParseListNullResolver() { Assert.Throws <ArgumentNullException> (() => XamlTypeName.ParseList("foo", null)); }
public void ParseListNullNames() { Assert.Throws <ArgumentNullException> (() => XamlTypeName.ParseList(null, new MyNSResolver())); }