static App() { Weaver = new NotifyingObjectWeaver(); var dispatcher = new Dispatcher(Deployment.Current.Dispatcher); DispatcherManager.Current = dispatcher; var autoKernel = new AutoKernel(); autoKernel.AddGenericBindingResolver(ResolveViewModel); Kernel = autoKernel; }
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); }
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(); }
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); }
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)); }
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)); }
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())); }
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)); }
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); }
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(); }
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); }
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)); }
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); }
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)); }
public void CreatingInstanceOfTypeShouldNotCauseException() { DispatcherManager.Current = new Dispatcher(); var weaver = new NotifyingObjectWeaver(); var type = weaver.GetProxyType<MyViewModel>(); var instance = Activator.CreateInstance(type); }
public void CreatedTypeShouldInheritFromTypeGiven() { DispatcherManager.Current = new Dispatcher(); var weaver = new NotifyingObjectWeaver(); var type = weaver.GetProxyType<MyViewModel>(); Assert.That(type.BaseType, Is.EqualTo(typeof(MyViewModel))); }
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); }
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); }
public ViewModelConvention() { _weaver = new NotifyingObjectWeaver(); }
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); }