Option Strict On
Option Explicit On

Imports System
Imports System.Collections.Generic
Imports Nexamas.UI.Components

Namespace Nexamas.UI.Quality

    ''' <summary>
    ''' Friend-only proof for Targeted Closure Phase 3. It closes MasterDetailView's
    ''' bounded master-item virtualization evidence and SplitView's keyboard splitter
    ''' contract without exposing public adapters, creating wrappers, or promoting
    ''' either control to ProductionReady.
    ''' </summary>
    Friend NotInheritable Class MASMasterDetailSplitViewClosureGate

        Private Sub New()
        End Sub

        Friend Shared Function Passes() As Boolean
            Return EvaluateFindings().Count = 0
        End Function

        Friend Shared Function EvaluateFindings() As IReadOnlyList(Of MASCommercialReadinessFinding)
            Dim findings As New List(Of MASCommercialReadinessFinding)()
            ValidateMasterDetailItemVirtualization(findings)
            ValidateSplitViewKeyboardSplitter(findings)
            Return findings
        End Function

        Private Shared Sub ValidateMasterDetailItemVirtualization(findings As List(Of MASCommercialReadinessFinding))
            Try
                Dim control As MASMasterDetailView = MASMasterDetailView.Create("Virtualization proof")
                If Not control.HasBoundedMasterItemWindowForTests() Then
                    findings.Add(New MASCommercialReadinessFinding("masterdetail", "MasterDetail.ItemVirtualization", MASCommercialReadinessFindingSeverity.Error, "MasterDetailView did not preserve a bounded realized item window over the large source projection."))
                End If
            Catch ex As Exception
                Nexamas.UI.Diagnostics.MASExceptionSilencer.SwallowDiagnosticOnly(ex, "MASMasterDetailSplitViewClosureGate.MasterDetail")
                findings.Add(New MASCommercialReadinessFinding("masterdetail", "MasterDetail.ItemVirtualization", MASCommercialReadinessFindingSeverity.Error, "MasterDetailView item virtualization proof threw during validation."))
            End Try
        End Sub

        Private Shared Sub ValidateSplitViewKeyboardSplitter(findings As List(Of MASCommercialReadinessFinding))
            Try
                Dim control As MASSplitView = MASSplitView.Create("Keyboard splitter proof")
                If Not control.HasKeyboardSplitterContractForTests() Then
                    findings.Add(New MASCommercialReadinessFinding("splitview", "SplitView.KeyboardSplitter", MASCommercialReadinessFindingSeverity.Error, "SplitView keyboard splitter contract did not preserve bounded ratios, focused divider state, and collapsed-state behavior."))
                End If
            Catch ex As Exception
                Nexamas.UI.Diagnostics.MASExceptionSilencer.SwallowDiagnosticOnly(ex, "MASMasterDetailSplitViewClosureGate.SplitView")
                findings.Add(New MASCommercialReadinessFinding("splitview", "SplitView.KeyboardSplitter", MASCommercialReadinessFindingSeverity.Error, "SplitView keyboard splitter proof threw during validation."))
            End Try
        End Sub

    End Class

End Namespace
