public void BeAbleToHandleCollectionItemMove() { var m1 = new TestModel(); var m2 = new TestModel(); var modelCollection = new ObservableCollection <TestModel> { m1, m2 }; var viewModelCollection = new ObservableCollection <IViewModel <TestModel> >(); // ReSharper disable once UnusedVariable => The object is going to connect the two observable collections. var connector = new TConnector { ModelCollection = modelCollection, ViewModelCollection = viewModelCollection }; Assert.AreEqual(2, viewModelCollection.Count); var vm1 = viewModelCollection[0]; var vm2 = viewModelCollection[1]; modelCollection.Move(0, 1); Assert.AreSame(vm2, viewModelCollection[0]); Assert.AreSame(vm1, viewModelCollection[1]); }
public void BeAbleToHandleCollectionItemReset() { var modelCollection = new ObservableCollection <TestModel>(); var viewModelCollection = new ObservableCollection <IViewModel <TestModel> >(); var connector = new TConnector { ModelCollection = modelCollection, ViewModelCollection = viewModelCollection }; modelCollection.Add(new TestModel()); Assert.AreEqual(1, modelCollection.Count); Assert.AreEqual(1, viewModelCollection.Count); var vm = viewModelCollection[0]; var m = new TestModel(); var mc2 = new ObservableCollection <TestModel> { m }; connector.ModelCollection = mc2; Assert.AreEqual(1, connector.ModelCollection.Count); Assert.AreEqual(1, viewModelCollection.Count); Assert.AreNotSame(vm, viewModelCollection[0]); }
public void ProperlyCreateViewForViewModel() { var stackPanel = new StackPanel(); var viewCollection = stackPanel.Children; Assert.IsNotNull(viewCollection); var viewModelCollection = new ObservableCollection <IViewModel <TestModel> >(); // ReSharper disable once UnusedVariable => Connecting the two collections. var conn = new TConnector { ViewCollection = viewCollection, ViewModelCollection = viewModelCollection }; Assert.AreEqual(0, viewCollection.Count); var tvm = new TestViewModel(); viewModelCollection.Add(tvm); var view = (TestView)viewCollection[0]; Assert.IsNotNull(view); Assert.AreEqual(1, viewCollection.Count); Assert.AreSame(tvm, view.GetViewModel()); }
public void CreateAppropriateTypesDependingOnViewModels() { var sp = new StackPanel(); var viewCollection = sp.Children; Assert.IsNotNull(viewCollection); var vms = new ObservableCollection <IViewModel <TestModel> > { new TestViewModel(), new TestViewModel2() }; // ReSharper disable once UnusedVariable => Connecting the two collections. var conn = new TConnector { ViewCollection = viewCollection, ViewModelCollection = vms }; Assert.AreEqual(2, viewCollection.Count); var view1 = viewCollection[0]; Assert.IsNotNull(view1); Assert.AreEqual(typeof(TestView), view1.GetType()); var view2 = viewCollection[1]; Assert.IsNotNull(view2); Assert.AreEqual(typeof(TestView2), view2.GetType()); }
public void ProperlyReplaceViewWhenViewModelIsReplaced() { var sp = new StackPanel(); var viewCollection = sp.Children; Assert.IsNotNull(viewCollection); var viewModelCollection = new ObservableCollection <IViewModel <TestModel> > { new TestViewModel() }; // ReSharper disable once UnusedVariable => Connecting the two collections. var conn = new TConnector { ViewCollection = viewCollection, ViewModelCollection = viewModelCollection }; Assert.AreEqual(1, viewCollection.Count); var v1 = viewCollection[0]; viewModelCollection[0] = new TestViewModel(); Assert.AreEqual(1, viewCollection.Count); Assert.AreNotSame(v1, viewCollection[0]); }
public void BeAbleToConnectToItemCollection() { var listView = new ListView(); var viewCollection = listView.Items; Assert.IsNotNull(viewCollection); var viewModelCollection = new ObservableCollection <IViewModel <TestModel> > { new TestViewModel() }; // ReSharper disable once UnusedVariable => Connecting the two collections. var conn = new TConnector { ViewCollection = viewCollection, ViewModelCollection = viewModelCollection }; Assert.AreEqual(1, viewCollection.Count); var view1 = viewCollection[0]; viewModelCollection[0] = new TestViewModel(); Assert.AreEqual(1, viewCollection.Count); Assert.AreNotSame(view1, viewCollection[0]); }
public void ProperlyMoveViewWhenViewModelIsMoved() { var vm1 = new TestViewModel(); var vm2 = new TestViewModel(); var sp = new StackPanel(); var viewCollection = sp.Children; Assert.IsNotNull(viewCollection); var viewModelCollection = new ObservableCollection <IViewModel <TestModel> > { vm1, vm2 }; // ReSharper disable once UnusedVariable => Connecting the two collections. var conn = new TConnector { ViewCollection = viewCollection, ViewModelCollection = viewModelCollection }; Assert.AreEqual(2, viewCollection.Count); var v1 = viewCollection[0]; var v2 = viewCollection[1]; viewModelCollection.Move(0, 1); Assert.AreSame(v2, viewCollection[0]); Assert.AreSame(v1, viewCollection[1]); }
public void NotCrashIfSomethingIsNull() { Assert.DoesNotThrow(() => { // ReSharper disable once UnusedVariable => variable needed to correctly create the connector that will set up the MVVM components. var conn = new TConnector(null, null, vm => null, vm => null); }); }
public void CreateCorrectViewType() { var conn = new TConnector(); var vm = new TestViewModel(); var view = conn.CreateItem(vm); Assert.IsNotNull(view); Assert.AreEqual(typeof(TestView), view.GetType()); }
public void NotCrashWhenAddModelWithViewModelIsCalledWithNullViewModelCollection() { var connector = new TConnector { ModelCollection = new ObservableCollection <TestModel>() }; Assert.DoesNotThrow(() => connector.Add(new TestModel(), new TestViewModel())); }
public void NotCrashIfModelCollectionIsSetToNull() { var mc = new ObservableCollection <TestModel>(); var connector = new TConnector { ModelCollection = mc }; Assert.DoesNotThrow(() => connector.ModelCollection = null); }
public void RetainViewModelCollection() { var vm = new ObservableCollection <IViewModel <TestModel> >(); var conn = new TConnector(); Assert.IsNull(conn.ViewModelCollection); conn.ViewModelCollection = vm; Assert.AreSame(vm, conn.ViewModelCollection); }
public void RetainViewCollection() { var sp = new StackPanel(); var v = sp.Children; var conn = new TConnector(); Assert.IsNull(conn.ViewCollection); conn.ViewCollection = v; Assert.AreSame(v, conn.ViewCollection); }
public void RetainModelCollection() { var connector = new TConnector(); Assert.IsNull(connector.ModelCollection); var mc = new ObservableCollection <TestModel>(); connector.ModelCollection = mc; Assert.AreSame(mc, connector.ModelCollection); }
public void ProperlyBindCollectionChanged() { var connector = new TConnector(); Assert.IsNull(connector.ModelCollection); var mc = new ObservableCollectionEventChangeChecker <TestModel>(); Assert.IsFalse(mc.CollectionChangedEventHandlerAdded); connector.ModelCollection = mc; Assert.IsTrue(mc.CollectionChangedEventHandlerAdded); }
public void RetainsIsValid() { var connector = new TConnector(); Assert.IsFalse(connector.IsValid); connector.IsValid = true; Assert.IsTrue(connector.IsValid); connector.IsValid = false; Assert.IsFalse(connector.IsValid); }
public void IgnoreChangingTheCollectionIfItIsTheSame() { var mc = new ObservableCollectionEventChangeChecker <TestModel>(); var connector = new TConnector { ModelCollection = mc }; mc.CollectionChangedEventHandlerAdded = false; mc.CollectionChangedEventHandlerRemoved = false; connector.ModelCollection = mc; Assert.IsFalse(mc.CollectionChangedEventHandlerAdded); Assert.IsFalse(mc.CollectionChangedEventHandlerRemoved); }
public MessageBus(ISerializer serializer) { using (EneterTrace.Entering()) { mySerializer = serializer; myServiceConnector = new TConnector(); myClientConnector = new TConnector(); myServiceConnector.ResponseReceiverDisconnected += OnServiceDisconnected; myServiceConnector.MessageReceived += OnMessageFromServiceReceived; myClientConnector.ResponseReceiverDisconnected += OnClientDisconnected; myClientConnector.MessageReceived += OnMessageFromClientReceived; } }
public void UnbindViewModelCollectionWhenReplaced() { var sp = new StackPanel(); var vm = new ObservableCollectionEventChangeChecker <IViewModel <TestModel> >(); var conn = new TConnector { ViewCollection = sp.Children, ViewModelCollection = vm }; Assert.IsFalse(vm.CollectionChangedEventHandlerRemoved); conn.ViewModelCollection = null; Assert.IsTrue(vm.CollectionChangedEventHandlerRemoved); }
public void SetUpCompositeInformationProperly() { var cvm = new ComponentViewModel(); var cm = new ComponentModel(); var mvm = new MainViewModel { ComponentViewModel = cvm, ComponentModel = cm }; var cv = new ComponentView(); // ReSharper disable once UnusedVariable => variable needed to correctly create the connector that will set up the MVVM components. var conn = new TConnector(cv, mvm, ComponentViewModel, ComponentModel); Assert.AreSame(cm, cvm.Model); Assert.AreSame(cvm, cv.GetViewModel()); }
public void SortCorrectlyIfThereIsSwap() { var m1 = new TestModel(); var m2 = new TestModel(); var modelCollection = new ObservableCollection <TestModel> { m1, m2 }; var connector = new TConnector { ModelCollection = modelCollection, ViewModelCollection = new ObservableCollection <IViewModel <TestModel> >() }; connector.Sort((o1, o2) => o1 == m1 && o2 == m2 ? 1 : -1); Assert.AreSame(m2, modelCollection[0]); Assert.AreSame(m1, modelCollection[1]); }
public void BeAbleToHandleCollectionItemReplace() { var modelCollection = new ObservableCollection <TestModel>(); var viewModelCollection = new ObservableCollection <IViewModel <TestModel> >(); // ReSharper disable once UnusedVariable => The object is going to connect the two observable collections. var connector = new TConnector { ModelCollection = modelCollection, ViewModelCollection = viewModelCollection }; modelCollection.Add(new TestModel()); var vm = viewModelCollection[0]; modelCollection[0] = new TestModel(); Assert.AreNotSame(vm, viewModelCollection[0]); }
public void ProperlyUnbindCollectionChanged() { var mc1 = new ObservableCollectionEventChangeChecker <TestModel>(); var mc2 = new ObservableCollectionEventChangeChecker <TestModel>(); var connector = new TConnector { ModelCollection = mc1 }; mc1.CollectionChangedEventHandlerAdded = false; Assert.IsFalse(mc1.CollectionChangedEventHandlerAdded); Assert.IsFalse(mc1.CollectionChangedEventHandlerRemoved); Assert.IsFalse(mc2.CollectionChangedEventHandlerAdded); Assert.IsFalse(mc2.CollectionChangedEventHandlerRemoved); connector.ModelCollection = mc2; Assert.IsTrue(mc1.CollectionChangedEventHandlerRemoved); Assert.IsTrue(mc2.CollectionChangedEventHandlerAdded); }
public void KeepViewModelCollectionUnchangedIfReplacedWithTheSameObject() { var sp = new StackPanel(); var vms = new ObservableCollectionEventChangeChecker <IViewModel <TestModel> > { new TestViewModel() }; var conn = new TConnector { ViewCollection = sp.Children, ViewModelCollection = vms }; vms.CollectionChangedEventHandlerAdded = false; vms.CollectionChangedEventHandlerRemoved = false; conn.ViewModelCollection = vms; Assert.IsFalse(vms.CollectionChangedEventHandlerAdded); Assert.IsFalse(vms.CollectionChangedEventHandlerRemoved); }
public void IsValidChangedOnlyFiredWhenRealChangeOccurs() { var connector = new TConnector(); var fired = false; connector.IsValidChanged += (obj, e) => { fired = true; }; Assert.IsFalse(connector.IsValid); connector.IsValid = false; Assert.IsFalse(fired); connector.IsValid = true; Assert.IsTrue(fired); fired = false; connector.IsValid = true; Assert.IsFalse(fired); }
public void BindViewModelIsCalledProperly() { var modelCollection = new ObservableCollection <TestModel>(); var viewModelCollection = new ObservableCollection <IViewModel <TestModel> >(); var binderCalled = false; // ReSharper disable once UnusedVariable => The object is going to connect the two observable collections. var connector = new TConnector { BindViewModel = vm => { binderCalled = true; }, ModelCollection = modelCollection, ViewModelCollection = viewModelCollection }; Assert.IsFalse(binderCalled); modelCollection.Add(new TestModel()); Assert.IsTrue(binderCalled); }
public void BeAbleToHandleCollectionItemRemove() { var modelCollection = new ObservableCollection <TestModel>(); var viewModelCollection = new ObservableCollection <IViewModel <TestModel> >(); // ReSharper disable once UnusedVariable => The object is going to connect the two observable collections. var connector = new TConnector { ModelCollection = modelCollection, ViewModelCollection = viewModelCollection }; modelCollection.Add(new TestModel()); Assert.AreEqual(1, modelCollection.Count); Assert.AreEqual(1, viewModelCollection.Count); modelCollection.RemoveAt(0); Assert.AreEqual(0, modelCollection.Count); Assert.AreEqual(0, viewModelCollection.Count); }
public void UnbindViewModelProperly() { var m = new TestModel(); var modelCollection = new ObservableCollection <TestModel> { m }; var unbindCalled = false; // ReSharper disable once UnusedVariable => The object is going to connect the two observable collections. var connector = new TConnector { ModelCollection = modelCollection, ViewModelCollection = new ObservableCollection <IViewModel <TestModel> >(), UnbindViewModel = vm => unbindCalled = true }; modelCollection.RemoveAt(0); Assert.IsTrue(unbindCalled); }
public void ViewModelCollectionIsNotChangedIfSetToTheSame() { var modelCollection = new ObservableCollection <TestModel>(); var viewModelCollection = new ObservableCollection <IViewModel <TestModel> >(); var connector = new TConnector { ModelCollection = modelCollection, ViewModelCollection = viewModelCollection }; var collectionChanged = false; modelCollection.Add(new TestModel()); // This lambda expression should be excluded from the coverage, because its only purpose is verification that it has not been executed. viewModelCollection.CollectionChanged += (sender, args) => { collectionChanged = true; }; connector.ViewModelCollection = viewModelCollection; Assert.IsFalse(collectionChanged); }
public void ModelAndViewModelCanBeAddedAtTheSameTime() { var modelCollection = new ObservableCollection <TestModel>(); var viewModelCollection = new ObservableCollection <IViewModel <TestModel> >(); var connector = new TConnector { ModelCollection = modelCollection, ViewModelCollection = viewModelCollection }; var m = new TestModel(); var vm = new TestViewModel(); connector.Add(m, vm); Assert.AreEqual(1, modelCollection.Count); Assert.AreEqual(1, viewModelCollection.Count); Assert.AreSame(m, modelCollection[0]); Assert.AreSame(vm, viewModelCollection[0]); }