Imports System
Imports uCalcSoftware
Public Module Program
   Public Sub Main()
      Dim uc As New uCalc()
      Using validator As New uCalc.Transformer()
         
         '// Rule 1: Must contain exactly one 'Host' setting.
         Dim hostRule = validator.Pattern("Host: {@Alpha}").SetMinimum(1).SetMaximum(1)
         
         '// Rule 2: Must contain at least one 'Port' setting.
         Dim portRule = validator.Pattern("Port: {@Number}").SetMinimum(1)
         
         Dim configFile_OK = "
Host: server1
Port: 80
Port: 443
"
         Dim configFile_FAIL = "Port: 80" '// Missing Host
         
         Console.WriteLine("--- Testing Valid Config ---")
         validator.SetText(configFile_OK).Find()
         If hostRule.Matches.Count() > 0 And portRule.Matches.Count() > 0 Then
            Console.WriteLine("Config file is valid.")
         Else
            Console.WriteLine("Config file is invalid.")
         End If
         Console.WriteLine()
         Console.WriteLine("--- Testing Invalid Config ---")
         validator.SetText(configFile_FAIL).Find()
         '// The Minimum(1) on hostRule causes it to have 0 matches if none are found.
         If hostRule.Matches.Count() > 0 And portRule.Matches.Count() > 0 Then
            Console.WriteLine("Config file is valid.")
         Else
            Console.WriteLine("Config file is invalid.")
            If hostRule.Matches.Count() = 0 Then
               Console.WriteLine($"- Reason: Host rule failed (found {hostRule.Matches.Count()}, expected 1).")
            End If
         End If
      End Using
   End Sub
End Module