public void EndMemberAssignsInstanceToParentProperty()
        {
            var state = new StackingLinkedList<Level>();

            var dummyClass = new DummyClass();
            state.Push(
                new Level
                {
                    Instance = dummyClass,
                    XamlMember = WiringContext.GetMember(WiringContext.GetType(dummyClass.GetType()), "Child"),
                });

            var childClass = new ChildClass();
            state.Push(
                new Level
                {
                    Instance = childClass,
                });

            var sut = new SuperObjectAssembler(state, WiringContext, new TopDownMemberValueContext());

            sut.Process(builder.EndObject());

            Assert.AreEqual(1, state.Count);
            var expectedInstance = state.CurrentValue.Instance;

            Assert.AreSame(expectedInstance, dummyClass);
            Assert.AreSame(((DummyClass)expectedInstance).Child, childClass);
        }
        public void GivenConfigurationOfCollection_GetObjectConfiguresTheLevel()
        {
            var state = new StackingLinkedList<Level>();

            var type = typeof(DummyClass);
            var xamlMember = WiringContext.GetMember(WiringContext.GetType(type), "Items");

            state.Push(
                new Level
                {
                    Instance = new DummyClass(),
                    XamlMember = xamlMember,
                });

            var sut = new SuperObjectAssembler(state, WiringContext, new TopDownMemberValueContext());

            sut.Process(builder.GetObject());

            Assert.AreEqual(2, state.Count);
            Assert.IsTrue(state.CurrentValue.Collection != null);
            Assert.IsTrue(state.CurrentValue.IsGetObject);
        }
 public NamespaceDeclarationCommand(SuperObjectAssembler assembler, NamespaceDeclaration namespaceDeclaration)
     : base(assembler)
 {
     this.namespaceDeclaration = namespaceDeclaration;
 }
Esempio n. 4
0
 public EndMemberCommand(SuperObjectAssembler assembler, ITopDownMemberValueContext topDownMemberValueContext)
     : base(assembler)
 {
     this.topDownMemberValueContext = topDownMemberValueContext;
     typeContext = Assembler.WiringContext.TypeContext;
 }
Esempio n. 5
0
 public GetObjectCommand(SuperObjectAssembler superObjectAssembler)
     : base(superObjectAssembler)
 {
 }
Esempio n. 6
0
 protected Command(SuperObjectAssembler assembler)
 {
     Assembler = assembler;
 }
Esempio n. 7
0
 public StartMemberCommand(SuperObjectAssembler assembler, XamlMemberBase member)
     : base(assembler)
 {
     this.member = member;
 }
Esempio n. 8
0
 public ValueCommand(SuperObjectAssembler superObjectAssembler, string value)
     : base(superObjectAssembler)
 {
     this.value = value;
     ValuePipeLine = new ValuePipeline(superObjectAssembler.WiringContext);
 }
Esempio n. 9
0
 public EndObjectCommand(SuperObjectAssembler assembler)
     : base(assembler)
 {
 }
        public void GivenConfiguredInstance_StartMemberSetsTheMember()
        {
            var state = new StackingLinkedList<Level>();

            var dummyClass = new DummyClass();
            state.Push(
                new Level
                {
                    Instance = dummyClass,
                });

            var xamlMember = WiringContext.GetMember(WiringContext.GetType(dummyClass.GetType()), "Items");

            var sut = new SuperObjectAssembler(state, WiringContext, new TopDownMemberValueContext());

            sut.Process(builder.StartMember<DummyClass>(d => d.Items));

            Assert.AreEqual(1, state.Count);
            Assert.AreEqual(state.CurrentValue.XamlMember, xamlMember);
        }
        public void StartObjectShouldSetTheXamlType()
        {
            var state = new StackingLinkedList<Level>();
            state.Push(new Level());

            var type = typeof(DummyClass);
            var sut = new SuperObjectAssembler(state, WiringContext, new TopDownMemberValueContext());

            sut.Process(builder.StartObject(type));

            var actualType = sut.StateCommuter.XamlType;

            var expectedType = WiringContext.GetType(type);
            Assert.AreEqual(expectedType, actualType);
        }
        public void GivenStateAfterGetObject_WritingObjectAssignsItToTheCollection()
        {
            var state = new StackingLinkedList<Level>();
            var collection = new Collection<Item>();

            state.Push(
                new Level
                {
                    Collection = collection,
                    IsGetObject = true,
                });

            state.Push(new Level());

            var sut = new SuperObjectAssembler(state, WiringContext, new TopDownMemberValueContext());

            sut.Process(builder.StartObject<Item>());
            sut.Process(builder.EndObject());

            Assert.AreEqual(1, collection.Count);
        }
        public void GivenStateAfterGetObject_NeedsTwoEndObjectsToConsumeAllTheLevels()
        {
            var state = new StackingLinkedList<Level>();
            var collection = new Collection<Item>();

            state.Push(
                new Level
                {
                    Collection = collection,
                    IsGetObject = true,
                });

            state.Push(new Level { XamlType = WiringContext.GetType(typeof(Item)) });

            var sut = new SuperObjectAssembler(state, WiringContext, new TopDownMemberValueContext());

            sut.Process(builder.EndObject());
            sut.Process(builder.EndObject());

            Assert.AreEqual(0, state.Count);
        }
        public void GivenCtorArguments_WritingEndObjectMakesResultTheProvidedValueOfTheMarkupExtension()
        {
            var state = new StackingLinkedList<Level>();

            var xamlType = WiringContext.GetType(typeof(DummyClass));
            state.Push(
                new Level
                {
                    XamlType = xamlType,
                    Instance = new DummyClass(),
                    XamlMember = xamlType.GetMember("SampleProperty")
                });

            var constructionArguments = new Collection<ConstructionArgument> { new ConstructionArgument("Value", "Value") };
            state.Push(
                new Level
                {
                    XamlType = WiringContext.GetType(typeof(DummyExtension)),
                    CtorArguments = constructionArguments,
                });

            var sut = new SuperObjectAssembler(state, WiringContext, new TopDownMemberValueContext());
            sut.Process(builder.EndObject());

            Assert.AreEqual("Value", sut.Result);
        }
        public void GivenConfiguredXamlType_StartMemberInstantiatesItSetsTheMember()
        {
            var state = new StackingLinkedList<Level>();

            var type = typeof(DummyClass);
            state.Push(
                new Level
                {
                    XamlType = WiringContext.GetType(type)
                });

            var xamlMember = WiringContext.GetMember(WiringContext.GetType(type), "Items");

            var sut = new SuperObjectAssembler(state, WiringContext, new TopDownMemberValueContext());

            sut.Process(builder.StartMember<DummyClass>(d => d.Items));

            Assert.AreEqual(1, state.Count);
            Assert.IsInstanceOfType(state.CurrentValue.Instance, type);
            Assert.AreEqual(state.CurrentValue.XamlMember, xamlMember);
        }
Esempio n. 16
0
 public StartObjectCommand(SuperObjectAssembler assembler, XamlType xamlType, object rootInstance)
     : base(assembler)
 {
     this.xamlType = xamlType;
     this.rootInstance = rootInstance;
 }