Imports System.Collections.Generic
Imports System.Linq

Namespace Nexamas.UI.Verification

    ''' <summary>
    ''' Groups related render verification scenarios under one stable target, such as Buttons, Surfaces, or Lists.
    ''' Targets are the unit consumed by gates and runners; they do not know how rendering is performed.
    ''' </summary>
    Friend NotInheritable Class MASRenderVerificationTarget

        Private ReadOnly _scenarios As List(Of MASRenderVerificationScenario)

        Friend Sub New(id As String, displayName As String, scenarios As IEnumerable(Of MASRenderVerificationScenario))
            Me.Id = If(id, String.Empty).Trim()
            Me.DisplayName = If(displayName, String.Empty).Trim()
            _scenarios = New List(Of MASRenderVerificationScenario)()

            If scenarios IsNot Nothing Then
                _scenarios.AddRange(scenarios.Where(Function(scenario) scenario IsNot Nothing))
            End If
        End Sub

        Friend ReadOnly Property Id As String
        Friend ReadOnly Property DisplayName As String

        Friend ReadOnly Property Scenarios As IReadOnlyList(Of MASRenderVerificationScenario)
            Get
                Return _scenarios
            End Get
        End Property

        Friend ReadOnly Property ScenarioCount As Integer
            Get
                Return _scenarios.Count
            End Get
        End Property

    End Class

End Namespace
