public static void Reset()
        {
            var sb    = new StringBuilder();
            var model = new TestModel();

            var binds  = new List <IBind>();
            var fields = new List <VisualElement>();

            var bindsFactory  = new BindFactory();
            var fieldsFactory = new BaseBindableFieldFactory();

            foreach (var propertyInfo in typeof(TestModel)
                     .GetMembers <SerializeAttribute>(isRecursive : true))
            {
                try
                {
                    binds.Add(bindsFactory.Create(model, propertyInfo));
                    fields.Add(fieldsFactory.Create(binds.Last()));
                }
                catch (Exception e)
                {
                    Debug.LogError($"{e.Message }\n{e.StackTrace}");
                }
            }
            binds.ForEach(b
                          =>
            {
                var old          = b.BoxedValue;
                b.SafeBoxedValue = Random.Range(int.MinValue, int.MaxValue);

                sb.AppendLine($"old => {old}; new => {b.SafeBoxedValue}");
            });
            Debug.Log(sb);
            Init();
        }
Beispiel #2
0
        public void 反向绑定()
        {
            TestView    view    = new TestView();
            BindFactory factory = new BindFactory(view);
            ObservableProperty <int> property = Substitute.For <ObservableProperty <int> >(1);

            factory.RevertBind(view, property);
            ((IComponentEvent <int>)view).GetComponentEvent().Invoke(2);
            Assert.IsTrue(property.Value == 2);
        }
Beispiel #3
0
        public void BindProperty不同类型wrap()
        {
            TestView    view    = new TestView();
            BindFactory factory = new BindFactory(view);
            ObservableProperty <int> property = Substitute.For <ObservableProperty <int> >(1);

            factory.Bind(view, property, (field) => field + "wrap");
            Assert.IsTrue(view.Name == "1wrap");
            property.Value = 2;
            Assert.IsTrue(view.Name == "2wrap");
        }
Beispiel #4
0
        public void BindProperty()
        {
            TestView    view    = new TestView();
            BindFactory factory = new BindFactory(view);
            ObservableProperty <string> property = Substitute.For <ObservableProperty <string> >("哈哈");

            factory.Bind(view, property);
            Assert.IsTrue(view.Name == "哈哈");
            property.Value = "修改";
            Assert.IsTrue(view.Name == "修改");
        }
Beispiel #5
0
        public void BindProperty测试()
        {
            TestView  view = new TestView();
            ViewModel vm   = Substitute.For <ViewModel>();
            BindFactory <TestView, ViewModel> factory  = new BindFactory <TestView, ViewModel>(view, vm);
            ObservableProperty <string>       property = Substitute.For <ObservableProperty <string> >("哈哈");

            factory.Bind(view, property);
            Assert.IsTrue(view.Name == "哈哈");
            property.Value = "修改";
            Assert.IsTrue(view.Name == "修改");
        }
Beispiel #6
0
        public void   双向绑定()
        {
            TestView    view    = new TestView();
            BindFactory factory = new BindFactory(view);
            ObservableProperty <string> property = Substitute.For <ObservableProperty <string> >("1");

            factory.TwoWayBind <TestView, string, int>(view, property, (i) => i.ToString(), int.Parse);
            Assert.IsTrue(view.Age == 1);
            property.Value = "2";
            Assert.IsTrue(view.Age == 2);
            ((IComponentEvent <int>)view).GetComponentEvent().Invoke(3);
            Assert.IsTrue(property.Value == "3");
        }
Beispiel #7
0
        public void 双向绑定()
        {
            TestView  view = new TestView();
            ViewModel vm   = Substitute.For <ViewModel>();
            BindFactory <TestView, ViewModel> factory  = new BindFactory <TestView, ViewModel>(view, vm);
            ObservableProperty <int>          property = Substitute.For <ObservableProperty <int> >(1);

            factory.TwoWayBind(view, property);
            Assert.IsTrue(view.Age == 1);
            property.Value = 2;
            Assert.IsTrue(view.Age == 2);
            ((IComponentEvent <int>)view).GetComponentEvent().Invoke(3);
            Assert.IsTrue(property.Value == 3);
        }
Beispiel #8
0
        public void Bind带参Command()
        {
            IComponentEvent <int> view = new TestView();
            int         result         = -1;
            BindFactory factory        = new BindFactory(view);

            void Func(int a)
            {
                result = a;
            }

            factory.BindCommand <IComponentEvent <int>, int>(view, Func);
            view.GetComponentEvent().Invoke(2);
            Assert.IsTrue(result == 2);
        }
Beispiel #9
0
        public void BindProperty多个字段wrap()
        {
            TestView    view    = new TestView();
            BindFactory factory = new BindFactory(view);
            ObservableProperty <int> property1 = Substitute.For <ObservableProperty <int> >(1);
            ObservableProperty <int> property2 = Substitute.For <ObservableProperty <int> >(2);

            //factory.Bind(view, property, (field) => field + "wrap");
            factory.Bind(view, property1, property2, (i1, i2) => (i1 + i2) + "wrap");
            Assert.IsTrue(view.Name == "3wrap");
            property1.Value = 2;
            Assert.IsTrue(view.Name == "4wrap");
            property2.Value = 3;
            Assert.IsTrue(view.Name == "5wrap");
        }
Beispiel #10
0
        public void BindProperty多个字段()
        {
            TestView    view    = new TestView();
            BindFactory factory = new BindFactory(view);
            ObservableProperty <string> property1 = Substitute.For <ObservableProperty <string> >("p1");
            ObservableProperty <string> property2 = Substitute.For <ObservableProperty <string> >("p2");

            //factory.Bind(view, property, (field) => field + "wrap");
            factory.Bind(view, property1, property2, (i1, i2) => i1 + i2);
            Assert.IsTrue(view.Name == "p1p2");
            property1.Value = "p3";
            Assert.IsTrue(view.Name == "p3p2");
            property2.Value = "p4";
            Assert.IsTrue(view.Name == "p3p4");
        }
Beispiel #11
0
        public void BindCommand测试()
        {
            IComponentEvent view      = new TestView();
            ViewModel       vm        = Substitute.For <ViewModel>();
            bool            isTrigger = false;
            BindFactory <IComponentEvent, ViewModel> factory = new BindFactory <IComponentEvent, ViewModel>(view, vm);

            void Func()
            {
                isTrigger = true;
            }

            factory.BindCommand(view, Func);
            view.GetComponentEvent().Invoke();
            Assert.IsTrue(isTrigger);
        }
Beispiel #12
0
        public void BindCommand()
        {
            IComponentEvent view      = new TestView();
            bool            isTrigger = false;
            BindFactory     factory   = new BindFactory(view);

            void Func()
            {
                isTrigger = !isTrigger;
            }

            factory.BindCommand(view, Func);
            factory.Reset();
            view.GetComponentEvent().Invoke();
            Assert.IsTrue(isTrigger);
        }
Beispiel #13
0
        public void Bind带参Command测试()
        {
            IComponentEvent <int> view = new TestView();
            ViewModel             vm   = Substitute.For <ViewModel>();
            int result = -1;
            BindFactory <IComponentEvent <int>, ViewModel> factory =
                new BindFactory <IComponentEvent <int>, ViewModel>(view, vm);

            void Func(int a)
            {
                result = a;
            }

            factory.BindCommand <IComponentEvent <int>, int>(view, Func);
            view.GetComponentEvent().Invoke(2);
            Assert.IsTrue(result == 2);
        }