Internal Test: Clearly contrasts the rule-level invalidation of `Minimum` with the transformer-level invalidation of `GlobalMinimum`.
ID: 950
See: Minimum = [int]
using uCalcSoftware;
var uc = new uCalc();
var FruitsXML =
"""
""";
var t = new uCalc.Transformer();
t.Text = FruitsXML;
var fruitsTagRule = t.Pattern("");
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: 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}"); };
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
auto FruitsXML =
R"(
)";
uCalc::Transformer t;
t.Text(FruitsXML);
auto fruitsTagRule = t.Pattern("");
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: #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; }; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim FruitsXML =
"
"
Dim t As New uCalc.Transformer()
t.Text = FruitsXML
Dim fruitsTagRule = t.Pattern("")
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: 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