예제 #1
0
 public void Validate_IncorrectVewModel_Fails()
 {
     Assert.True(AopInpcFactory.Validate(typeof(ViewModel)));
     Assert.False(AopInpcFactory.Validate(typeof(NonVirtualPropViewModel)));
     Assert.False(AopInpcFactory.Validate(typeof(NonPublicPropGetterViewModel)));
     Assert.False(AopInpcFactory.Validate(typeof(NonPublicPropSetterViewModel)));
 }
예제 #2
0
        public void Create_PropWithoutInpcAttribute_InpcCallIsNotInjected()
        {
            var injectedVm = AopInpcFactory.Create <ViewModel>();

            injectedVm.PropertyChanged += (sender, args) => throw new InvalidOperationException(args.PropertyName);

            injectedVm.Prop = 5;
        }
예제 #3
0
        public void Decorate_PropWithInpcAttribute_InpcCallInjected()
        {
            var injectedVm = AopInpcFactory.Decorate(new ViewModel());

            injectedVm.PropertyChanged += (sender, args) => throw new InvalidOperationException(args.PropertyName);

            var ex = Assert.Throws <InvalidOperationException>(() => injectedVm.InjectProp = 5);

            Assert.Equal(nameof(ViewModel.InjectProp), ex.Message);
        }
예제 #4
0
        public void Create_NullAsEmptyCtorArgument_InpcCallInjected()
        {
            var injectedVm = AopInpcFactory.Create <ViewModel>(null);

            injectedVm.PropertyChanged += (sender, args) => throw new InvalidOperationException(args.PropertyName);

            var ex = Assert.Throws <InvalidOperationException>(() => injectedVm.InjectProp = 5);

            Assert.Equal(nameof(ViewModel.InjectProp), ex.Message);
        }
예제 #5
0
        public void Decorate_NullAsTarget_Fails()
        {
            ViewModel viewModel = null;

            Assert.Throws <ArgumentNullException>(() => AopInpcFactory.Decorate(viewModel));
        }