Internal Test: Clearly contrasts the rule-level invalidation of `Minimum` with the transformer-level invalidation of `GlobalMinimum`.

ID: 950

				
					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}");
};
				
			
--- Using Minimum (Rule-Level Invalidation) ---
Match count when fruit rule fails: 1
Matches found:
  <Fruits>

--- Using GlobalMinimum (Transformer-Level Invalidation) ---
Match count when global rule fails: 0
Matches found:
				
					#include <iostream>
#include "uCalc.h"

using namespace std;
using namespace uCalcSoftware;

int main() {
   uCalc uc;
   auto FruitsXML =
   R"(
<Fruits>
  <Fruit CommonName='Apple' />
  <Fruit CommonName='Banana' />
  <Fruit CommonName='Orange' />
</Fruits>
)";

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

   cout << "--- Using Minimum (Rule-Level Invalidation) ---" << endl;
   fruitRule.Minimum(4); // Rule fails if fewer than 4 fruits are found.
   t.Find();
   cout << "Match count when fruit rule fails: " << t.Matches().Count() << endl;
   cout << "Matches found:" << endl;
   for(auto m : t.Matches()) {
      cout << "  " << m.Text() << endl;
   };

   cout << "" << endl;
   cout << "--- Using GlobalMinimum (Transformer-Level Invalidation) ---" << endl;
   fruitRule.Minimum(0); // Reset local minimum
   fruitRule.GlobalMinimum(4); // Transformer fails if fewer than 4 fruits are found.
   t.Find();
   cout << "Match count when global rule fails: " << t.Matches().Count() << endl;
   cout << "Matches found:" << endl;
   for(auto m : t.Matches()) {
      cout << "  " << m.Text() << endl;
   };
}
				
			
--- Using Minimum (Rule-Level Invalidation) ---
Match count when fruit rule fails: 1
Matches found:
  <Fruits>

--- Using GlobalMinimum (Transformer-Level Invalidation) ---
Match count when global rule fails: 0
Matches found:
				
					Imports System
Imports uCalcSoftware
Public Module Program
   Public Sub Main()
      Dim uc As New uCalc()
      Dim FruitsXML =
      "
<Fruits>
  <Fruit CommonName='Apple' />
  <Fruit CommonName='Banana' />
  <Fruit CommonName='Orange' />
</Fruits>
"
      
      Dim t As New uCalc.Transformer()
      t.Text = FruitsXML
      Dim fruitsTagRule = t.Pattern("<Fruits>")
      Dim 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:")
      For Each m In t.Matches
         Console.WriteLine($"  {m.Text}")
      Next
      
      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:")
      For Each m In t.Matches
         Console.WriteLine($"  {m.Text}")
      Next
   End Sub
End Module
				
			
--- Using Minimum (Rule-Level Invalidation) ---
Match count when fruit rule fails: 1
Matches found:
  <Fruits>

--- Using GlobalMinimum (Transformer-Level Invalidation) ---
Match count when global rule fails: 0
Matches found: