public void DataGridEditingStateDetectionTest() { ObservableCollection <TestData> dataList = new ObservableCollection <TestData>() { new TestData() { StrValue = "A" }, new TestData() { StrValue = "B" }, new TestData() { StrValue = "C" } }; var target = new DataGridEditStateService(); var serviceList = new UIServiceCollection(); serviceList.Add(new ServiceFactoryMock(target)); serviceList.Add(new ParameterlessUIServiceFactory() { ServiceType = typeof(DataGridCurrentCellService) }); serviceList.Add(new ParameterlessUIServiceFactory() { ServiceType = typeof(DefaultCommandRegulationService) }); DataGrid dataGrid; using (TestWindow.Show(dataList, serviceList, out dataGrid)) { dataGrid.CurrentCell = new System.Windows.Controls.DataGridCellInfo(dataList[0], dataGrid.Columns[0]); // Verify IsEditing property is correct. Assert.IsFalse(target.IsEditingField); // Begin editing on the data grid and verify that a _newly_ created adapter will show // that the grid is editing. if (!dataGrid.BeginEdit()) { Assert.Inconclusive("Could not begin edit on data grid."); } Assert.IsTrue(target.IsEditingField); // Now commit the row to exit editing. if (!dataGrid.CommitEdit(DataGridEditingUnit.Row, true)) { Assert.Inconclusive("Could not commit edit on data grid."); } Assert.IsFalse(target.IsEditingField); } }
public void CommitEditTest() { ObservableCollection <TestData> dataList = new ObservableCollection <TestData>() { new TestData() { StrValue = "A" }, new TestData() { StrValue = "B" }, new TestData() { StrValue = "C" } }; var target = new DataGridEditStateService(); var serviceList = new UIServiceCollection(); serviceList.Add(new ServiceFactoryMock(target)); serviceList.Add(new ParameterlessUIServiceFactory() { ServiceType = typeof(DataGridCurrentCellService) }); serviceList.Add(new ParameterlessUIServiceFactory() { ServiceType = typeof(DefaultCommandRegulationService) }); DataGrid dataGrid; using (TestWindow.Show(dataList, serviceList, out dataGrid)) { // Begin edit and ensure the grid is indeed in edit mode. dataGrid.CurrentCell = new System.Windows.Controls.DataGridCellInfo(dataList[0], dataGrid.Columns[0]); Assert.IsTrue(target.BeginItemEdit(), "Begin edit should have succeeded."); Assert.IsTrue(target.IsEditingField); using (var eventsSink = new DGEventsSink(dataGrid)) { Assert.IsTrue(target.CommitItemEdit()); Assert.IsTrue(eventsSink.RowEditEndingEventRaised); Assert.IsTrue(eventsSink.CellEditEndingEventRaised); eventsSink.Reset(); Assert.IsTrue(target.CommitItemEdit()); Assert.IsFalse(eventsSink.RowEditEndingEventRaised); Assert.IsFalse(eventsSink.CellEditEndingEventRaised); } } }
public void BeginEditTest() { ObservableCollection <TestData> dataList = new ObservableCollection <TestData>() { new TestData() { StrValue = "A" }, new TestData() { StrValue = "B" }, new TestData() { StrValue = "C" } }; var target = new DataGridEditStateService(); var serviceList = new UIServiceCollection(); serviceList.Add(new ServiceFactoryMock(target)); serviceList.Add(new ParameterlessUIServiceFactory() { ServiceType = typeof(DataGridCurrentCellService) }); serviceList.Add(new ParameterlessUIServiceFactory() { ServiceType = typeof(DefaultCommandRegulationService) }); DataGrid dataGrid; using (TestWindow.Show(dataList, serviceList, out dataGrid)) { using (var eventsSink = new DGEventsSink(dataGrid)) { Assert.IsFalse(target.BeginItemEdit(), "Begin edit should have failed, because the data grid has no selected cell."); Assert.IsFalse(eventsSink.BeginningEditEventRaised); // Select a cell eligible for editing. dataGrid.CurrentCell = new System.Windows.Controls.DataGridCellInfo(dataList[0], dataGrid.Columns[0]); Assert.IsTrue(target.BeginItemEdit(), "Begin edit should have succeeded."); Assert.IsTrue(eventsSink.BeginningEditEventRaised); Assert.IsTrue(target.IsEditingField); eventsSink.Reset(); Assert.IsTrue(target.BeginItemEdit(), "Although no new editing began, begin edit should return true - meaning the grid is in edit mode."); Assert.IsFalse(eventsSink.BeginningEditEventRaised); } } }
public void CurrentEditTest() { ObservableCollection <TestData> dataList = new ObservableCollection <TestData>() { new TestData() { StrValue = "A" }, new TestData() { StrValue = "B" }, new TestData() { StrValue = "C" } }; var target = new DataGridEditStateService(); var serviceList = new UIServiceCollection(); serviceList.Add(new ServiceFactoryMock(target)); serviceList.Add(new ParameterlessUIServiceFactory() { ServiceType = typeof(DataGridCurrentCellService) }); serviceList.Add(new ParameterlessUIServiceFactory() { ServiceType = typeof(DefaultCommandRegulationService) }); DataGrid dataGrid; using (TestWindow.Show(dataList, serviceList, out dataGrid)) { // Begin edit and ensure the grid is indeed in edit mode. dataGrid.CurrentCell = new DataGridCellInfo(dataList[0], dataGrid.Columns[0]); Precondition(target.BeginItemEdit(), "Begin edit should have succeeded."); Assert.AreEqual(dataList[0], target.CurrentEdit); Precondition(target.CommitItemEdit(), "Failed committing"); Assert.IsNull(target.CurrentEdit); dataGrid.CurrentCell = new DataGridCellInfo(dataList[2], dataGrid.Columns[0]); Precondition(dataGrid.BeginEdit(), "Begin edit should have succeeded."); Assert.AreEqual(dataList[2], target.CurrentEdit); Precondition(target.CancelItemEdit(), "Failed canceling"); Assert.IsNull(target.CurrentEdit); } }
public void MoveCurrentTest() { ObservableCollection <TestData> dataList = new ObservableCollection <TestData>() { new TestData() { StrValue = "A" }, new TestData() { StrValue = "B" }, new TestData() { StrValue = "C" } }; DataGrid dataGrid; var target = new DataGridCurrentItemService(); var serviceList = new UIServiceCollection(); serviceList.Add(new ServiceFactoryMock(target)); using (TestWindow.Show(dataList, serviceList, out dataGrid)) { dataGrid.Items.MoveCurrentTo(null); var helper = new PrivateAccessHelper <DataGridCurrentItemService, DataGridCurrentItemService_Accessor>(target); var provider = helper.Target; var previewCurrentChangingEventHandlerHelper = new EventHandlerTestHelper <object, CancelableEventArgs>("PreviewCurrentChanging"); provider.PreviewCurrentChanging += previewCurrentChangingEventHandlerHelper.Handler; var currentChangedEventHandlerHelper = new EventHandlerTestHelper <object, EventArgs>("CurrentChanged"); provider.CurrentChanged += currentChangedEventHandlerHelper.Handler; provider.MoveCurrentTo(dataList[1]); Assert.IsTrue(previewCurrentChangingEventHandlerHelper.HandlerInvoked); Assert.IsTrue(currentChangedEventHandlerHelper.HandlerInvoked); previewCurrentChangingEventHandlerHelper.Reset(); currentChangedEventHandlerHelper.Reset(); // Block movement. previewCurrentChangingEventHandlerHelper.AdditionalHandling = (sender, args) => { args.Canceled = true; }; Assert.IsFalse(provider.MoveCurrentTo(dataList[2])); Assert.IsTrue(previewCurrentChangingEventHandlerHelper.HandlerInvoked); Assert.IsFalse(currentChangedEventHandlerHelper.HandlerInvoked); previewCurrentChangingEventHandlerHelper.Reset(); currentChangedEventHandlerHelper.Reset(); previewCurrentChangingEventHandlerHelper.AdditionalHandling = null; // Move to the same row provider.MoveCurrentTo(provider.CurrentItem); Assert.IsFalse(previewCurrentChangingEventHandlerHelper.HandlerInvoked); Assert.IsFalse(currentChangedEventHandlerHelper.HandlerInvoked); previewCurrentChangingEventHandlerHelper.Reset(); currentChangedEventHandlerHelper.Reset(); provider.CurrentChanged -= currentChangedEventHandlerHelper.Handler; provider.PreviewCurrentChanging -= previewCurrentChangingEventHandlerHelper.Handler; } }
public void ReplaceServiceListTest() { // Open a window with a control that has services attached. var window = new Window(); var button = new Button(); window.Content = button; UIServiceCollection serviceCollection = new UIServiceCollection(); var serviceA = new TestServiceA(); serviceCollection.Add(new ServiceFactoryMock(serviceA)); UIServiceProvider.SetServiceList(button, serviceCollection); // Replace the assigned, yet unattached services. serviceCollection = new UIServiceCollection(); var serviceA2 = new TestServiceA(); serviceCollection.Add(new ServiceFactoryMock(serviceA2)); UIServiceProvider.SetServiceList(button, serviceCollection); // Verify the old service was disposed. Assert.IsTrue(serviceA.IsDisposed); // Verify the old service does not become attached to the element. using (TestUtils.AutoCloseWindow(window)) { Assert.IsFalse(serviceA.IsAttached); Assert.IsTrue(serviceA2.IsAttached); } Assert.IsTrue(serviceA2.IsDisposed); }
public void PreviewCurrentChangingEventTest() { ObservableCollection <TestData> dataList = new ObservableCollection <TestData>() { new TestData() { StrValue = "A" }, new TestData() { StrValue = "B" }, new TestData() { StrValue = "C" } }; DataGrid dataGrid; var target = new DataGridCurrentItemService(); UIServiceCollection serviceList = new UIServiceCollection(); serviceList.Add(new ServiceFactoryMock(target)); using (TestWindow.Show(dataList, serviceList, out dataGrid)) { dataGrid.CurrentItem = null; var helper = new PrivateAccessHelper <DataGridCurrentItemService, DataGridCurrentItemService_Accessor>(target); var provider = helper.Target; var previewCurrentChangingEventHandlerHelper = new EventHandlerTestHelper <object, CancelableEventArgs>("PreviewCurrentChanging"); provider.PreviewCurrentChanging += previewCurrentChangingEventHandlerHelper.Handler; dataGrid.CurrentCell = new DataGridCellInfo(dataList[0], dataGrid.Columns[0]); Assert.IsTrue(previewCurrentChangingEventHandlerHelper.HandlerInvoked); Assert.IsFalse(previewCurrentChangingEventHandlerHelper.LastInocationEventArgs.IsCancelable); previewCurrentChangingEventHandlerHelper.Reset(); // Move to another line. dataGrid.CurrentCell = new DataGridCellInfo(dataList[1], dataGrid.Columns[0]); Assert.IsTrue(previewCurrentChangingEventHandlerHelper.HandlerInvoked); Assert.IsFalse(previewCurrentChangingEventHandlerHelper.LastInocationEventArgs.IsCancelable); previewCurrentChangingEventHandlerHelper.Reset(); // Move to another cell on the same line dataGrid.CurrentCell = new DataGridCellInfo(dataList[1], dataGrid.Columns[1]); Assert.IsFalse(previewCurrentChangingEventHandlerHelper.HandlerInvoked); previewCurrentChangingEventHandlerHelper.Reset(); // Move to another line using the provider. provider.MoveCurrentTo(dataList[2]); Assert.IsTrue(previewCurrentChangingEventHandlerHelper.HandlerInvoked); Assert.IsTrue(previewCurrentChangingEventHandlerHelper.LastInocationEventArgs.IsCancelable); provider.PreviewCurrentChanging -= previewCurrentChangingEventHandlerHelper.Handler; } }
public void SetServiceProviderTest() { // Open a window with a control without any service. Window window = new Window(); Button button = new Button(); window.Content = button; using (TestUtils.AutoCloseWindow(window)) { var serviceList = UIServiceProvider_Accessor.GetServiceList(button); Assert.IsNotNull(serviceList); List <IUIServiceFactory> serviceListWrapper = new List <IUIServiceFactory>(serviceList); Assert.AreEqual(0, serviceListWrapper.Count); Assert.IsNull(UIServiceProvider_Accessor.GetServiceProvider(button)); var service = UIServiceProvider.GetService(button, typeof(TestServiceBase)); Assert.IsNull(service); } // Open a window with a control that has services attached. window = new Window(); button = new Button(); window.Content = button; UIServiceCollection serviceCollection = new UIServiceCollection(); var serviceA = new TestServiceA(); serviceCollection.Add(new ServiceFactoryMock(serviceA)); UIServiceProvider.SetServiceList(button, serviceCollection); using (TestUtils.AutoCloseWindow(window)) { Assert.IsNotNull(UIServiceProvider_Accessor.GetServiceList(button)); Assert.IsNotNull(UIServiceProvider_Accessor.GetServiceProvider(button)); var service = UIServiceProvider.GetService(button, typeof(TestServiceBase)); Assert.IsInstanceOfType(service, typeof(TestServiceA)); Assert.IsFalse(serviceA.IsDisposed); } Assert.IsTrue(serviceA.IsDisposed); }
public void CurrentItemTest() { ObservableCollection <TestData> dataList = new ObservableCollection <TestData>() { new TestData() { StrValue = "A" }, new TestData() { StrValue = "B" }, new TestData() { StrValue = "C" } }; DataGrid dataGrid; var target = new DataGridCurrentItemService(); var serviceList = new UIServiceCollection(); serviceList.Add(new ServiceFactoryMock(target)); using (TestWindow.Show(dataList, serviceList, out dataGrid)) { dataGrid.Items.MoveCurrentTo(null); var helper = new PrivateAccessHelper <DataGridCurrentItemService, DataGridCurrentItemService_Accessor>(target); var provider = helper.Target; Assert.IsNull(provider.CurrentItem); Assert.AreEqual(-1, provider.CurrentPosition); Assert.IsTrue(provider.MoveCurrentToFirst()); Assert.AreSame(dataList[0], provider.CurrentItem); Assert.AreSame(dataGrid.CurrentItem, provider.CurrentItem); Assert.AreEqual(0, provider.CurrentPosition); Assert.IsTrue(provider.MoveCurrentToNext()); Assert.AreSame(dataList[1], provider.CurrentItem); Assert.AreSame(dataGrid.CurrentItem, provider.CurrentItem); Assert.AreEqual(1, provider.CurrentPosition); Assert.IsTrue(provider.MoveCurrentToLast()); Assert.AreSame(dataList[2], provider.CurrentItem); Assert.AreSame(dataGrid.CurrentItem, provider.CurrentItem); Assert.AreEqual(2, provider.CurrentPosition); Assert.IsFalse(provider.MoveCurrentToNext()); Assert.IsNull(provider.CurrentItem); Assert.AreSame(dataGrid.CurrentItem, provider.CurrentItem); Assert.AreEqual(dataGrid.Items.Count, provider.CurrentPosition); dataGrid.CurrentItem = dataList[1]; Assert.AreSame(dataList[1], provider.CurrentItem); Assert.AreSame(dataGrid.CurrentItem, provider.CurrentItem); Assert.AreEqual(1, provider.CurrentPosition); dataGrid.CurrentItem = null; Assert.IsNull(provider.CurrentItem); Assert.AreSame(dataGrid.CurrentItem, provider.CurrentItem); Assert.AreEqual(-1, provider.CurrentPosition); } }