Mini Kabibi Habibi
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Windows
Imports DevExpress.Xpf.Core.Native
Imports DevExpress.Xpf.DemoBase
Imports DevExpress.Xpf.DemoBase.DemoTesting
Imports DevExpress.Xpf.DemoBase.Helpers
Imports DevExpress.Xpf.DemoBase.Helpers.TextColorizer
Imports DevExpress.Xpf.Editors
Imports System.Windows.Controls
Imports DevExpress.Xpf.Editors.Helpers
Imports DevExpress.Xpf.PivotGrid
Imports PivotGridDemo.PivotGrid
Imports DevExpress.Xpf.PivotGrid.Internal
Imports DevExpress.Xpf.Printing
Imports DevExpress.Xpf.Core
Namespace PivotGridDemo.Tests
Public Class PivotGridCheckAllDemosFixture
Inherits CheckAllDemosFixture
Protected Overrides Function CanRunModule(ByVal moduleType As Type) As Boolean
Return MyBase.CanRunModule(moduleType) AndAlso moduleType.Name <> "AsyncMode"
End Function
Protected Overrides Sub CreateCheckOptionsAction()
MyBase.CreateCheckOptionsAction()
AddCheck0()
CreateCheck1()
End Sub
Private Sub CreateCheck1()
AddSimpleAction(Function() AnonymousMethod1())
AddSimpleAction(Function() AnonymousMethod2())
AddSimpleAction(Function() AnonymousMethod3())
AddSimpleAction(Function() AnonymousMethod4())
AddSimpleAction(Function() AnonymousMethod5())
End Sub
Private Function AnonymousMethod1() As Boolean
If DemoBaseTesting.CurrentDemoModule.GetType() Is GetType(ChartGeneralOptions) Then
HidePrefilterAction()
End If
Return True
End Function
Private Function AnonymousMethod2() As Boolean
AssertHeadersFilterButtonVisibilityB183058()
Return True
End Function
Private Function AnonymousMethod3() As Boolean
AssertTextEditsWidthB185051()
Return True
End Function
Private Function AnonymousMethod4() As Boolean
TextBlockTextTrimmingB185312()
Return True
End Function
Private Function AnonymousMethod5() As Boolean
If DemoBaseTesting.CurrentDemoModule.GetType() Is GetType(PrintTemplates) Then
ExportAction()
End If
Return True
End Function
Private Sub AddCheck0()
AddSimpleAction(AddressOf ComboBoxItemsEditableB181973)
AddSimpleAction(Function() AnonymousMethod6())
AddSimpleAction(Function() AnonymousMethod7())
End Sub
Private Function AnonymousMethod6() As Boolean
If DemoBaseTesting.CurrentDemoModule.GetType() Is GetType(ChartGeneralOptions) Then
ShowPrefilterAction()
End If
Return True
End Function
Private Function AnonymousMethod7() As Boolean
If DemoBaseTesting.CurrentDemoModule.GetType() Is GetType(ChartGeneralOptions) Then
BestFitAction()
End If
Return True
End Function
Private Sub ExportAction()
Dim pivotGrid As PivotGridControl = FindElement(Of PivotGridControl)(DemoBaseTesting.CurrentDemoModule)
Dim cont As FloatingContainer = PrintHelper.ShowPrintPreview(pivotGrid, pivotGrid)
DispatcherHelper.DoEvents()
Dim start As DateTime = DateTime.Now + New TimeSpan(0, 0, 0, 1)
Do While DateTime.Now < start
DispatcherHelper.DoEvents()
Loop
cont.Close()
DispatcherHelper.DoEvents()
End Sub
Private Sub TextBlockTextTrimmingB185312()
Dim control As FrameworkElement = (CType(DemoBaseTesting.CurrentDemoModule, DemoModule)).DemoModuleControl.OptionsContent
If control Is Nothing Then
Return
End If
Dim editors As List(Of TextBlock) = FindAllElements(Of TextBlock)(control)
For Each edit As TextBlock In editors
Dim trimmed As Boolean = TextBlockService.CalcIsTextTrimmed(edit) AndAlso edit.DesiredSize.Width <> edit.ActualWidth
AssertLog.IsFalse(trimmed, "Text is trimmed: " & DemoBaseTesting.CurrentDemoModule.GetType().Name & " text=" & edit.Text & ", Name=" & edit.Name & ", actual " & edit.ActualWidth & "px, desired:" & edit.DesiredSize.Width & "px")
Next edit
End Sub
Private Sub AssertTextEditsWidthB185051()
Dim control As FrameworkElement = (CType(DemoBaseTesting.CurrentDemoModule, DemoModule)).DemoModuleControl.OptionsContent
If control Is Nothing Then
Return
End If
Dim editors As List(Of TextEdit) = FindAllElements(Of TextEdit)(control)
For Each edit As TextEdit In editors
If edit.EditMode = EditMode.InplaceInactive OrElse edit.IsPrintingMode = True Then
Continue For
End If
AssertLog.IsFalse(edit.Width = Double.PositiveInfinity, "TextEdit unlimited width: " & DemoBaseTesting.CurrentDemoModule.GetType().Name & " text=" & edit.Text & ", Name=" & edit.Name & " desired " & edit.ActualWidth & "px")
Next edit
End Sub
Private Sub AssertHeadersFilterButtonVisibilityB183058()
Dim pivotGrid As PivotGridControl = FindElement(Of PivotGridControl)(DemoBaseTesting.CurrentDemoModule)
Dim headers As List(Of FieldHeader) = FindAllElements(Of FieldHeader)(pivotGrid)
For Each header As FieldHeader In headers
Dim field As PivotGridField = header.Field
Dim fieldFiltered As Boolean = GetIsFiltered(field)
Dim filterVisibility As Visibility = If(fieldFiltered OrElse header.IsMouseOver, Visibility.Visible, Visibility.Hidden)
If (Not field.GetInternalField().ShowFilterButton) Then
filterVisibility = Visibility.Collapsed
End If
If filterVisibility <> Visibility.Collapsed Then
AssertLog.IsTrue(fieldFiltered = field.IsFiltered, "field.IsFiltered " & DemoBaseTesting.CurrentDemoModule.GetType().Name & " " & field.Name & " expected" & Constants.vbCr & "eal:" & fieldFiltered.ToString() & " \ " & field.IsFiltered.ToString())
End If
AssertLog.IsTrue(filterVisibility = header.IsFilterButtonVisible, "header.IsFiltered " & DemoBaseTesting.CurrentDemoModule.GetType().Name & " " & field.Name & " expected" & Constants.vbCr & "eal:" & filterVisibility.ToString() & " \ " & header.IsFilterButtonVisible.ToString())
Next header
End Sub
Private Function GetIsFiltered(ByVal field As PivotGridField) As Boolean
Dim internalField As PivotGridInternalField = field.GetInternalField()
Return ((internalField.Group Is Nothing OrElse internalField.GroupFilterMode.Equals(DevExpress.XtraPivotGrid.PivotGroupFilterMode.List)) AndAlso (Not internalField.FilterValues.IsEmpty)) OrElse field.Group IsNot Nothing AndAlso internalField.GroupFilterMode.Equals(DevExpress.XtraPivotGrid.PivotGroupFilterMode.Tree) AndAlso Not field.Group.FilterValues.IsEmpty
End Function
Private Sub ComboBoxItemsEditableB181973()
Dim control As FrameworkElement = (CType(DemoBaseTesting.CurrentDemoModule, DemoModule)).DemoModuleControl.OptionsContent
If control Is Nothing Then
Return
End If
Dim editors As List(Of ComboBoxEdit) = FindAllElements(Of ComboBoxEdit)(control)
For i As Integer = 0 To editors.Count - 1
AssertLog.IsFalse(editors(i).IsTextEditable, "ComboBoxEdit items editable: " & DemoBaseTesting.CurrentDemoModule.GetType().Name & " " & editors(i).Name)
AssertLog.IsFalse(editors(i).SelectedIndex < 0, "ComboBoxEdit item is not selected: " & DemoBaseTesting.CurrentDemoModule.GetType().Name & " " & editors(i).Name)
Next i
End Sub
Private Function ChartGeneralOptionsCondition() As Boolean
Return DemoBaseTesting.CurrentDemoModule.GetType() Is GetType(ChartGeneralOptions)
End Function
Private Sub BestFitAction()
Dim pivotGrid As PivotGridControl = FindElement(Of PivotGridControl)(DemoBaseTesting.CurrentDemoModule)
pivotGrid.BestFit()
End Sub
Private Sub HidePrefilterAction()
Dim pivotGrid As PivotGridControl = FindElement(Of PivotGridControl)(DemoBaseTesting.CurrentDemoModule)
If pivotGrid.PrefilterContainer IsNot Nothing Then
pivotGrid.PrefilterContainer.Close()
End If
UpdateLayoutAndDoEvents()
End Sub
Private Sub ShowPrefilterAction()
Dim pivotGrid As PivotGridControl = FindElement(Of PivotGridControl)(DemoBaseTesting.CurrentDemoModule)
pivotGrid.ShowPrefilter()
UpdateLayoutAndDoEvents()
End Sub
Private Function FindAllElements(Of T As FrameworkElement)(ByVal element As FrameworkElement) As List(Of T)
Dim items As New List(Of T)()
LayoutHelper.ForEachElement(element, Function(d) addItem(Of T)(items, d))
Return items
End Function
Private Function addItem(Of T As FrameworkElement)(ByVal items As List(Of T), ByVal d As FrameworkElement) As Boolean
If d.GetType() Is GetType(T) Then
items.Add(CType(d, T))
End If
Return True
End Function
Private Function FindElement(Of T As FrameworkElement)(ByVal element As FrameworkElement) As T
Return CType(LayoutHelper.FindElement(element, Function(d) d.GetType() Is GetType(T)), T)
End Function
End Class
End Namespace