Option Strict On
Option Explicit On

Imports System.Collections.Generic

Namespace Nexamas.UI.Virtualization

    ''' <summary>
    ''' Final internal gate for MASVirtualizedItemsSystem commercial proof. The gate deliberately composes existing official
    ''' virtualization proof sources instead of introducing a new execution path or a control-level public API.
    ''' </summary>
    Friend NotInheritable Class MASVirtualizationCommercialProofGate

        Private Sub New()
        End Sub

        Friend Shared Function EvaluateDefault() As MASVirtualizationCommercialProofReport
            Dim results As IReadOnlyList(Of MASVirtualizationBenchmarkResult) = MASVirtualizationBenchmarkSuite.RunDefault()
            Dim summary As MASVirtualizationBenchmarkSummary = MASVirtualizationBenchmarkSuite.Summarize(results)
            Dim integration As MASVirtualizationIntegrationReport = MASVirtualizationIntegrationGate.EvaluateCurrentConsumers()
            Dim readiness As MASVirtualizationReadinessReport = MASVirtualizationProfessionalReadinessGate.Evaluate(results, MASVirtualizationConsumerCatalog.GetCurrentConsumers())
            Dim behavior As MASVirtualizationConsumerBehaviorReport = MASVirtualizationConsumerBehaviorGate.EvaluateCurrentConsumers()
            Dim listViewBoundedMeasurement As MASListViewBoundedMeasurementReport = MASListViewBoundedMeasurementGate.EvaluateDefault()
            Dim tileBoxSinglePlanning As MASTileBoxSinglePlanningReport = MASTileBoxSinglePlanningGate.EvaluateDefault()
            Dim lifecycle As MASVirtualizationConsumerLifecycleReport = MASVirtualizationConsumerLifecycleGate.EvaluateCurrentConsumers()
            Dim largeDataWindowing As MASLargeDataWindowingReport = MASLargeDataWindowingGate.EvaluateCurrentSurfaces(behavior)
            Dim largeDataWindowingCatalogCoverage As MASLargeDataWindowingCatalogCoverageReport = MASLargeDataWindowingCatalogCoverageGate.EvaluateCurrentCatalog()
            Dim consumerDiagnostics As MASVirtualizationConsumerDiagnosticsReport = MASVirtualizationConsumerDiagnosticsGate.EvaluateCriticalConsumers()
            Dim projectionScope As MASVirtualizationProjectionScopeReport = MASVirtualizationProjectionScopeGate.EvaluateCurrentScopes()
            Dim projectionScale As MASVirtualizationProjectionScaleReport = MASVirtualizationProjectionScaleGate.EvaluateDefault()
            Dim accessibleRange As MASVirtualizationAccessibleRangeReport = MASVirtualizationAccessibleRangeGate.EvaluateCurrentConsumers(behavior)
            Dim dataGridRenderInvalidation As MASDataGridRenderInvalidationCoalescingReport = MASDataGridRenderInvalidationCoalescingGate.EvaluateDefault()
            Return Evaluate(summary, integration, readiness, behavior, listViewBoundedMeasurement, tileBoxSinglePlanning, lifecycle, largeDataWindowing, largeDataWindowingCatalogCoverage, consumerDiagnostics, projectionScope, projectionScale, accessibleRange, dataGridRenderInvalidation)
        End Function

        Friend Shared Function Evaluate(benchmarkSummary As MASVirtualizationBenchmarkSummary,
                                        integrationReport As MASVirtualizationIntegrationReport,
                                        professionalReadinessReport As MASVirtualizationReadinessReport,
                                        Optional consumerBehaviorReport As MASVirtualizationConsumerBehaviorReport = Nothing,
                                        Optional listViewBoundedMeasurementReport As MASListViewBoundedMeasurementReport = Nothing,
                                        Optional tileBoxSinglePlanningReport As MASTileBoxSinglePlanningReport = Nothing,
                                        Optional consumerLifecycleReport As MASVirtualizationConsumerLifecycleReport = Nothing,
                                        Optional largeDataWindowingReport As MASLargeDataWindowingReport = Nothing,
                                        Optional largeDataWindowingCatalogCoverageReport As MASLargeDataWindowingCatalogCoverageReport = Nothing,
                                        Optional consumerDiagnosticsReport As MASVirtualizationConsumerDiagnosticsReport = Nothing,
                                        Optional projectionScopeReport As MASVirtualizationProjectionScopeReport = Nothing,
                                        Optional projectionScaleReport As MASVirtualizationProjectionScaleReport = Nothing,
                                        Optional accessibleRangeReport As MASVirtualizationAccessibleRangeReport = Nothing,
                                        Optional dataGridRenderInvalidationCoalescingReport As MASDataGridRenderInvalidationCoalescingReport = Nothing) As MASVirtualizationCommercialProofReport
            Return New MASVirtualizationCommercialProofReport(benchmarkSummary, integrationReport, professionalReadinessReport, consumerBehaviorReport, listViewBoundedMeasurementReport, tileBoxSinglePlanningReport, consumerLifecycleReport, largeDataWindowingReport, largeDataWindowingCatalogCoverageReport, consumerDiagnosticsReport, projectionScopeReport, projectionScaleReport, accessibleRangeReport, dataGridRenderInvalidationCoalescingReport)
        End Function

    End Class

End Namespace
