Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/VB/GridDemo.Wpf/DemoTesting/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/VB/GridDemo.Wpf/DemoTesting/Fixtures.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Windows
Imports System.Windows.Controls.Primitives
Imports System.Windows.Media
Imports DevExpress.Data.Filtering
Imports DevExpress.Utils
Imports DevExpress.Xpf.Core
Imports DevExpress.Xpf.Core.Native
Imports DevExpress.Xpf.DemoBase
Imports DevExpress.Xpf.DemoBase.DemoTesting
Imports DevExpress.Xpf.DemoBase.Helpers
Imports DevExpress.Xpf.Editors
Imports DevExpress.Xpf.Editors.ExpressionEditor
Imports DevExpress.Xpf.Grid.Native

Namespace GridDemo.Tests
	Public Class GridCheckAllDemosFixture
		Inherits CheckAllDemosFixture
		Private skipMemoryLeaksCheckModules() As Type = { GetType(PrintTemplates), GetType(ContextMenu) }
		Protected Overrides Function CheckMemoryLeaks(ByVal moduleTyle As Type) As Boolean
			Return Not EnumeratorHelper.Exists(Of Type)(skipMemoryLeaksCheckModules, moduleTyle)
		End Function
	End Class
	#Region "GridDemoModulesAccessor"
	Public Class GridDemoModulesAccessor
		Inherits DemoModulesAccessor(Of GridDemoModule)
		Public Sub New(ByVal fixture As BaseDemoTestingFixture)
			MyBase.New(fixture)
		End Sub
		Public ReadOnly Property GridControl() As DevExpress.Xpf.Grid.GridControl
			Get
				Return DemoModule.GridControl
			End Get
		End Property
		Public ReadOnly Property View() As DevExpress.Xpf.Grid.GridViewBase
			Get
				Return CType(GridControl.View, DevExpress.Xpf.Grid.GridViewBase)
			End Get
		End Property
		Public ReadOnly Property TableView() As DevExpress.Xpf.Grid.TableView
			Get
				Return CType(View, DevExpress.Xpf.Grid.TableView)
			End Get
		End Property
		Public ReadOnly Property CardView() As DevExpress.Xpf.Grid.CardView
			Get
				Return CType(View, DevExpress.Xpf.Grid.CardView)
			End Get
		End Property
		Public ReadOnly Property TableViewModule() As TableView
			Get
				Return CType(DemoModule, TableView)
			End Get
		End Property
		Public ReadOnly Property MultiSelectionModule() As MultiSelection
			Get
				Return CType(DemoModule, MultiSelection)
			End Get
		End Property
		Public ReadOnly Property CopyPasteModule() As CopyPaste
			Get
				Return CType(DemoModule, CopyPaste)
			End Get
		End Property
		Public ReadOnly Property LargeDataSetModule() As LargeDataSet
			Get
				Return CType(DemoModule, LargeDataSet)
			End Get
		End Property
		Public ReadOnly Property DragDropModule() As GridDemo.DragDrop
			Get
				Return CType(DemoModule, GridDemo.DragDrop)
			End Get
		End Property
		Public ReadOnly Property FilterControlModule() As GridDemo.FilterControl
			Get
				Return CType(DemoModule, GridDemo.FilterControl)
			End Get
		End Property
		Public ReadOnly Property HitTestModule() As GridDemo.HitTest
			Get
				Return CType(DemoModule, GridDemo.HitTest)
			End Get
		End Property
		Public ReadOnly Property FilteringModule() As GridDemo.Filtering
			Get
				Return CType(DemoModule, GridDemo.Filtering)
			End Get
		End Property
  Public ReadOnly Property UnboundColumnsModule() As UnboundColumns
	  Get
		  Return CType(DemoModule, UnboundColumns)
	  End Get
  End Property
	End Class
	#End Region
	Public MustInherit Class BaseGridDemoTestingFixture
		Inherits BaseDemoTestingFixture
		Private ReadOnly modulesAccessor As GridDemoModulesAccessor
		Public Sub New()
			modulesAccessor = New GridDemoModulesAccessor(Me)
		End Sub
		Public ReadOnly Property GridControl() As DevExpress.Xpf.Grid.GridControl
			Get
				Return modulesAccessor.GridControl
			End Get
		End Property
		Public ReadOnly Property View() As DevExpress.Xpf.Grid.GridViewBase
			Get
				Return modulesAccessor.View
			End Get
		End Property
		Public ReadOnly Property TableView() As DevExpress.Xpf.Grid.TableView
			Get
				Return modulesAccessor.TableView
			End Get
		End Property
		Public ReadOnly Property CardView() As DevExpress.Xpf.Grid.CardView
			Get
				Return modulesAccessor.CardView
			End Get
		End Property
		Public ReadOnly Property TableViewModule() As TableView
			Get
				Return modulesAccessor.TableViewModule
			End Get
		End Property
		Public ReadOnly Property MultiSelectionModule() As MultiSelection
			Get
				Return modulesAccessor.MultiSelectionModule
			End Get
		End Property
		Public ReadOnly Property CopyPasteModule() As CopyPaste
			Get
				Return modulesAccessor.CopyPasteModule
			End Get
		End Property
		Public ReadOnly Property LargeDataSetModule() As LargeDataSet
			Get
				Return modulesAccessor.LargeDataSetModule
			End Get
		End Property
		Public ReadOnly Property DragDropModule() As GridDemo.DragDrop
			Get
				Return modulesAccessor.DragDropModule
			End Get
		End Property
		Public ReadOnly Property FilterControlModule() As GridDemo.FilterControl
			Get
				Return modulesAccessor.FilterControlModule
			End Get
		End Property
		Public ReadOnly Property HitTestModule() As GridDemo.HitTest
			Get
				Return modulesAccessor.HitTestModule
			End Get
		End Property
		Public ReadOnly Property FilteringModule() As GridDemo.Filtering
			Get
				Return modulesAccessor.FilteringModule
			End Get
		End Property
  Public ReadOnly Property UnboundColumnsModule() As UnboundColumns
	  Get
		  Return modulesAccessor.UnboundColumnsModule
	  End Get
  End Property
	End Class
	Public Class CheckDemoOptionsFixture
		Inherits BaseGridDemoTestingFixture
		Protected Overrides Sub CreateActions()
			MyBase.CreateActions()
			AddSimpleAction(AddressOf CreateCheckDemosActions)
		End Sub
		Private Sub CreateCheckDemosActions()
			CreateCheckFilterControlDemoActions()
			CreateCheckHitTestDemoActions()
			CreateCheckUnboundColumnsDemoActions()
			CreateCheckFilteringDemoActions()
			CreateCheckMultiSelectionDemoActions()
			CreateCheckCopyPasteDemoActions()
			CreateCheckTableViewDemoActions()
			CreateCheckFixedColumnsDemoActions()
			CreateSetCurrentDemoActions(Nothing, False)
		End Sub
		Private Function IsListBox(ByVal element As FrameworkElement) As Boolean
			Return TypeOf element Is System.Windows.Controls.ListBox
		End Function
		Private Function GetListBoxEditCount(ByVal listBoxEdit As ListBoxEdit) As Integer
			Return (CType(listBoxEdit.ItemsSource, System.Collections.IList)).Count
		End Function
		#Region "UnboundColumns"
		Private Sub CreateCheckUnboundColumnsDemoActions()
			AddLoadModuleActions(GetType(GridDemo.UnboundColumns))
			AddSimpleAction(Function() AnonymousMethod1())
		End Sub
		
		Private Function AnonymousMethod1() As Boolean
			Assert.AreEqual(0, GridControl.Columns("OrderID").GroupIndex)
			Assert.AreEqual(1, GridControl.GroupCount)
			Assert.IsTrue(GridControl.IsGroupRowExpanded(-1))
			Assert.IsTrue(GridControl.IsGroupRowExpanded(-2))
			Assert.IsTrue(GridControl.IsGroupRowExpanded(-3))
			Assert.IsTrue(UnboundColumnsModule.showExpressionEditorButton.IsEnabled)
			Assert.IsTrue(GridControl.Columns("Total").AllowUnboundExpressionEditor)
			Assert.IsTrue(GridControl.Columns("DiscountAmount").AllowUnboundExpressionEditor)
			Assert.AreEqual(3, UnboundColumnsModule.columnsList.Items.Count)
			Dim listBox As System.Windows.Controls.ListBox
			listBox = CType(LayoutHelper.FindElement(UnboundColumnsModule.columnsList, AddressOf IsListBox), System.Windows.Controls.ListBox)
			Assert.AreEqual("Discount Amount", (CType(listBox.ItemContainerGenerator.ContainerFromIndex(0), System.Windows.Controls.ListBoxItem)).Content)
			Assert.AreEqual("Total", (CType(listBox.ItemContainerGenerator.ContainerFromIndex(1), System.Windows.Controls.ListBoxItem)).Content)
			Assert.AreEqual("Total Scale", (CType(listBox.ItemContainerGenerator.ContainerFromIndex(2), System.Windows.Controls.ListBoxItem)).Content)
			Assert.AreEqual("DiscountAmount", (CType(listBox.ItemContainerGenerator.ContainerFromIndex(0), System.Windows.Controls.ListBoxItem)).Tag)
			Assert.AreEqual("Total", (CType(listBox.ItemContainerGenerator.ContainerFromIndex(1), System.Windows.Controls.ListBoxItem)).Tag)
			Assert.AreEqual("TotalScale", (CType(listBox.ItemContainerGenerator.ContainerFromIndex(2), System.Windows.Controls.ListBoxItem)).Tag)
			Assert.IsNull(LayoutHelper.FindElementByName(View.GetCellElementByRowHandleAndColumn(3, GridControl.Columns("Total")), "arrow"))
			Assert.IsNotNull(LayoutHelper.FindElementByName(View.GetCellElementByRowHandleAndColumn(4, GridControl.Columns("Total")), "arrow"))
			Assert.AreEqual(CDec(0.0), GridControl.GetCellValue(0, GridControl.Columns("DiscountAmount")))
			Assert.AreEqual(CDec(168.0), GridControl.GetCellValue(0, GridControl.Columns("Total")))
			Assert.AreEqual(CDec(0.4), GridControl.GetCellValue(0, GridControl.Columns("TotalScale")))
			Assert.IsTrue(Math.Abs(CDbl(223.0) - Convert.ToDouble(GridControl.GetCellValue(6, GridControl.Columns("DiscountAmount")))) < 0.001)
			Assert.IsTrue(Math.Abs(CDbl(1261.4) - Convert.ToDouble(GridControl.GetCellValue(6, GridControl.Columns("Total")))) < 0.001)
			Assert.IsTrue(Math.Abs(CDbl(0.7614) - Convert.ToDouble(GridControl.GetCellValue(6, GridControl.Columns("TotalScale")))) < 0.001)
			AssertShowExpressionEditor("Round([UnitPrice] * [Quantity] - [Total])")
			UnboundColumnsModule.columnsList.SelectedIndex = 1
			UpdateLayoutAndDoEvents()
			AssertShowExpressionEditor("([UnitPrice] * [Quantity]) * (1 - [Discount])")
			UnboundColumnsModule.columnsList.SelectedIndex = 2
			UpdateLayoutAndDoEvents()
			AssertShowExpressionEditor("Iif([Total] < 1000, 0.4, Min((0.5 + ([Total] - 1000) / 1000), 1.2))")
			GridControl.Columns("DiscountAmount").UnboundExpression = "[Unit Price] * [Quantity] * (1 - [Discount])+[Discount][[Discount]]"
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(DevExpress.Data.UnboundErrorObject.Value, GridControl.GetCellValue(0, GridControl.Columns("DiscountAmount")))
			Return True
		End Function
		Private expressionEditorControl As ExpressionEditorControl = Nothing
		Private Sub AssertShowExpressionEditor(ByVal expectedExpression As String)
			Dim handler As DevExpress.Xpf.Grid.UnboundExpressionEditorEventHandler = Function(sender, e) AnonymousMethod2(sender, e)
			AddHandler View.UnboundExpressionEditorCreated, handler
			Try
				UIAutomationActions.ClickButton(UnboundColumnsModule.showExpressionEditorButton)
				UpdateLayoutAndDoEvents()
				Assert.IsTrue(expressionEditorControl.IsVisible)
				Assert.AreEqual(expectedExpression, expressionEditorControl.Expression)
				UIAutomationActions.ClickButton(LayoutHelper.FindParentObject(Of DialogControl)(expressionEditorControl).CancelButton)
				UpdateLayoutAndDoEvents()
				Assert.IsFalse(expressionEditorControl.IsVisible)
				expressionEditorControl = Nothing
			Finally
				RemoveHandler View.UnboundExpressionEditorCreated, handler
			End Try
		End Sub
		
		Private Function AnonymousMethod2(ByVal sender As Object, ByVal e As DevExpress.Xpf.Grid.UnboundExpressionEditorEventArgs) As Boolean
			expressionEditorControl = e.ExpressionEditorControl
			Return True
		End Function
		#End Region
	#Region "hit test"
		Private Function IsGroupGridRow(ByVal element As FrameworkElement) As Boolean
			Return TypeOf element Is DevExpress.Xpf.Grid.GroupGridRow
		End Function
		Private Sub CreateCheckHitTestDemoActions()
			AddLoadModuleActions(GetType(GridDemo.HitTest))
			AddSimpleAction(Function() AnonymousMethod3())
		End Sub
		
		Private Function AnonymousMethod3() As Boolean
			Assert.IsTrue(HitTestModule.showHitInfoCheckEdit.IsChecked.Value)
			Assert.AreEqual(0, HitTestModule.viewsListBox.SelectedIndex)
			Assert.AreEqual(GridControl, HitTestModule.hitInfoPopup.PlacementTarget)
			Assert.AreEqual(PlacementMode.Mouse, HitTestModule.hitInfoPopup.Placement)
			MouseActions.MouseMove(GridControl, -5, -5)
			Assert.IsFalse(HitTestModule.hitInfoPopup.IsOpen)
			MouseActions.MouseMove(GridControl, 5, 5)
			Assert.IsTrue(HitTestModule.hitInfoPopup.IsOpen)
			Assert.AreEqual(0R, HitTestModule.hitInfoPopup.HorizontalOffset)
			Assert.AreEqual(0R, HitTestModule.hitInfoPopup.VerticalOffset)
			EditorsActions.ToggleCheckEdit(HitTestModule.showHitInfoCheckEdit)
			Assert.IsFalse(HitTestModule.hitInfoPopup.IsOpen)
			EditorsActions.ToggleCheckEdit(HitTestModule.showHitInfoCheckEdit)
			Assert.IsTrue(HitTestModule.hitInfoPopup.IsOpen)
			MouseActions.LeftMouseDown(GridControlHelper.GetColumnHeaderElements(GridControl, GridControl.Columns(0))(0), 5, 5)
			MouseActions.MouseMove(GridControlHelper.GetColumnHeaderElements(GridControl, GridControl.Columns(0))(0), 25, 5)
			Assert.IsFalse(HitTestModule.hitInfoPopup.IsOpen)
			MouseActions.LeftMouseUp(GridControlHelper.GetColumnHeaderElements(GridControl, GridControl.Columns(0))(0), 5, 5)
			Assert.IsTrue(HitTestModule.hitInfoPopup.IsOpen)
			TableView.ShowColumnChooser()
			UpdateLayoutAndDoEvents()
			Assert.IsFalse(HitTestModule.hitInfoPopup.IsOpen)
			TableView.HideColumnChooser()
			UpdateLayoutAndDoEvents()
			Assert.IsTrue(HitTestModule.hitInfoPopup.IsOpen)
			Assert.AreEqual(4, HitTestModule.hitIfoItemsControl.Items.Count)
			Assert.AreEqual("HitTest", GetHitInfoNameTextControl(0).NameValue)
			Assert.AreEqual("ColumnHeader", GetHitInfoNameTextControl(0).TextValue)
			Assert.AreEqual("Column", GetHitInfoNameTextControl(1).NameValue)
			Assert.AreEqual("ID", GetHitInfoNameTextControl(1).TextValue)
			Assert.AreEqual("RowHandle", GetHitInfoNameTextControl(2).NameValue)
			Assert.AreEqual("No row", GetHitInfoNameTextControl(2).TextValue)
			Assert.AreEqual("CellValue", GetHitInfoNameTextControl(3).NameValue)
			Assert.AreEqual("", GetHitInfoNameTextControl(3).TextValue)
			MouseActions.MouseMove(LayoutHelper.FindElementByName(GridControl, "PART_NewItemRow"), 35, 5)
			Assert.AreEqual(4, HitTestModule.hitIfoItemsControl.Items.Count)
			Assert.AreEqual("New Item Row", GetHitInfoNameTextControl(2).TextValue)
			MouseActions.MouseMove(LayoutHelper.FindElementByName(GridControl, "PART_FilterRow"), 35, 5)
			Assert.AreEqual(4, HitTestModule.hitIfoItemsControl.Items.Count)
			Assert.AreEqual("Auto Filter Row", GetHitInfoNameTextControl(2).TextValue)
			MouseActions.MouseMove(View.GetCellElementByRowHandleAndColumn(0, GridControl.Columns(0)), 35, 5)
			Assert.AreEqual(4, HitTestModule.hitIfoItemsControl.Items.Count)
			Assert.AreEqual("0 (data row)", GetHitInfoNameTextControl(2).TextValue)
			Assert.AreEqual("10248", GetHitInfoNameTextControl(3).TextValue)
			AssertAdditionalElements()
			MouseActions.MouseMove(LayoutHelper.FindElementByName(LayoutHelper.FindElement(GridControl, AddressOf IsGroupGridRow), "PART_Indicator"), 5, 5)
			Assert.AreEqual(5, HitTestModule.hitIfoItemsControl.Items.Count)
			Assert.AreEqual("RowIndicatorState", GetHitInfoNameTextControl(4).NameValue)
			Assert.AreEqual("Focused", GetHitInfoNameTextControl(4).TextValue)
			HitTestModule.viewsListBox.SelectedIndex = 1
			CardView.CardLayout = DevExpress.Xpf.Grid.CardLayout.Rows
			UpdateLayoutAndDoEvents()
			Assert.IsNotNull(CardView)
			AssertAdditionalElements()
			Return True
		End Function

		Private Sub AssertAdditionalElements()
			GridControl.Columns(0).GroupIndex = 0
			UpdateLayoutAndDoEvents()
			MouseActions.MouseMove(View.GetRowElementByRowHandle(-1), View.GetRowElementByRowHandle(-1).ActualWidth / 2, View.GetRowElementByRowHandle(-1).ActualHeight / 2)
			Assert.AreEqual(4, HitTestModule.hitIfoItemsControl.Items.Count)
			Assert.AreEqual("-1 (group row)", GetHitInfoNameTextControl(2).TextValue)
			Assert.AreEqual(Nothing, GetHitInfoNameTextControl(3).TextValue)

			MouseActions.MouseMove(LayoutHelper.FindElement(View.GetRowElementByRowHandle(-1), Function(element) CStr(element.GetValue(System.Windows.Controls.TextBlock.TextProperty)) = "ID: 10248"), 5, 5)
			Assert.AreEqual(5, HitTestModule.hitIfoItemsControl.Items.Count)
			Assert.AreEqual("GroupValue", GetHitInfoNameTextControl(4).NameValue)
			Assert.AreEqual("OrderID: 10248", GetHitInfoNameTextControl(4).TextValue)

			MouseActions.MouseMove(LayoutHelper.FindElement(View.GetRowElementByRowHandle(-1), Function(element) CStr(element.GetValue(System.Windows.Controls.TextBlock.TextProperty)) = "Count=3"), 5, 5)
			Assert.AreEqual(5, HitTestModule.hitIfoItemsControl.Items.Count)
			Assert.AreEqual("GroupSummary", GetHitInfoNameTextControl(4).NameValue)
			Assert.AreEqual("Count=3", GetHitInfoNameTextControl(4).TextValue)

			GridControl.ClearGrouping()
			UpdateLayoutAndDoEvents()
			MouseActions.MouseMove(LayoutHelper.FindElement(View, Function(element) CStr(element.GetValue(System.Windows.Controls.TextBlock.TextProperty)) = "Count=2155"), 5, 5)
			Assert.AreEqual(4, HitTestModule.hitIfoItemsControl.Items.Count)
			Assert.AreEqual("FixedTotalSummary", GetHitInfoNameTextControl(3).NameValue)
			Assert.AreEqual("Count=2155", GetHitInfoNameTextControl(3).TextValue)
		End Sub
		Private Function GetHitInfoNameTextControl(ByVal intdex As Integer) As NameTextControl
			Return CType(VisualTreeHelper.GetChild(HitTestModule.hitIfoItemsControl.ItemContainerGenerator.ContainerFromIndex(intdex), 0), NameTextControl)
		End Function
	#End Region
	#Region "drag and drop"
	#End Region
	#Region "table view"
		Private Sub CreateCheckTableViewDemoActions()
			AddLoadModuleActions(GetType(TableView))
			AddSimpleAction(Function() AnonymousMethod4())
		End Sub
		
		Private Function AnonymousMethod4() As Boolean
			Assert.IsTrue(TableView.AutoWidth)
			Assert.IsTrue(TableView.AllowSorting)
			Assert.IsTrue(TableView.AllowGrouping)
			Assert.IsTrue(TableView.AllowColumnMoving)
			Assert.IsTrue(TableView.AllowResizing)
			Assert.IsTrue(TableView.AllowBestFit)
			Assert.IsTrue(TableView.ShowHorizontalLines)
			Assert.IsTrue(TableView.ShowVerticalLines)
			EditorsActions.ToggleCheckEdit(TableViewModule.autoWidthCheckEdit)
			UpdateLayoutAndDoEvents()
			Assert.IsFalse(TableView.AutoWidth)
			EditorsActions.ToggleCheckEdit(TableViewModule.allowSortingCheckEdit)
			UpdateLayoutAndDoEvents()
			Assert.IsFalse(TableView.AllowSorting)
			Assert.IsFalse(GridControl.Columns("OrderID").ActualAllowSorting)
			Assert.IsFalse(GridControl.Columns("OrderID").ActualAllowGrouping)
			EditorsActions.ToggleCheckEdit(TableViewModule.allowSortingCheckEdit)
			EditorsActions.ToggleCheckEdit(TableViewModule.allowGroupingCheckEdit)
			UpdateLayoutAndDoEvents()
			Assert.IsFalse(TableView.AllowGrouping)
			Assert.IsTrue(GridControl.Columns("OrderID").ActualAllowSorting)
			Assert.IsFalse(GridControl.Columns("OrderID").ActualAllowGrouping)
			EditorsActions.ToggleCheckEdit(TableViewModule.allowMovingCheckEdit)
			UpdateLayoutAndDoEvents()
			Assert.IsFalse(TableView.AllowColumnMoving)
			Assert.IsFalse(GridControl.Columns("OrderID").ActualAllowMoving)
			EditorsActions.ToggleCheckEdit(TableViewModule.allowResizingCheckEdit)
			UpdateLayoutAndDoEvents()
			Assert.IsFalse(TableView.AllowResizing)
			Assert.IsFalse(GridControl.Columns("OrderID").ActualAllowResizing)
			EditorsActions.ToggleCheckEdit(TableViewModule.allowBestFitCheckEdit)
			UpdateLayoutAndDoEvents()
			Assert.IsFalse(TableView.AllowBestFit)
			EditorsActions.ToggleCheckEdit(TableViewModule.showHorizontalLinesCheckEdit)
			UpdateLayoutAndDoEvents()
			Assert.IsFalse(TableView.ShowHorizontalLines)
			EditorsActions.ToggleCheckEdit(TableViewModule.showVerticalLinesCheckEdit)
			UpdateLayoutAndDoEvents()
			Assert.IsFalse(TableView.ShowVerticalLines)
			Assert.AreEqual(DevExpress.Xpf.Grid.GridViewNavigationStyle.Row, TableViewModule.NavigationStyleComboBox.SelectedItem)
			Assert.AreEqual(DevExpress.Xpf.Grid.GridViewNavigationStyle.Row, View.NavigationStyle)
			TableViewModule.NavigationStyleComboBox.SelectedItem = DevExpress.Xpf.Grid.GridViewNavigationStyle.Cell
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(DevExpress.Xpf.Grid.GridViewNavigationStyle.Cell, View.NavigationStyle)
			TableViewModule.NavigationStyleComboBox.SelectedItem = DevExpress.Xpf.Grid.GridViewNavigationStyle.None
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(DevExpress.Xpf.Grid.GridViewNavigationStyle.None, View.NavigationStyle)
			Return True
		End Function
	#End Region
	#Region "Multi-Selection"
		Private Sub CreateCheckMultiSelectionDemoActions()
			AddLoadModuleActions(GetType(MultiSelection))
			AddSimpleAction(Function() AnonymousMethod5())
		End Sub
		
		Private Function AnonymousMethod5() As Boolean
			Assert.AreEqual(GridControl.View, TableView)
			Assert.AreEqual(DevExpress.Xpf.Grid.GridViewNavigationStyle.Cell, TableView.NavigationStyle)
			AssertMuliSelection(TableView)
			MultiSelectionModule.viewsListBox.SelectedIndex = 1
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(GridControl.View, CardView)
			Assert.AreEqual(DevExpress.Xpf.Grid.GridViewNavigationStyle.Row, CardView.NavigationStyle)
			GridControl.SelectItem(0)
			AssertMuliSelection(CardView)
			Return True
		End Function
		Private Sub AssertMuliSelection(ByVal gridView As DevExpress.Xpf.Grid.GridViewBase)
			AssertMultiSelectMode(gridView, True)

			EditorsActions.ToggleCheckEdit(MultiSelectionModule.enableMultiSelectCheckEdit)
			UpdateLayoutAndDoEvents()
			AssertMultiSelectMode(gridView, False)
			Assert.IsFalse(MultiSelectionModule.ProductsMultiSelectionOptionsControl.IsEnabled)
			Assert.IsFalse(MultiSelectionModule.PriceMultiSelectionOptionsControl.IsEnabled)
			EditorsActions.ToggleCheckEdit(MultiSelectionModule.enableMultiSelectCheckEdit)
			UpdateLayoutAndDoEvents()
			AssertMultiSelectMode(gridView, True)
			Assert.IsTrue(MultiSelectionModule.ProductsMultiSelectionOptionsControl.IsEnabled)
			Assert.IsTrue(MultiSelectionModule.PriceMultiSelectionOptionsControl.IsEnabled)

			Assert.AreEqual(77, (CType((CType(MultiSelectionModule.ProductsMultiSelectionOptionsControl.comboBoxControl, ComboBoxEdit)).ItemsSource, System.Data.DataView)).Count)
			Assert.AreEqual(1, gridView.Grid.SelectedItems.Count)

			UIAutomationActions.ClickButton(MultiSelectionModule.ProductsMultiSelectionOptionsControl.SelectButton)
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(39, gridView.Grid.SelectedItems.Count)
			Assert.AreEqual(39, GetListBoxEditCount(MultiSelectionModule.SelectionRowsListBox))

			UIAutomationActions.ClickButton(MultiSelectionModule.ProductsMultiSelectionOptionsControl.UnselectButton)
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(1, gridView.Grid.SelectedItems.Count)
			Assert.AreEqual(1, GetListBoxEditCount(MultiSelectionModule.SelectionRowsListBox))

			UIAutomationActions.ClickButton(MultiSelectionModule.ProductsMultiSelectionOptionsControl.ReselectButton)
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(38, gridView.Grid.SelectedItems.Count)
			Assert.AreEqual(38, GetListBoxEditCount(MultiSelectionModule.SelectionRowsListBox))

			gridView.Grid.UnselectAll()
			gridView.Grid.SelectRange(0, 3)

			Assert.AreEqual("Grand Total=${0:N}", gridView.VisibleColumns(4).TotalSummaries(0).Item.DisplayFormat)
			Assert.AreEqual(Convert.ToString(607.4, System.Globalization.CultureInfo.CurrentCulture), gridView.VisibleColumns(4).TotalSummaries(0).Value.ToString())
			GridControl.UnselectAll()

			Dim count As Integer = (TryCast((MultiSelectionModule.PriceMultiSelectionOptionsControl.comboBoxControl.ItemsSource), System.Collections.Generic.List(Of Range))).Count
			Assert.AreEqual(9, count)
			For i As Integer = 0 To count - 1
				MultiSelectionModule.PriceMultiSelectionOptionsControl.comboBoxControl.SelectedIndex = i
				UIAutomationActions.ClickButton(MultiSelectionModule.PriceMultiSelectionOptionsControl.SelectButton)
				UpdateLayoutAndDoEvents()
			Next i
			Assert.AreEqual(GridControl.VisibleRowCount, gridView.Grid.SelectedItems.Count)
			GridControl.UnselectAll()

			GridControl.GroupBy("OrderID")
			UpdateLayoutAndDoEvents()
			GridControl.SelectItem(0)
			GridControl.SelectItem(10)
			Assert.AreEqual("Grand Total=${0:N}", (CType(gridView.RootRowsContainer.Items(0), DevExpress.Xpf.Grid.GroupRowData)).GroupSummaryData(0).SummaryItem.DisplayFormat)
			Assert.AreEqual(168, Convert.ToInt32((CType(gridView.RootRowsContainer.Items(0), DevExpress.Xpf.Grid.GroupRowData)).GroupSummaryData(0).SummaryValue))
			Assert.AreEqual(336, Convert.ToInt32((CType(gridView.RootRowsContainer.Items(3), DevExpress.Xpf.Grid.GroupRowData)).GroupSummaryData(0).SummaryValue))
			Assert.AreEqual(504, Convert.ToInt32(gridView.VisibleColumns(4).TotalSummaries(0).Value))
			GridControl.ClearGrouping()
			GridControl.UnselectAll()
		End Sub
		Private Sub AssertMultiSelectMode(ByVal view As DevExpress.Xpf.Grid.GridViewBase, ByVal isMultiSelect As Boolean)
			Assert.AreEqual(If(isMultiSelect, DevExpress.Xpf.Grid.MultiSelectMode.Row, DevExpress.Xpf.Grid.MultiSelectMode.None), view.DataControl.SelectionMode)
		End Sub
	#End Region
	#Region "Copy Paste"
		Private Sub CreateCheckCopyPasteDemoActions()
			AddLoadModuleActions(GetType(CopyPaste))
			AddSimpleAction(Function() AnonymousMethod6())
			AddEventAction(CopyPaste.PasteCompetedEvent, Function() DemoBaseTesting.CurrentDemoModule, Nothing, Nothing)
			AddSimpleAction(Function() AnonymousMethod7())
			AddEventAction(CopyPaste.PasteCompetedEvent, Function() DemoBaseTesting.CurrentDemoModule, Nothing, Nothing)
			AddSimpleAction(Function() AnonymousMethod8())
			AddEventAction(CopyPaste.PasteCompetedEvent, Function() DemoBaseTesting.CurrentDemoModule, Nothing, Nothing)
			AddSimpleAction(Function() AnonymousMethod9())
		End Sub
		
		Private Function AnonymousMethod6() As Boolean
			Assert.IsTrue(CopyPasteModule.firstGrid.ClipboardCopyMode <> DevExpress.Xpf.Grid.ClipboardCopyMode.None)
			Assert.IsTrue(CopyPasteModule.secondGrid.ClipboardCopyMode <> DevExpress.Xpf.Grid.ClipboardCopyMode.None)
			EditorsActions.ToggleCheckEdit(CopyPasteModule.allowCopyingtoClipboardCheckEdit)
			UpdateLayoutAndDoEvents()
			Assert.IsTrue(CopyPasteModule.firstGrid.ClipboardCopyMode = DevExpress.Xpf.Grid.ClipboardCopyMode.None)
			Assert.IsTrue(CopyPasteModule.secondGrid.ClipboardCopyMode = DevExpress.Xpf.Grid.ClipboardCopyMode.None)
			EditorsActions.ToggleCheckEdit(CopyPasteModule.allowCopyingtoClipboardCheckEdit)
			UpdateLayoutAndDoEvents()
			AssertGridsAndButtonState(FocusedGrid.None, False, False, False, False)
			Assert.AreEqual(10, CopyPasteModule.firstGrid.VisibleRowCount)
			Assert.AreEqual(0, CopyPasteModule.secondGrid.VisibleRowCount)
			Assert.AreEqual(0, CopyPasteModule.CopyPasteDemoTabControl.SelectedIndex)
			ClickOnGrid(CopyPasteModule.firstGrid)
			CopyPasteModule.firstGrid.SelectRange(1, 4)
			UpdateLayoutAndDoEvents()
			AssertGridsAndButtonState(FocusedGrid.First, True, True, False, True)
			Assert.AreEqual(0, CopyPasteModule.PasteRule.SelectedIndex)
			UIAutomationActions.ClickButton(CopyPasteModule.CopyButton)
			UpdateLayoutAndDoEvents()
			ClickOnGrid(CopyPasteModule.secondGrid)
			UpdateLayoutAndDoEvents()
			AssertGridsAndButtonState(FocusedGrid.Second, False, False, True, False)
			UIAutomationActions.ClickButton(CopyPasteModule.PasteButton)
			Return True
		End Function
		
		Private Function AnonymousMethod7() As Boolean
			Assert.AreEqual(5, CopyPasteModule.secondGrid.VisibleRowCount)
			ClickOnGrid(CopyPasteModule.firstGrid)
			UpdateLayoutAndDoEvents()
			AssertGridsAndButtonState(FocusedGrid.First, True, True, True, True)
			UIAutomationActions.ClickButton(CopyPasteModule.DeleteButton)
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(5, CopyPasteModule.firstGrid.VisibleRowCount)
			CopyPasteModule.CopyPasteDemoTabControl.SelectedIndex = 1
			UpdateLayoutAndDoEvents()
			CopyPasteModule.textEdit.Focus()
			UpdateLayoutAndDoEvents()
			AssertGridsAndButtonState(FocusedGrid.First, False, False, True, False)
			UIAutomationActions.ClickButton(CopyPasteModule.PasteButton)
			UpdateLayoutAndDoEvents()
			Assert.AreEqual("Id From Sent Hours Active Has Attachment", CopyPasteModule.textEdit.Text.Substring(0, 40))
			CopyPasteModule.textEdit.Select(0, 8)
			UpdateLayoutAndDoEvents()
			CopyPasteModule.textEdit.Focus()
			UpdateLayoutAndDoEvents()
			AssertGridsAndButtonState(FocusedGrid.First, True, True, True, True)
			UIAutomationActions.ClickButton(CopyPasteModule.CutButton)
			UpdateLayoutAndDoEvents()
			Assert.AreEqual("Sent Hours Active Has Attachment", CopyPasteModule.textEdit.Text.Substring(0, 32))
			CopyPasteModule.textEdit.Focus()
			UpdateLayoutAndDoEvents()
			CopyPasteModule.textEdit.CaretIndex = 0
			UIAutomationActions.ClickButton(CopyPasteModule.PasteButton)
			UpdateLayoutAndDoEvents()
			Assert.AreEqual("Id From Sent Hours Active Has Attachment", CopyPasteModule.textEdit.Text.Substring(0, 40))
			CopyPasteModule.textEdit.SelectAll()
			UpdateLayoutAndDoEvents()
			CopyPasteModule.textEdit.Focus()
			UpdateLayoutAndDoEvents()
			UIAutomationActions.ClickButton(CopyPasteModule.CopyButton)
			UpdateLayoutAndDoEvents()
			CopyPasteModule.textEdit.Focus()
			UpdateLayoutAndDoEvents()
			UIAutomationActions.ClickButton(CopyPasteModule.DeleteButton)
			UpdateLayoutAndDoEvents()
			Assert.AreEqual("", CopyPasteModule.textEdit.Text)
			CopyPasteModule.textEdit.Focus()
			UpdateLayoutAndDoEvents()
			UIAutomationActions.ClickButton(CopyPasteModule.PasteButton)
			UpdateLayoutAndDoEvents()
			Assert.AreEqual("Id From Sent Hours Active Has Attachment", CopyPasteModule.textEdit.Text.Substring(0, 40))
			CopyPasteModule.CopyPasteDemoTabControl.SelectedIndex = 0
			UpdateLayoutAndDoEvents()
			CopyPasteModule.secondGrid.UnselectAll()
			CopyPasteModule.secondGrid.SelectItem(2)
			UpdateLayoutAndDoEvents()
			CType((CType(CopyPasteModule.secondGrid.View, DevExpress.Xpf.Grid.GridViewBase)).Grid.SelectedItems(0), GridDemo.CopyPasteOutlookData).From = "QWERTY"
			ClickOnGrid(CopyPasteModule.secondGrid)
			UpdateLayoutAndDoEvents()
			UIAutomationActions.ClickButton(CopyPasteModule.CutButton)
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(4, CopyPasteModule.secondGrid.VisibleRowCount)
			CopyPasteModule.firstGrid.View.FocusedRowHandle = 2
			ClickOnGrid(CopyPasteModule.firstGrid)
			UpdateLayoutAndDoEvents()
			UIAutomationActions.ClickButton(CopyPasteModule.PasteButton)
			Return True
		End Function
		
		Private Function AnonymousMethod8() As Boolean
			Assert.AreEqual(6, CopyPasteModule.firstGrid.VisibleRowCount)
			Assert.AreEqual("QWERTY", (CType(CopyPasteModule.firstGrid.GetRow(3), GridDemo.CopyPasteOutlookData)).From)
			CopyPasteModule.PasteRule.SelectedIndex = 1
			UIAutomationActions.ClickButton(CopyPasteModule.PasteButton)
			Return True
		End Function
		
		Private Function AnonymousMethod9() As Boolean
			Assert.AreEqual(7, CopyPasteModule.firstGrid.VisibleRowCount)
			Assert.AreEqual("QWERTY", (CType(CopyPasteModule.firstGrid.GetRow(6), GridDemo.CopyPasteOutlookData)).From)
			Return True
		End Function
		Private Sub ClickOnGrid(ByVal grid As DevExpress.Xpf.Grid.GridControl)
			MouseActions.LeftMouseDown(grid.View, 2, 2)
			MouseActions.LeftMouseUp(grid.View, 2, 2)
		End Sub
		Private Sub AssertGridsAndButtonState(ByVal focusedGrid As FocusedGrid, ByVal copyBtn As Boolean, ByVal cutBtn As Boolean, ByVal pasteBtn As Boolean, ByVal delBtn As Boolean)
			Assert.AreEqual(focusedGrid, CopyPasteModule.FocusedGrid)
			Assert.AreEqual(copyBtn, CopyPasteModule.CopyButton.IsEnabled)
			Assert.AreEqual(cutBtn, CopyPasteModule.CutButton.IsEnabled)
			Assert.AreEqual(pasteBtn, CopyPasteModule.PasteButton.IsEnabled)
			Assert.AreEqual(delBtn, CopyPasteModule.DeleteButton.IsEnabled)
		End Sub
	#End Region
	#Region "Filter Control"
		Private Sub CreateCheckFilterControlDemoActions()
			AddLoadModuleActions(GetType(FilterControl))
			AddSimpleAction(Function() AnonymousMethod10())
		End Sub
		
		Private Function AnonymousMethod10() As Boolean
			Assert.IsTrue(View.AllowFilterEditor)
			Dim filterCriteria As CriteriaOperator = New BinaryOperator("OrderID", 10248, BinaryOperatorType.Equal)
			Assert.AreEqual(filterCriteria, FilterControlModule.filterEditor.FilterCriteria)
			Assert.AreEqual(filterCriteria, GridControl.FilterCriteria)
			Assert.AreEqual(False, FilterControlModule.showGroupCommandsIcon.IsChecked)
			Assert.AreEqual(False, FilterControlModule.showOperandTypeIcon.IsChecked)
			Assert.AreEqual(True, FilterControlModule.showToolTips.IsChecked)
			Assert.IsFalse(FilterControlModule.filterEditor.ShowGroupCommandsIcon)
			Assert.IsFalse(FilterControlModule.filterEditor.ShowOperandTypeIcon)
			Assert.IsTrue(FilterControlModule.filterEditor.ShowToolTips)
			EditorsActions.ToggleCheckEdit(FilterControlModule.showGroupCommandsIcon)
			UpdateLayoutAndDoEvents()
			Assert.IsTrue(FilterControlModule.filterEditor.ShowGroupCommandsIcon)
			EditorsActions.ToggleCheckEdit(FilterControlModule.showOperandTypeIcon)
			UpdateLayoutAndDoEvents()
			Assert.IsTrue(FilterControlModule.filterEditor.ShowOperandTypeIcon)
			EditorsActions.ToggleCheckEdit(FilterControlModule.showToolTips)
			UpdateLayoutAndDoEvents()
			Assert.IsFalse(FilterControlModule.filterEditor.ShowToolTips)
			filterCriteria = New BinaryOperator("OrderID", 10249, BinaryOperatorType.Equal)
			FilterControlModule.filterEditor.FilterCriteria = filterCriteria
			UpdateLayoutAndDoEvents()
			UIAutomationActions.ClickButton(FilterControlModule.ApplyFilterButton)
			Assert.AreEqual(filterCriteria, GridControl.FilterCriteria)
			filterCriteria = New BinaryOperator("OrderID", 10250, BinaryOperatorType.Equal)
			GridControl.FilterCriteria = filterCriteria
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(filterCriteria, FilterControlModule.filterEditor.FilterCriteria)
			AddHandler View.FilterEditorCreated, AddressOf View_FilterEditorCreated
			View.ShowFilterEditor(Nothing)
			UpdateLayoutAndDoEvents()
			Assert.IsNotNull(FilterEditorFromGrid)
			Assert.IsTrue(FilterEditorFromGrid.ShowGroupCommandsIcon)
			Assert.IsTrue(FilterEditorFromGrid.ShowOperandTypeIcon)
			Assert.IsFalse(FilterEditorFromGrid.ShowToolTips)
			Dim filterDialogControl As DialogControl = LayoutHelper.FindParentObject(Of DialogControl)(FilterEditorFromGrid)
			Assert.IsNotNull(filterDialogControl)
			UIAutomationActions.ClickButton(filterDialogControl.CancelButton)
			Return True
		End Function
		Private FilterEditorFromGrid As DevExpress.Xpf.Editors.Filtering.FilterControl = Nothing
		Private Sub View_FilterEditorCreated(ByVal sender As Object, ByVal e As DevExpress.Xpf.Grid.FilterEditorEventArgs)
			FilterEditorFromGrid = e.FilterControl
		End Sub
	#End Region
	#Region "Filtering"
		Private Sub CreateCheckFilteringDemoActions()
			AddLoadModuleActions(GetType(Filtering))
			AddSimpleAction(Function() AnonymousMethod11())
		End Sub
		
		Private Function AnonymousMethod11() As Boolean
			Assert.IsTrue(CBool(FilteringModule.allowFilterEditor.IsChecked))
			Assert.IsTrue(CBool(FilteringModule.allowFilteringCheckEdit.IsChecked))
			Assert.AreEqual(0, FilteringModule.showFilterPanelModeListBox.SelectedIndex)
			Assert.AreEqual(0, FilteringModule.viewsListBox.SelectedIndex)
			Assert.AreEqual(DevExpress.Xpf.Grid.ShowFilterPanelMode.Default, View.ShowFilterPanelMode)
			FilteringModule.showFilterPanelModeListBox.SelectedIndex = 1
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(DevExpress.Xpf.Grid.ShowFilterPanelMode.ShowAlways, View.ShowFilterPanelMode)
			Dim column As DevExpress.Xpf.Grid.GridColumn = FilteringModule.colCountry
			Assert.AreEqual(DefaultBoolean.Default, column.AllowColumnFiltering)
			Assert.AreEqual(DefaultBoolean.Default, column.AllowColumnFiltering)
			Dim updateImmediatelyCheckBox As CheckEdit = FilteringModule.immediateUpdateCountryColumnFilterCheckEdit
			Assert.AreEqual(True, updateImmediatelyCheckBox.IsChecked)
			Assert.AreEqual(True, column.ImmediateUpdateColumnFilter)
			EditorsActions.ToggleCheckEdit(updateImmediatelyCheckBox)
			Assert.AreEqual(False, column.ImmediateUpdateColumnFilter)
			EditorsActions.ToggleCheckEdit(updateImmediatelyCheckBox)
			Assert.AreEqual(True, column.ImmediateUpdateColumnFilter)
			FilteringModule.showFilterPanelModeListBox.SelectedIndex = 2
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(DevExpress.Xpf.Grid.ShowFilterPanelMode.Never, View.ShowFilterPanelMode)
			FilteringModule.viewsListBox.SelectedIndex = 1
			UpdateLayoutAndDoEvents()
			Assert.AreEqual(GetType(DevExpress.Xpf.Grid.CardView), CardView.GetType())
			Return True
		End Function
	#End Region

		Private Sub CreateCheckFixedColumnsDemoActions()
			AddLoadModuleActions(GetType(FixedColumns))
		End Sub
	End Class
	Public Class BugFixesFixture
		Inherits BaseGridDemoTestingFixture
		Protected Overrides Sub CreateActions()
			MyBase.CreateActions()
			AddSimpleAction(AddressOf CreateCheckDemosActions)
		End Sub
		Private Sub CreateCheckDemosActions()
			Create_B144178_Actions()
			CreateSetCurrentDemoActions(Nothing, False)
		End Sub
	#Region "B144178"
		Private Sub Create_B144178_Actions()
			AddLoadModuleActions(GetType(LargeDataSet))
			AddSimpleAction(Function() AnonymousMethod12())
			AddLoadModuleActions(GetType(InplaceEditors))
			AddSimpleAction(Function() AnonymousMethod13())
			AddLoadModuleActions(GetType(AutoFilterRow))
			AddSimpleAction(Function() AnonymousMethod14())
		End Sub
		
		Private Function AnonymousMethod12() As Boolean
			AssertPrioritySorting("Priority(7)")
			Return True
		End Function
		
		Private Function AnonymousMethod13() As Boolean
			AssertPrioritySorting("Priority")
			Return True
		End Function
		
		Private Function AnonymousMethod14() As Boolean
			AssertPrioritySorting("Priority")
			Return True
		End Function

		Private Sub AssertPrioritySorting(ByVal fieldName As String)
			GridControl.SortBy(fieldName)
			For i As Integer = 0 To 9
				Assert.AreEqual(Priority.Low, CType(GridControl.GetCellValue(i, fieldName), Priority))
				Assert.AreEqual(Priority.High, CType(GridControl.GetCellValue(GridControl.VisibleRowCount - 1 - i, fieldName), Priority))
			Next i
		End Sub
		#End Region
	End Class
End Namespace