Ejemplo n.º 1
0
                public void is_called_multiple_time_then_OnInitialised_event_is_only_fired_once()
                {
                    var container = AutoMock.GetLoose();

                    var eventWasFired = 0;

                    var testDispatcherSchedulerProvider = new TestDispatcherSchedulerProvider();
                    var testScheduler = testDispatcherSchedulerProvider.Dispatcher.RX as TestScheduler;

                    container.Provide <IDispatcherSchedulerProvider>(testDispatcherSchedulerProvider);

                    var viewModel = container.Create <WorkspaceViewModel>();

                    Assert.That(eventWasFired, Is.EqualTo(0));

                    viewModel.ActivationStateViewModel.OnInitialise
                    .ObserveOn(testScheduler)
                    .Subscribe(_ => eventWasFired++);

                    viewModel.ActivationStateViewModel.Activate();
                    viewModel.ActivationStateViewModel.DeActivate();
                    viewModel.ActivationStateViewModel.Activate();

                    testScheduler.AdvanceBy(1);

                    Assert.That(eventWasFired, Is.EqualTo(1));
                }
Ejemplo n.º 2
0
                public void is_called_then_OnDeActivate_is_called()
                {
                    var container = AutoMock.GetLoose();

                    var eventWasFired = false;

                    var testDispatcherSchedulerProvider = new TestDispatcherSchedulerProvider();
                    var testScheduler = testDispatcherSchedulerProvider.Dispatcher.RX as TestScheduler;

                    container.Provide <IDispatcherSchedulerProvider>(testDispatcherSchedulerProvider);

                    var viewModel = container.Create <WorkspaceViewModel>();

                    viewModel.ActivationStateViewModel.Activate();

                    Assert.That(eventWasFired, Is.False);

                    viewModel.OnDeActivateWasCalled += (s, e) => eventWasFired = true;

                    viewModel.ActivationStateViewModel.DeActivate();

                    testScheduler.AdvanceBy(2);

                    Assert.That(eventWasFired, Is.True);
                }
Ejemplo n.º 3
0
        public void when_ValidateProperty_is_called_then_ErrorsChanged_pumps()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();
            var rxTestScheduler       = testSchedulerProvider.Current.RX as TestScheduler;

            var errorChangedPumped = false;

            var validatingObject = new ValidatingObject();

            var sut = new ValidationAsync <ValidatingObject, ValidatingObjectValidator>(testSchedulerProvider);

            sut.Initialise(validatingObject);

            sut.ErrorsChanged
            .ObserveOn(rxTestScheduler)
            .Subscribe(_ => errorChangedPumped = true);

            Assert.That(errorChangedPumped, Is.False);

            sut.ValidateProperty(() => validatingObject.Name);

            rxTestScheduler.AdvanceBy(1);

            Assert.That(errorChangedPumped, Is.True);
        }
Ejemplo n.º 4
0
        public void when_parent_activation_state_changes_then_the_toolbaritem_activate_state_changes()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var toolBarItem1 = new ToolBarButtonItem(testSchedulerProvider);
            var toolBarItem2 = new ToolBarButtonItem(testSchedulerProvider);

            var viewModel = new SupportActivationState(testSchedulerProvider);

            viewModel.ActivationStateViewModel.Activate();

            viewModel.SyncToolBarItemWithViewModelActivationState(toolBarItem1, toolBarItem2);

            Assert.That(viewModel.ActivationStateViewModel.IsActive, Is.True);

            Assert.That(toolBarItem1.IsVisible, Is.True);
            Assert.That(toolBarItem2.IsVisible, Is.True);

            viewModel.ActivationStateViewModel.DeActivate();

            Assert.That(viewModel.ActivationStateViewModel.IsActive, Is.False);

            Assert.That(toolBarItem1.IsVisible, Is.False);
            Assert.That(toolBarItem2.IsVisible, Is.False);

            viewModel.ActivationStateViewModel.Activate();

            Assert.That(viewModel.ActivationStateViewModel.IsActive, Is.True);

            Assert.That(toolBarItem1.IsVisible, Is.True);
            Assert.That(toolBarItem2.IsVisible, Is.True);
        }
Ejemplo n.º 5
0
        public void when_RefreshAsync_is_called_and_IsNotifying_is_false_then_Reset_event_fired()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var result = false;

            var bindableCollection = new BindableCollection <int>(testSchedulerProvider);

            var items = Enumerable.Range(0, 1).ToList();

            bindableCollection.AddRange(items);

            bindableCollection.CollectionChanged += (sender, args) =>
            {
                if (args.Action == NotifyCollectionChangedAction.Reset)
                {
                    result = true;
                }
            };

            bindableCollection.IsNotifying = false;

            bindableCollection.RefreshAsync();

            Assert.That(result, Is.False);
        }
Ejemplo n.º 6
0
                public void is_called_then_OnActivationStateChanged_event_is_fired()
                {
                    var container = AutoMock.GetLoose();

                    var eventWasFired = false;

                    var testDispatcherSchedulerProvider = new TestDispatcherSchedulerProvider();
                    var testScheduler = testDispatcherSchedulerProvider.Dispatcher.RX as TestScheduler;

                    container.Provide <IDispatcherSchedulerProvider>(new TestDispatcherSchedulerProvider());

                    var viewModel = container.Create <WorkspaceViewModel>();

                    viewModel.ActivationStateViewModel.Activate();

                    Assert.That(eventWasFired, Is.False);

                    viewModel.ActivationStateViewModel.ActivationStateChanged
                    .ObserveOn(testScheduler)
                    .Subscribe(x => eventWasFired = true);

                    viewModel.ActivationStateViewModel.DeActivate();

                    testScheduler.AdvanceBy(1);

                    Assert.That(eventWasFired, Is.True);
                }
Ejemplo n.º 7
0
        public void when_ClearAsync_is_called_and_IsNotifying_is_false_then_Reset_event_is_fired()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var result = false;

            var bindableCollection = new BindableCollection <Guid>(testSchedulerProvider);

            var newGuid = Guid.NewGuid();

            bindableCollection.Add(newGuid);

            bindableCollection.CollectionChanged += (sender, args) =>
            {
                if (args.Action == NotifyCollectionChangedAction.Reset)
                {
                    result = true;
                }
            };

            bindableCollection.IsNotifying = false;

            bindableCollection.ClearAsync();

            Assert.That(result, Is.False);
        }
Ejemplo n.º 8
0
        public void when_a_property_is_invalid_then_HasErrors_return_True()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var validatingObject = new ValidatingObject();

            var sut = new ValidationAsync <ValidatingObject, ValidatingObjectValidator>(testSchedulerProvider);

            sut.Initialise(validatingObject);

            sut.ValidateProperty(() => validatingObject.Name);

            Assert.That(sut.HasErrors, Is.True);
        }
Ejemplo n.º 9
0
        public void when_IsActive_is_set_to_true_then_ActivationStateChanged_pumps_true()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var activationStateViewModel = new ActivationStateViewModel(new NoOpLogger(), testSchedulerProvider);

            var result = false;

            activationStateViewModel.ActivationStateChanged
            .Subscribe(isActive => result = isActive);

            activationStateViewModel.Activate();

            Assert.That(result, Is.True);
        }
Ejemplo n.º 10
0
        public void the_first_time_IsActive_is_set_to_true_then_OnInitialise_pumps()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var activationStateViewModel = new ActivationStateViewModel(new NoOpLogger(), testSchedulerProvider);

            var result = false;

            activationStateViewModel.OnInitialise
            .Subscribe(_ => result = true);

            activationStateViewModel.Activate();

            Assert.That(result, Is.True);
        }
Ejemplo n.º 11
0
        public void when_a_property_is_invalid_then_GetErrors_return_the_correct_validation_results()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var validatingObject = new ValidatingObject();

            var sut = new ValidationAsync <ValidatingObject, ValidatingObjectValidator>(testSchedulerProvider);

            sut.Initialise(validatingObject);

            sut.ValidateProperty(() => validatingObject.Name);

            var validationResults = sut.GetErrors("Name").OfType <string>().ToList();

            Assert.That(validationResults.Count(), Is.EqualTo(1));
            Assert.That(validationResults[0], Is.EqualTo("'Name' must not be empty."));
        }
Ejemplo n.º 12
0
        public void when_there_is_an_exception_during_validation_then_the_exception_is_diplayed_in_the_valiation_result()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var validatingObject = new ErrorValidatingObject();

            var sut = new ValidationAsync <ErrorValidatingObject, ErrorValidatingObjectValidator>(testSchedulerProvider);

            sut.Initialise(validatingObject);

            sut.ValidateProperty(() => validatingObject.ErrorValidating);

            var validationResults = sut.GetErrors("ErrorValidating").OfType <string>().ToList();

            Assert.That(validationResults.Count(), Is.EqualTo(1));
            Assert.That(validationResults[0], Is.EqualTo(string.Format("Error during validation : {0}", ErrorValidatingObjectValidator.TestException)));
        }
        public void when_SelectedItem_is_set_then_the_SelectedItemChanged_pumps_the_value()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var result = Guid.Empty;

            var reactiveSingleSelectCollection = new ReactiveSingleSelectCollection <Guid>(new BindableCollection <Guid>(testSchedulerProvider),
                                                                                           testSchedulerProvider);

            reactiveSingleSelectCollection.SelectedItemChanged
            .Subscribe(x => result = x);

            var selectedItem = Guid.NewGuid();

            reactiveSingleSelectCollection.SelectedItem = selectedItem;

            Assert.That(selectedItem.Equals(result));
        }
        public void when_SelectedItem_is_set_then_the_SelectedItemChanged_pumps_the_value()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var result = new List <int>();

            var reactiveMultiSelectCollection = new ReactiveMultiSelectCollection <int>(new BindableCollection <int>(testSchedulerProvider),
                                                                                        testSchedulerProvider);

            reactiveMultiSelectCollection.SelectedItemsChanged
            .Subscribe(x => result = x.ToList());

            var selectedItem = Enumerable.Range(0, 1).ToList();

            reactiveMultiSelectCollection.SelectedItems = selectedItem;

            Assert.That(selectedItem.SequenceEqual(result));
        }
Ejemplo n.º 15
0
        public void when_RaiseAndSetIfChanged_is_called_with_a_different_value_then_it_is_set()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var viewModel = new TestViewModel(testSchedulerProvider);

            Assert.That(viewModel.Name, Is.Null);

            var value1 = Guid.NewGuid().ToString();

            viewModel.Name = value1;

            Assert.That(viewModel.Name, Is.EqualTo(value1));

            var value2 = Guid.NewGuid().ToString();

            viewModel.Name = value2;

            Assert.That(viewModel.Name, Is.EqualTo(value2));
        }
Ejemplo n.º 16
0
        public void when_AddRangeAsync_is_called_then_Reset_event_fired()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var result = false;

            var bindableCollection = new BindableCollection <int>(testSchedulerProvider);

            bindableCollection.CollectionChanged += (sender, args) =>
            {
                if (args.Action == NotifyCollectionChangedAction.Reset)
                {
                    result = true;
                }
            };

            bindableCollection.AddRangeAsync(Enumerable.Range(0, 1));

            Assert.That(result, Is.True);
        }
Ejemplo n.º 17
0
                public void is_called_then_Disposables_are_disposed()
                {
                    var container = AutoMock.GetLoose();

                    var testDispatcherSchedulerProvider = new TestDispatcherSchedulerProvider();
                    var testScheduler = testDispatcherSchedulerProvider.Dispatcher.RX as TestScheduler;

                    container.Provide <IDispatcherSchedulerProvider>(new TestDispatcherSchedulerProvider());

                    var eventWasFired = false;

                    var viewModel = container.Create <WorkspaceViewModel>();

                    Assert.That(eventWasFired, Is.False);

                    viewModel.DisposablesWasDisposed += (s, e) => eventWasFired = true;

                    viewModel.ClosingStrategy.Close();

                    Assert.That(eventWasFired, Is.True);
                }
Ejemplo n.º 18
0
        public void when_items_are_added_those_items_are_pumped_onto_AddedItemsCollectionChanged()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var results = new List <Guid>();

            var bindableCollection = new BindableCollection <Guid>(testSchedulerProvider);

            bindableCollection.AddedItemsCollectionChanged
            .Subscribe(x => results.AddRange(x));

            var items = Enumerable.Range(0, 10)
                        .Select(_ => Guid.NewGuid())
                        .ToList();

            bindableCollection.AddRange(items);

            var intersectionCount = results.Intersect(items).Count();

            Assert.That(intersectionCount, Is.EqualTo(items.Count));
        }
Ejemplo n.º 19
0
        public void when_header_is_created_the_properties_have_the_correct_values()
        {
            var container = AutoMock.GetLoose();

            var testDispatcherSchedulerProvider = new TestDispatcherSchedulerProvider();

            container.Provide <IDispatcherSchedulerProvider>(testDispatcherSchedulerProvider);

            var workspace = container.Create <WorkspaceViewModel>();

            var displayName = "DisplayName";
            var imageuri    = "ImageUri";

            workspace.SetupHeader(testDispatcherSchedulerProvider, displayName, imageuri);

            var headerViewModel = workspace.Header as HeaderViewModel;

            Assert.That(headerViewModel, Is.Not.Null);
            Assert.That(headerViewModel.DisplayName, Is.EqualTo(displayName));
            Assert.That(headerViewModel.ImageName, Is.EqualTo(imageuri));
        }
Ejemplo n.º 20
0
        public void when_Add_is_called_and_IsNotifying_is_false_then_Add_event_is_not_fired()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var result = false;

            var bindableCollection = new BindableCollection <int>(testSchedulerProvider);

            bindableCollection.CollectionChanged += (sender, args) =>
            {
                if (args.Action == NotifyCollectionChangedAction.Add)
                {
                    result = true;
                }
            };

            bindableCollection.IsNotifying = false;

            bindableCollection.Add(1);

            Assert.That(result, Is.False);
        }
        public void when_SelectedItem_is_set_then_the_SelectedItem_INPC_is_fired()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var reactiveSingleSelectCollection = new ReactiveSingleSelectCollection <object>(new BindableCollection <object>(testSchedulerProvider),
                                                                                             testSchedulerProvider);

            var result = false;

            reactiveSingleSelectCollection.PropertyChanged += (sender, args) =>
            {
                var propertyName = PropertyExtensions.ExtractPropertyName(() => reactiveSingleSelectCollection.SelectedItem);
                if (args.PropertyName == propertyName)
                {
                    result = true;
                }
            };

            reactiveSingleSelectCollection.SelectedItem = new object();
            ((TestScheduler)testSchedulerProvider.Dispatcher.RX).AdvanceBy(1);

            Assert.That(result, Is.True);
        }
Ejemplo n.º 22
0
        public void when_ConnectINPCProperty_is_setup_then_when_ObservableProperty_changes_then_INPC_is_fired()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var viewModel = new TestViewModel(testSchedulerProvider);

            var result = false;

            viewModel.PropertyChanged += (sender, args) =>
            {
                var propertyName = PropertyExtensions.ExtractPropertyName(() => viewModel.Name);
                if (args.PropertyName == propertyName)
                {
                    result = true;
                }
            };

            viewModel.Name = Guid.NewGuid().ToString();

            ((TestScheduler)testSchedulerProvider.Dispatcher.RX).AdvanceBy(1);

            Assert.That(result, Is.True);
        }
Ejemplo n.º 23
0
        public void when_child_isbusy_changes_then_the_parent_isbusy_changes()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var parent = new SupportBusyViewModel(testSchedulerProvider);
            var child  = new SupportBusyViewModel(testSchedulerProvider);

            parent.SyncViewModelBusy(child);

            Assert.That(parent.BusyViewModel.IsActive, Is.False);
            Assert.That(child.BusyViewModel.IsActive, Is.False);

            child.BusyViewModel.Active(string.Empty);

            Assert.That(child.BusyViewModel.IsActive, Is.True);

            Assert.That(parent.BusyViewModel.IsActive, Is.True);

            child.BusyViewModel.InActive();

            Assert.That(child.BusyViewModel.IsActive, Is.False);

            Assert.That(parent.BusyViewModel.IsActive, Is.False);
        }
Ejemplo n.º 24
0
        public void when_Remove_is_called_then_Remove_event_is_fired()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var result = false;

            var bindableCollection = new BindableCollection <Guid>(testSchedulerProvider);

            var newGuid = Guid.NewGuid();

            bindableCollection.Add(newGuid);

            bindableCollection.CollectionChanged += (sender, args) =>
            {
                if (args.Action == NotifyCollectionChangedAction.Remove)
                {
                    result = true;
                }
            };

            bindableCollection.Remove(newGuid);

            Assert.That(result, Is.True);
        }