Ejemplo n.º 1
0
        public void ExternalSetupTest()
        {
            var container = new UnityContainer();

            container.AddNewExtension <Interception>();

            container.RegisterAutoNotifyType <PureViewModel>();

            Expression <Func <PureViewModel, string> >[] namesSelector = { v => v.FirstName, v => v.LastName };

            AutoNotifySetup <PureViewModel> .Invoke(v => v.OnAgeChanged).By(v => v.Age);

            AutoNotifySetup <PureViewModel> .Invoke(v => v.OnAgeChanged2).By(v => v.Age);

            AutoNotifySetup <PureViewModel> .Notify(v => v.FullName).By(namesSelector);

            AutoNotifySetup <PureViewModel> .Notify(v => v.Error).By(namesSelector);

            AutoNotifySetup <PureViewModel> .Invalidate(v => v.OkCommand).By(namesSelector);

            var viewModel = container.Resolve <PureViewModel>();

            viewModel.FirstName.Should().BeNull();
            viewModel.LastName.Should().BeNull();
            viewModel.Error.Should().Be("FirstName cannot be empty");
            viewModel.OkCommand.CanExecute(null).Should().BeFalse();

            var changedLog = new List <string>();

            viewModel.PropertyChanged             += (s, e) => changedLog.Add(e.PropertyName);
            viewModel.OkCommand.CanExecuteChanged += (s, e) => changedLog.Add("OkCommandCanExecuteChanged");
            viewModel.FirstName = "Jason";
            changedLog.Should().BeEquivalentTo(new [] { "FirstName", "FullName", "Error", "OkCommandCanExecuteChanged" });
            viewModel.Error.Should().Be("LastName cannot be empty");
            viewModel.OkCommand.CanExecute(null).Should().BeTrue();

            var invokedLog = new List <MethodInvokedEventArgs>();

            ((IMethodAutoInvoked)viewModel).MethodInvoked += (s, e) => invokedLog.Add(e);
            viewModel.Age = viewModel.Age + 1;
            invokedLog.Count.Should().Be(2);
            invokedLog[0].Name.Should().Be("OnAgeChanged");
            var context = invokedLog[0].InvokeContext;

            context.Property.Should().Be("Age");
            context.OldValue <int>().Should().Be(0);
            context.NewValue <int>().Should().Be(1);
            invokedLog[1].Name.Should().Be("OnAgeChanged2");
            invokedLog[1].InvokeContext.Should().BeNull();
        }
Ejemplo n.º 2
0
 protected static InvalidateBy <T> Invalidate <TProperty>(Expression <Func <T, TProperty> > selector)
 {
     return(AutoNotifySetup <T> .Invalidate(selector));
 }
Ejemplo n.º 3
0
 protected static InvokeBy <T> Invoke(Expression <Func <T, Action> > selector)
 {
     return(AutoNotifySetup <T> .Invoke(selector));
 }
Ejemplo n.º 4
0
 protected static NotifyBy <T> Notify <TProperty>(Expression <Func <T, TProperty> > selector)
 {
     return(AutoNotifySetup <T> .Notify(selector));
 }