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 =
"""
""";
var t = new uCalc.Transformer();
var fruitsTagRule = t.FromTo("", "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
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);
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
auto FruitsXML =
R"(
)";
uCalc::Transformer t;
auto fruitsTagRule = t.FromTo("", "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
#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; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim FruitsXML =
"
"
Dim t As New uCalc.Transformer()
Dim fruitsTagRule = t.FromTo("", "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
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