示例#1
0
            public void Test(bool useCompiledXaml)
            {
                var vm = new MockViewModel {
                    Text  = "Text0",
                    Model = new MockViewModel {
                        Text = "Text1"
                    },
                };

                vm.Model [3] = "TextIndex";

                var layout = new BindingsCompiler(useCompiledXaml);

                layout.BindingContext = vm;
                //testing paths
                Assert.AreEqual("Text0", layout.label0.Text);
                Assert.AreEqual("Text0", layout.label1.Text);
                Assert.AreEqual("Text1", layout.label2.Text);
                Assert.AreEqual("TextIndex", layout.label3.Text);

                //testing selfPath
                layout.label4.BindingContext = "Self";
                Assert.AreEqual("Self", layout.label4.Text);

                //testing INPC
                vm.Text = "Text2";
                Assert.AreEqual("Text2", layout.label0.Text);

                //testing 2way
                Assert.AreEqual("Text2", layout.entry0.Text);
                ((IElementController)layout.entry0).SetValueFromRenderer(Entry.TextProperty, "Text3");
                Assert.AreEqual("Text3", layout.entry0.Text);

                //testing invalid bindingcontext type
                layout.BindingContext = new object();
                Assert.AreEqual(null, layout.label0.Text);
            }
            public void Test(bool useCompiledXaml)
            {
                if (useCompiledXaml)
                {
                    MockCompiler.Compile(typeof(BindingsCompiler));
                }
                var vm = new MockViewModel {
                    Text  = "Text0",
                    I     = 42,
                    Model = new MockViewModel {
                        Text = "Text1"
                    },
                    StructModel = new MockStructViewModel {
                        Model = new MockViewModel {
                            Text = "Text9"
                        }
                    }
                };

                vm.Model [3] = "TextIndex";

                var layout = new BindingsCompiler(useCompiledXaml);

                layout.BindingContext        = vm;
                layout.label6.BindingContext = new MockStructViewModel {
                    Model = new MockViewModel {
                        Text = "text6"
                    }
                };

                //testing paths
                Assert.AreEqual("Text0", layout.label0.Text);
                Assert.AreEqual("Text0", layout.label1.Text);
                Assert.AreEqual("Text1", layout.label2.Text);
                Assert.AreEqual("TextIndex", layout.label3.Text);
                Assert.AreEqual("Text0", layout.label8.Text);

                //value types
                Assert.That(layout.label5.Text, Is.EqualTo("42"));
                Assert.That(layout.label6.Text, Is.EqualTo("text6"));
                Assert.AreEqual("Text9", layout.label9.Text);
                Assert.AreEqual("Text9", layout.label10.Text);
                layout.label9.Text = "Text from label9";
                Assert.AreEqual("Text from label9", vm.StructModel.Text);
                layout.label10.Text = "Text from label10";
                Assert.AreEqual("Text from label10", vm.StructModel.Model.Text);

                //testing selfPath
                layout.label4.BindingContext = "Self";
                Assert.AreEqual("Self", layout.label4.Text);
                layout.label7.BindingContext = 42;
                Assert.That(layout.label7.Text, Is.EqualTo("42"));

                //testing INPC
                GC.Collect();
                vm.Text = "Text2";
                Assert.AreEqual("Text2", layout.label0.Text);

                //testing 2way
                Assert.AreEqual("Text2", layout.entry0.Text);
                ((IElementController)layout.entry0).SetValueFromRenderer(Entry.TextProperty, "Text3");
                Assert.AreEqual("Text3", layout.entry0.Text);

                //testing invalid bindingcontext type
                layout.BindingContext = new object();
                Assert.AreEqual(null, layout.label0.Text);
            }