using uCalcSoftware;

var uc = new uCalc();
var FruitsXML =
"""

<Fruits>
  <Fruit CommonName='Apple' />
  <Fruit CommonName='Banana' />
  <Fruit CommonName='Orange' />
</Fruits>

""";

var t = new uCalc.Transformer();
t.Text = FruitsXML;
var fruitsTagRule = t.Pattern("<Fruits>");
var fruitRule = t.Pattern("CommonName={@string:name}");

Console.WriteLine("--- Using Minimum (Rule-Level Invalidation) ---");
fruitRule.Minimum = 4; // Rule fails if fewer than 4 fruits are found.
t.Find();
Console.WriteLine($"Match count when fruit rule fails: {t.Matches.Count()}");
Console.WriteLine("Matches found:");
foreach(var m in t.Matches) {
   Console.WriteLine($"  {m.Text}");
};

Console.WriteLine("");
Console.WriteLine("--- Using GlobalMinimum (Transformer-Level Invalidation) ---");
fruitRule.Minimum = 0; // Reset local minimum
fruitRule.GlobalMinimum = 4; // Transformer fails if fewer than 4 fruits are found.
t.Find();
Console.WriteLine($"Match count when global rule fails: {t.Matches.Count()}");
Console.WriteLine("Matches found:");
foreach(var m in t.Matches) {
   Console.WriteLine($"  {m.Text}");
};