Esempio n. 1
0
        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]);
        }
Esempio n. 2
0
        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]);
        }
Esempio n. 3
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());
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        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]);
        }
Esempio n. 6
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]);
        }
Esempio n. 7
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]);
        }
Esempio n. 8
0
 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);
     });
 }
Esempio n. 9
0
        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());
        }
Esempio n. 10
0
        public void NotCrashWhenAddModelWithViewModelIsCalledWithNullViewModelCollection()
        {
            var connector = new TConnector
            {
                ModelCollection = new ObservableCollection <TestModel>()
            };

            Assert.DoesNotThrow(() => connector.Add(new TestModel(), new TestViewModel()));
        }
Esempio n. 11
0
        public void NotCrashIfModelCollectionIsSetToNull()
        {
            var mc        = new ObservableCollection <TestModel>();
            var connector = new TConnector
            {
                ModelCollection = mc
            };

            Assert.DoesNotThrow(() => connector.ModelCollection = null);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        public void RetainModelCollection()
        {
            var connector = new TConnector();

            Assert.IsNull(connector.ModelCollection);

            var mc = new ObservableCollection <TestModel>();

            connector.ModelCollection = mc;

            Assert.AreSame(mc, connector.ModelCollection);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
        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;
            }
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        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());
        }
Esempio n. 21
0
        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]);
        }
Esempio n. 22
0
        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]);
        }
Esempio n. 23
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);
        }
Esempio n. 24
0
        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);
        }
Esempio n. 25
0
        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);
        }
Esempio n. 26
0
        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);
        }
Esempio n. 27
0
        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);
        }
Esempio n. 28
0
        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);
        }
Esempio n. 29
0
        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);
        }
Esempio n. 30
0
        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]);
        }