Internal Test: Compares the behavior of `Maximum` and `GlobalMaximum` at different thresholds to validate their distinct scopes of invalidation.

ID: 881

				
					using uCalcSoftware;

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

<Fruits>
  <Fruit CommonName='Apple' ScientificName='Malus domestica' />
  <Fruit CommonName='Banana' ScientificName='Musa acuminata' />
  <Fruit CommonName='Orange' ScientificName='Citrus × sinensis' />
  <Fruit CommonName='Grapes' ScientificName='Vitis vinifera' />
</Fruits>

""";

var t = new uCalc.Transformer();
var fruitsTagRule = t.FromTo("<Fruits>", "List of fruits");
var fruitRule = t.FromTo("CommonName={@string:name}", "- {name}");

Console.WriteLine("--- Using Maximum (Rule-Level) ---");
fruitRule.Maximum = 3; // Rule fails if more than 3 fruits are found.
t.Filter(FruitsXML);
Console.WriteLine($"Match count when fruit rule fails: {t.Matches.Count()}"); // The 'fruitsTagRule' still matches.
Console.WriteLine(t.Matches.Text);

Console.WriteLine("");
Console.WriteLine("--- Using GlobalMaximum (Transformer-Level) ---");
fruitRule.Maximum = -1; // Reset local maximum
fruitRule.GlobalMaximum = 3; // Transformer fails if more than 3 fruits are found.
t.Filter(FruitsXML);
Console.WriteLine($"Match count when global rule fails: {t.Matches.Count()}"); // All matches are invalidated.
Console.WriteLine(t.Matches.Text);
				
			
--- Using Maximum (Rule-Level) ---
Match count when fruit rule fails: 1
List of fruits

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

using namespace std;
using namespace uCalcSoftware;

int main() {
   uCalc uc;
   auto FruitsXML =
   R"(
<Fruits>
  <Fruit CommonName='Apple' ScientificName='Malus domestica' />
  <Fruit CommonName='Banana' ScientificName='Musa acuminata' />
  <Fruit CommonName='Orange' ScientificName='Citrus × sinensis' />
  <Fruit CommonName='Grapes' ScientificName='Vitis vinifera' />
</Fruits>
)";

   uCalc::Transformer t;
   auto fruitsTagRule = t.FromTo("<Fruits>", "List of fruits");
   auto fruitRule = t.FromTo("CommonName={@string:name}", "- {name}");

   cout << "--- Using Maximum (Rule-Level) ---" << endl;
   fruitRule.Maximum(3); // Rule fails if more than 3 fruits are found.
   t.Filter(FruitsXML);
   cout << "Match count when fruit rule fails: " << t.Matches().Count() << endl; // The 'fruitsTagRule' still matches.
   cout << t.Matches().Text() << endl;

   cout << "" << endl;
   cout << "--- Using GlobalMaximum (Transformer-Level) ---" << endl;
   fruitRule.Maximum(-1); // Reset local maximum
   fruitRule.GlobalMaximum(3); // Transformer fails if more than 3 fruits are found.
   t.Filter(FruitsXML);
   cout << "Match count when global rule fails: " << t.Matches().Count() << endl; // All matches are invalidated.
   cout << t.Matches().Text() << endl;
}
				
			
--- Using Maximum (Rule-Level) ---
Match count when fruit rule fails: 1
List of fruits

--- Using GlobalMaximum (Transformer-Level) ---
Match count when global rule fails: 0
				
					Imports System
Imports uCalcSoftware
Public Module Program
   Public Sub Main()
      Dim uc As New uCalc()
      Dim FruitsXML =
      "
<Fruits>
  <Fruit CommonName='Apple' ScientificName='Malus domestica' />
  <Fruit CommonName='Banana' ScientificName='Musa acuminata' />
  <Fruit CommonName='Orange' ScientificName='Citrus × sinensis' />
  <Fruit CommonName='Grapes' ScientificName='Vitis vinifera' />
</Fruits>
"
      
      Dim t As New uCalc.Transformer()
      Dim fruitsTagRule = t.FromTo("<Fruits>", "List of fruits")
      Dim fruitRule = t.FromTo("CommonName={@string:name}", "- {name}")
      
      Console.WriteLine("--- Using Maximum (Rule-Level) ---")
      fruitRule.Maximum = 3 '// Rule fails if more than 3 fruits are found.
      t.Filter(FruitsXML)
      Console.WriteLine($"Match count when fruit rule fails: {t.Matches.Count()}") '// The 'fruitsTagRule' still matches.
      Console.WriteLine(t.Matches.Text)
      
      Console.WriteLine("")
      Console.WriteLine("--- Using GlobalMaximum (Transformer-Level) ---")
      fruitRule.Maximum = -1 '// Reset local maximum
      fruitRule.GlobalMaximum = 3 '// Transformer fails if more than 3 fruits are found.
      t.Filter(FruitsXML)
      Console.WriteLine($"Match count when global rule fails: {t.Matches.Count()}") '// All matches are invalidated.
      Console.WriteLine(t.Matches.Text)
   End Sub
End Module
				
			
--- Using Maximum (Rule-Level) ---
Match count when fruit rule fails: 1
List of fruits

--- Using GlobalMaximum (Transformer-Level) ---
Match count when global rule fails: 0