using uCalcSoftware; var uc = new uCalc(); using (var validator = new uCalc.Transformer()) { // Rule 1: Must contain exactly one 'Host' setting. var hostRule = validator.Pattern("Host: {@Alpha}").SetMinimum(1).SetMaximum(1); // Rule 2: Must contain at least one 'Port' setting. var portRule = validator.Pattern("Port: {@Number}").SetMinimum(1); var configFile_OK = """ Host: server1 Port: 80 Port: 443 """; var configFile_FAIL = "Port: 80"; // Missing Host Console.WriteLine("--- Testing Valid Config ---"); validator.SetText(configFile_OK).Find(); if (hostRule.Matches.Count() > 0 && portRule.Matches.Count() > 0) { Console.WriteLine("Config file is valid."); } else { Console.WriteLine("Config file is invalid."); } 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 && portRule.Matches.Count() > 0) { Console.WriteLine("Config file is valid."); } else { Console.WriteLine("Config file is invalid."); if (hostRule.Matches.Count() == 0) { Console.WriteLine($"- Reason: Host rule failed (found {hostRule.Matches.Count()}, expected 1)."); } } }