Esempio n. 1
0
        public void ComposedExtension()
        {
            var actual =
                MarkupExtensionParser.MarkupExtension.Parse(
                    "{Binding Width, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type Grid}}}");

            var expected = new MarkupExtensionNode(
                new IdentifierNode("BindingExtension"),
                new OptionsCollection(
                    new List<Option>
                    {
                        new PositionalOption("Width"),
                        new PropertyOption(
                            "RelativeSource",
                            new MarkupExtensionNode(
                                new IdentifierNode("RelativeSourceExtension"),
                                new OptionsCollection
                                {
                                    new PositionalOption("FindAncestor"),
                                    new PropertyOption("AncestorLevel", new StringNode("1")),
                                    new PropertyOption(
                                        "AncestorType",
                                        new MarkupExtensionNode(
                                            new IdentifierNode("x", "TypeExtension"),
                                            new OptionsCollection
                                            {
                                                new PositionalOption("Grid")
                                            }))

                                }))
                    }));

            Assert.AreEqual(expected, actual);
        }
        public IEnumerable<XamlInstruction> Convert(MarkupExtensionNode tree)
        {
            var identifierNode = tree.Identifier;
            var xamlType = wiringContext.TypeContext.GetByPrefix(identifierNode.Prefix, identifierNode.TypeName);
            yield return Inject.StartOfObject(xamlType);

            foreach (var instruction in ParseArguments(tree.Options.OfType<PositionalOption>())) yield return instruction;
            foreach (var instruction in ParseProperties(tree.Options.OfType<PropertyOption>(), xamlType)) yield return instruction;

            yield return Inject.EndOfObject();
        }
        public void NameOnly()
        {
            var tree = new MarkupExtensionNode(new IdentifierNode("DummyExtension"));
            var sut = new MarkupExtensionNodeToXamlNodesConverter(WiringContext);
            var actualNodes = sut.Convert(tree).ToList();
            var expectedNodes = new List<XamlNode>
            {
                x.StartObject<DummyExtension>(),
                x.EndObject(),
            };

            CollectionAssert.AreEqual(expectedNodes, actualNodes);
        }
        public void NameAndAttribute()
        {
            var tree = new MarkupExtensionNode(new IdentifierNode("DummyExtension"), new OptionsCollection {new PropertyOption("Property", new StringNode("Value"))});
            var sut = new MarkupExtensionNodeToXamlNodesConverter(WiringContext);
            var actualNodes = sut.Convert(tree).ToList();

            var expectedNodes = new List<XamlNode>
            {
                x.StartObject<DummyExtension>(),
                x.StartMember<DummyExtension>(d => d.Property),
                x.Value("Value"),
                x.EndMember(),
                x.EndObject(),
            };

            CollectionAssert.AreEqual(expectedNodes, actualNodes);
        }
        public void NameAndAttribute()
        {
            var tree = new MarkupExtensionNode(new IdentifierNode("DummyExtension"), new OptionsCollection {new PropertyOption("Property", new StringNode("Value"))});
            var sut = new MarkupExtensionNodeToXamlNodesConverter(TypeRuntimeTypeSource);
            var actualNodes = sut.ParseMarkupExtensionNode(tree).ToList();

            var expectedInstructions = new List<Instruction>
            {
                X.StartObject<DummyExtension>(),
                X.StartMember<DummyExtension>(d => d.Property),
                X.Value("Value"),
                X.EndMember(),
                X.EndObject(),
            };

            CollectionAssert.AreEqual(expectedInstructions, actualNodes);
        }
Esempio n. 6
0
        public IEnumerable <Instruction> ParseMarkupExtensionNode(MarkupExtensionNode tree)
        {
            var identifierNode = tree.Identifier;
            var xamlType       = TypeSource.GetByPrefix(identifierNode.Prefix, identifierNode.TypeName);

            yield return(Inject.StartOfObject(xamlType));

            foreach (var instruction in ParseArguments(tree.Options.OfType <PositionalOption>()))
            {
                yield return(instruction);
            }
            foreach (var instruction in ParseProperties(tree.Options.OfType <PropertyOption>(), xamlType))
            {
                yield return(instruction);
            }

            yield return(Inject.EndOfObject());
        }
Esempio n. 7
0
 public void ParsePropertyWithExtension()
 {
     var actual = MarkupExtensionParser.Assignment.Parse("Value={Dummy}");
     var markupExtensionNode = new MarkupExtensionNode(new IdentifierNode("DummyExtension"));
     Assert.AreEqual(new AssignmentNode("Value", markupExtensionNode), actual);
 }
        public void PositionalOption()
        {
            var tree = new MarkupExtensionNode(new IdentifierNode("DummyExtension"), new OptionsCollection
            {
               new PositionalOption("Option")
            });
            var sut = new MarkupExtensionNodeToXamlNodesConverter(WiringContext);
            var actualNodes = sut.Convert(tree).ToList();

            var expectedNodes = new Collection<XamlNode>
            {
                x.StartObject<DummyExtension>(),
                x.MarkupExtensionArguments(),
                x.Value("Option"),
                x.EndMember(),
                x.EndObject(),
            };

            CollectionAssert.AreEqual(expectedNodes, actualNodes);
        }
        public void NameOnly()
        {
            var tree = new MarkupExtensionNode(new IdentifierNode("DummyExtension"));
            var sut = new MarkupExtensionNodeToXamlNodesConverter(TypeRuntimeTypeSource);
            var actualNodes = sut.ParseMarkupExtensionNode(tree).ToList();
            var expectedInstructions = new List<Instruction>
            {
                X.StartObject<DummyExtension>(),
                X.EndObject(),
            };

            CollectionAssert.AreEqual(expectedInstructions, actualNodes);
        }
        public void PositionalOption()
        {
            var tree = new MarkupExtensionNode(new IdentifierNode("DummyExtension"), new OptionsCollection
            {
               new PositionalOption("Option")
            });
            var sut = new MarkupExtensionNodeToXamlNodesConverter(TypeRuntimeTypeSource);
            var actualNodes = sut.ParseMarkupExtensionNode(tree).ToList();

            var expectedInstructions = new Collection<Instruction>
            {
                X.StartObject<DummyExtension>(),
                X.MarkupExtensionArguments(),
                X.Value("Option"),
                X.EndMember(),
                X.EndObject(),
            };

            CollectionAssert.AreEqual(expectedInstructions, actualNodes);
        }