using uCalcSoftware; var uc = new uCalc(); // Internal Test: Verifies precedence and tag retrieval via NextOverload var t = new uCalc.Transformer(); t.Text = "Testing (a b c) Testing x y z! Testing 1 2 3."; // Rules defined last have higher precedence for the same anchor ("Testing") var p1 = t.Pattern("Testing {etc}.").SetTag(111); var p2 = t.Pattern("Testing {etc}!").SetTag(222); var p3 = t.Pattern("Testing ({etc})").SetTag(333); // Get the highest precedence rule via Pattern's return value var highestPriorityRule = p3; Console.WriteLine($"Highest priority rule tag: {highestPriorityRule.Tag}"); // Walk the overload chain var midPriorityRule = highestPriorityRule.NextOverload(); Console.WriteLine($"Mid priority rule tag: {midPriorityRule.Tag}"); var lowPriorityRule = midPriorityRule.NextOverload(); Console.WriteLine($"Low priority rule tag: {lowPriorityRule.Tag}"); // The end of the chain should have a tag of 0 (default) var endOfChain = lowPriorityRule.NextOverload(); Console.WriteLine($"End of chain tag: {endOfChain.Tag}");