Пример #1
0
 static App()
 {
     Weaver = new NotifyingObjectWeaver();
     var dispatcher = new Dispatcher(Deployment.Current.Dispatcher);
     DispatcherManager.Current = dispatcher;
     var autoKernel = new AutoKernel();
     autoKernel.AddGenericBindingResolver(ResolveViewModel);
     Kernel = autoKernel;
 }
Пример #2
0
 public void CallingGeneratedOnPropertyChangedMethodShouldFirePropertyChangedEvent()
 {
     DispatcherManager.Current = new Dispatcher();
     var weaver = new NotifyingObjectWeaver();
     var type = weaver.GetProxyType<MyViewModel>();
     var instance = Activator.CreateInstance(type) as INotifyPropertyChanged;
     var fired = false;
     instance.PropertyChanged += (s, e) => fired = true;
     var method = type.GetMethod("OnPropertyChanged");
     method.Invoke(instance, new[] { "Something" });
     Assert.That(fired, Is.True);
 }
Пример #3
0
        public void ChangingAPropertyShoulCallCanExecuteOnDispatcher()
        {
            var dispatcherMock = new Mock<IDispatcher>();
            dispatcherMock.Expect(d => d.CheckAccess()).Returns(true);

            DispatcherManager.Current = dispatcherMock.Object;
            var weaver = new NotifyingObjectWeaver();
            var proxyType = weaver.GetProxyType<MyViewModel>();
            var instance = Activator.CreateInstance(proxyType) as MyViewModel;
            var notifyingObject = instance as INotifyPropertyChanged;
            var fired = false;
            notifyingObject.PropertyChanged += (s, e) => fired = true;

            instance.SomeInt = 5;
            dispatcherMock.VerifyAll();
        }
Пример #4
0
 public void PropertyDecoratedWithNotificationForMorePropertiesShouldFirePropertyChangedEventForAllProperties()
 {
     DispatcherManager.Current = new Dispatcher();
     var weaver = new NotifyingObjectWeaver();
     var type = weaver.GetProxyType<MyViewModel>();
     var instance = Activator.CreateInstance(type) as INotifyPropertyChanged;
     var myViewModel = instance as MyViewModel;
     var someStringFired = false;
     var someOtherStringFired = false;
     instance.PropertyChanged += (s, e) =>
                                     {
                                         if (e.PropertyName.Equals("SomeOtherString"))
                                         {
                                             someOtherStringFired = true;
                                         }
                                         if (e.PropertyName.Equals("SomeString"))
                                         {
                                             someStringFired = true;
                                         }
                                     };
     myViewModel.SomeOtherString = "Hello";
     Assert.That(someOtherStringFired, Is.True);
     Assert.That(someStringFired, Is.True);
 }
Пример #5
0
        public void TypesShouldHaveXmlRootAttributeAdded()
        {
            var dispatcher = new Dispatcher();
            DispatcherManager.Current = dispatcher;
            var weaver = new NotifyingObjectWeaver();

            var proxyType = weaver.GetProxyType<SimpleObject>();
            var hasXmlRootAttribute = false;
            var elementName = string.Empty;
            var attributes = proxyType.GetCustomAttributes(true);
            foreach( var attribute in attributes )
            {
                if( attribute is XmlRootAttribute )
                {
                    elementName = ((XmlRootAttribute)attribute).ElementName;
                    hasXmlRootAttribute = true;
                }
            }

            Assert.That(hasXmlRootAttribute,Is.True);
            Assert.That(elementName,Is.EqualTo(typeof(SimpleObject).Name));
        }
Пример #6
0
        public void ToStringShouldNotBeOverridenIfBaseTypeOverridesIt()
        {
            var dispatcher = new Dispatcher();
            DispatcherManager.Current = dispatcher;
            var weaver = new NotifyingObjectWeaver();
            var proxyType = weaver.GetProxyType<SimpleObjectOverridingToString>();

            var instance = Activator.CreateInstance(proxyType);
            var toStringResult = instance.ToString();

            Assert.That(toStringResult, Is.EqualTo(SimpleObjectOverridingToString.ToStringReturn));
        }
Пример #7
0
        public void ToStringShouldBeOverriddenAndReturnTheBaseTypeFullNameIfNotOverriddenInBaseTyp()
        {
            var dispatcher = new Dispatcher();
            DispatcherManager.Current = dispatcher;
            var weaver = new NotifyingObjectWeaver();
            var proxyType = weaver.GetProxyType<SimpleObject>();

            var instance = Activator.CreateInstance(proxyType);
            var toStringResult = instance.ToString();

            Assert.That(toStringResult, Is.EqualTo(typeof(SimpleObject).ToString()));
        }
Пример #8
0
 public void SettingStringPropertyShouldReturnSameValueWhenGetting()
 {
     DispatcherManager.Current = new Dispatcher();
     var weaver = new NotifyingObjectWeaver();
     var type = weaver.GetProxyType<MyViewModel>();
     var instance = Activator.CreateInstance(type) as INotifyPropertyChanged;
     var myViewModel = instance as MyViewModel;
     var expected = "Hello world";
     myViewModel.SomeString = expected;
     var actual = myViewModel.SomeString;
     Assert.That(actual, Is.EqualTo(expected));
 }
Пример #9
0
        public void SettingStringPropertyShouldFirePropertyChangedEvent()
        {
            DispatcherManager.Current = new Dispatcher();
            var weaver = new NotifyingObjectWeaver();
            var type = weaver.GetProxyType<MyViewModel>();
            var instance = Activator.CreateInstance(type) as INotifyPropertyChanged;
            var myViewModel = instance as MyViewModel;
            var fired = false;
            instance.PropertyChanged += (s, e) =>
                                            {
                                                if (e.PropertyName.Equals("SomeString"))
                                                {
                                                    fired = true;
                                                }
                                            };

            myViewModel.SomeString = "Hello world";
            Assert.That(fired, Is.True);
        }
Пример #10
0
 public void CreatedTypeShouldImplementINotifyPropertyChanged()
 {
     DispatcherManager.Current = new Dispatcher();
     var weaver = new NotifyingObjectWeaver();
     var type = weaver.GetProxyType<MyViewModel>();
     var interfaceType = type.GetInterface(typeof(INotifyPropertyChanged).Name, true);
     Assert.That(interfaceType, Is.Not.Null);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="NotifyChangesBindingConvention"/>
 /// </summary>
 public NotifyChangesBindingConvention()
 {
     _weaver = new NotifyingObjectWeaver();
 }
Пример #12
0
 public void PropertyDecoratedWithIgnoreChangesShouldNotFirePropertyChangedEvent()
 {
     DispatcherManager.Current = new Dispatcher();
     var weaver = new NotifyingObjectWeaver();
     var type = weaver.GetProxyType<MyViewModel>();
     var instance = Activator.CreateInstance(type) as INotifyPropertyChanged;
     var myViewModel = instance as MyViewModel;
     var fired = false;
     instance.PropertyChanged += (s, e) =>
                                     {
                                         if (e.PropertyName.Equals("IgnoredProperty"))
                                         {
                                             fired = true;
                                         }
                                     };
     myViewModel.IgnoredProperty = "Something";
     Assert.That(fired, Is.False);
 }
Пример #13
0
        public void ObjectWithNonDefaultConstructorShouldHaveItsArgumentsForwardedFromProxy()
        {
            DispatcherManager.Current = new Dispatcher();
            var weaver = new NotifyingObjectWeaver();
            var type = weaver.GetProxyType<MyViewModelWithConstructorDependencies>();

            var argument1 = new MyViewModel();
            var argument2 = new MyViewModel();

            var instance = Activator.CreateInstance(type, argument1, argument2) as MyViewModelWithConstructorDependencies;

            Assert.That(instance.ConstructorArgument1, Is.Not.Null);
            Assert.That(instance.ConstructorArgument1, Is.EqualTo(argument1));
            Assert.That(instance.ConstructorArgument2, Is.Not.Null);
            Assert.That(instance.ConstructorArgument2, Is.EqualTo(argument2));
        }
Пример #14
0
        public void InterfacesImplementedByBaseTypeShouldBePresentInProxy()
        {
            var dispatcher = new Dispatcher();
            DispatcherManager.Current = dispatcher;
            var weaver = new NotifyingObjectWeaver();
            var proxyType = weaver.GetProxyType<TypeImplementingOtherInterface>();

            var interfaceType = proxyType.GetInterface(typeof(ISomeInterface).Name, true);
            Assert.That(interfaceType, Is.Not.Null);
        }
Пример #15
0
 public void GettingProxyForSameTypeTwiceShouldYieldSameProxyType()
 {
     DispatcherManager.Current = new Dispatcher();
     var weaver = new NotifyingObjectWeaver();
     var firstType = weaver.GetProxyType<MyViewModel>();
     var secondType = weaver.GetProxyType<MyViewModel>();
     Assert.That(firstType, Is.EqualTo(secondType));
 }
Пример #16
0
 public void CreatingInstanceOfTypeShouldNotCauseException()
 {
     DispatcherManager.Current = new Dispatcher();
     var weaver = new NotifyingObjectWeaver();
     var type = weaver.GetProxyType<MyViewModel>();
     var instance = Activator.CreateInstance(type);
 }
Пример #17
0
 public void CreatedTypeShouldInheritFromTypeGiven()
 {
     DispatcherManager.Current = new Dispatcher();
     var weaver = new NotifyingObjectWeaver();
     var type = weaver.GetProxyType<MyViewModel>();
     Assert.That(type.BaseType, Is.EqualTo(typeof(MyViewModel)));
 }
Пример #18
0
        public void ChangingAPropertyWithoutDispatcherAccessShouldCallBeginInvoke()
        {
            var dispatcher = new Dispatcher();
            dispatcher.CheckAccessReturnValue = false;
            DispatcherManager.Current = dispatcher;
            var weaver = new NotifyingObjectWeaver();
            var proxyType = weaver.GetProxyType<MyViewModel>();
            var instance = Activator.CreateInstance(proxyType) as MyViewModel;
            var notifyingObject = instance as INotifyPropertyChanged;
            var fired = false;
            notifyingObject.PropertyChanged += (s, e) => fired = true;

            instance.SomeInt = 5;
            Assert.That(dispatcher.BeginInvokeDelegateCalled, Is.True);
        }
Пример #19
0
 public void PropertyWithPrivateSetterShouldBeIgnored()
 {
     DispatcherManager.Current = new Dispatcher();
     var weaver = new NotifyingObjectWeaver();
     var type = weaver.GetProxyType<MyViewModel>();
     var instance = Activator.CreateInstance(type) as INotifyPropertyChanged;
     var myViewModel = instance as MyViewModel;
     var fired = false;
     instance.PropertyChanged += (s, e) =>
                                     {
                                         if (e.PropertyName.Equals("PropertyWithPrivateSetter"))
                                         {
                                             fired = true;
                                         }
                                     };
     myViewModel.SetPropertyWithPrivateSetter("Something");
     Assert.That(fired, Is.False);
 }
Пример #20
0
 public ViewModelConvention()
 {
     _weaver = new NotifyingObjectWeaver();
 }
Пример #21
0
 public void SettingPropertyShouldCallBaseClassSetter()
 {
     DispatcherManager.Current = new Dispatcher();
     var weaver = new NotifyingObjectWeaver();
     var type = weaver.GetProxyType<MyViewModel>();
     var instance = Activator.CreateInstance(type) as INotifyPropertyChanged;
     var myViewModel = instance as MyViewModel;
     myViewModel.SomeStringWithImplementation = "Something";
     Assert.That(myViewModel.SomeStringWithImplementationSetCalled, Is.True);
 }