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 2. It closes DashboardGrid's
    ''' internal provider-refresh evidence path and MasterDetailView's empty/error
    ''' visual-state foundation without exposing public adapters or promoting either
    ''' control to ProductionReady.
    ''' </summary>
    Friend NotInheritable Class MASDashboardProviderMasterDetailStateClosureGate

        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)()
            ValidateDashboardProviderRefresh(findings)
            ValidateMasterDetailEmptyError(findings)
            Return findings
        End Function

        Private Shared Sub ValidateDashboardProviderRefresh(findings As List(Of MASCommercialReadinessFinding))
            Try
                Dim control As MASDashboardGrid = MASDashboardGrid.Create("Provider proof")
                If Not control.HasWidgetProviderRefreshContractForTests() Then
                    findings.Add(New MASCommercialReadinessFinding("dashboardgrid", "DashboardGrid.ProviderRefresh", MASCommercialReadinessFindingSeverity.Error, "DashboardGrid provider-refresh contract did not preserve selection, revision, and error/recovered states."))
                End If
            Catch ex As Exception
                Nexamas.UI.Diagnostics.MASExceptionSilencer.SwallowDiagnosticOnly(ex, "MASDashboardProviderMasterDetailStateClosureGate.Dashboard")
                findings.Add(New MASCommercialReadinessFinding("dashboardgrid", "DashboardGrid.ProviderRefresh", MASCommercialReadinessFindingSeverity.Error, "DashboardGrid provider-refresh contract threw during validation."))
            End Try
        End Sub

        Private Shared Sub ValidateMasterDetailEmptyError(findings As List(Of MASCommercialReadinessFinding))
            Try
                Dim control As MASMasterDetailView = MASMasterDetailView.Create("State proof")
                If Not control.HasEmptyErrorStateFoundationForTests() Then
                    findings.Add(New MASCommercialReadinessFinding("masterdetail", "MasterDetail.EmptyErrorStates", MASCommercialReadinessFindingSeverity.Error, "MasterDetailView empty/error state foundation did not expose valid empty, error, and recovered normal snapshots."))
                End If
            Catch ex As Exception
                Nexamas.UI.Diagnostics.MASExceptionSilencer.SwallowDiagnosticOnly(ex, "MASDashboardProviderMasterDetailStateClosureGate.MasterDetail")
                findings.Add(New MASCommercialReadinessFinding("masterdetail", "MasterDetail.EmptyErrorStates", MASCommercialReadinessFindingSeverity.Error, "MasterDetailView empty/error state foundation threw during validation."))
            End Try
        End Sub

    End Class

End Namespace
