Internal Test: Verifies the LIFO precedence order and the return value for a token not present in the collection.
ID: 1037
See: IndexOf
using uCalcSoftware;
var uc = new uCalc();
var t = new uCalc.Transformer();
var tokens = t.Tokens;
tokens.Clear();
tokens.Add("."); // Fallback
var tokenPlus = tokens.Add("[+]");
var tokenStar = tokens.Add("[*]");
var tokenCaret = tokens.Add("^");
// LIFO order means precedence is: '^' > '*' > '+'
Console.WriteLine("Precedence Check:");
Console.WriteLine($"Caret (^) > Star (*): {tokens.IndexOf(tokenCaret) > tokens.IndexOf(tokenStar)}");
Console.WriteLine($"Star (*) > Plus (+): {tokens.IndexOf(tokenStar) > tokens.IndexOf(tokenPlus)}");
// Test for a token not in this collection
var t2 = new uCalc.Transformer();
var unaddedToken = t2.Tokens.Add("unrelated");
Console.WriteLine($"Index of un-added token: {tokens.IndexOf(unaddedToken)}");
Precedence Check:
Caret (^) > Star (*): True
Star (*) > Plus (+): True
Index of un-added token: -1 using uCalcSoftware; var uc = new uCalc(); var t = new uCalc.Transformer(); var tokens = t.Tokens; tokens.Clear(); tokens.Add("."); // Fallback var tokenPlus = tokens.Add("[+]"); var tokenStar = tokens.Add("[*]"); var tokenCaret = tokens.Add("^"); // LIFO order means precedence is: '^' > '*' > '+' Console.WriteLine("Precedence Check:"); Console.WriteLine($"Caret (^) > Star (*): {tokens.IndexOf(tokenCaret) > tokens.IndexOf(tokenStar)}"); Console.WriteLine($"Star (*) > Plus (+): {tokens.IndexOf(tokenStar) > tokens.IndexOf(tokenPlus)}"); // Test for a token not in this collection var t2 = new uCalc.Transformer(); var unaddedToken = t2.Tokens.Add("unrelated"); Console.WriteLine($"Index of un-added token: {tokens.IndexOf(unaddedToken)}");
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
#define tf(IsTrue) ((IsTrue) ? "True" : "False")
int main() {
uCalc uc;
uCalc::Transformer t;
auto tokens = t.Tokens();
tokens.Clear();
tokens.Add("."); // Fallback
auto tokenPlus = tokens.Add("[+]");
auto tokenStar = tokens.Add("[*]");
auto tokenCaret = tokens.Add("^");
// LIFO order means precedence is: '^' > '*' > '+'
cout << "Precedence Check:" << endl;
cout << "Caret (^) > Star (*): " << tf(tokens.IndexOf(tokenCaret) > tokens.IndexOf(tokenStar)) << endl;
cout << "Star (*) > Plus (+): " << tf(tokens.IndexOf(tokenStar) > tokens.IndexOf(tokenPlus)) << endl;
// Test for a token not in this collection
uCalc::Transformer t2;
auto unaddedToken = t2.Tokens().Add("unrelated");
cout << "Index of un-added token: " << tokens.IndexOf(unaddedToken) << endl;
}
Precedence Check:
Caret (^) > Star (*): True
Star (*) > Plus (+): True
Index of un-added token: -1 #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; #define tf(IsTrue) ((IsTrue) ? "True" : "False") int main() { uCalc uc; uCalc::Transformer t; auto tokens = t.Tokens(); tokens.Clear(); tokens.Add("."); // Fallback auto tokenPlus = tokens.Add("[+]"); auto tokenStar = tokens.Add("[*]"); auto tokenCaret = tokens.Add("^"); // LIFO order means precedence is: '^' > '*' > '+' cout << "Precedence Check:" << endl; cout << "Caret (^) > Star (*): " << tf(tokens.IndexOf(tokenCaret) > tokens.IndexOf(tokenStar)) << endl; cout << "Star (*) > Plus (+): " << tf(tokens.IndexOf(tokenStar) > tokens.IndexOf(tokenPlus)) << endl; // Test for a token not in this collection uCalc::Transformer t2; auto unaddedToken = t2.Tokens().Add("unrelated"); cout << "Index of un-added token: " << tokens.IndexOf(unaddedToken) << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Dim t As New uCalc.Transformer()
Dim tokens = t.Tokens
tokens.Clear()
tokens.Add(".") '// Fallback
Dim tokenPlus = tokens.Add("[+]")
Dim tokenStar = tokens.Add("[*]")
Dim tokenCaret = tokens.Add("^")
'// LIFO order means precedence is: '^' > '*' > '+'
Console.WriteLine("Precedence Check:")
Console.WriteLine($"Caret (^) > Star (*): {tokens.IndexOf(tokenCaret) > tokens.IndexOf(tokenStar)}")
Console.WriteLine($"Star (*) > Plus (+): {tokens.IndexOf(tokenStar) > tokens.IndexOf(tokenPlus)}")
'// Test for a token not in this collection
Dim t2 As New uCalc.Transformer()
Dim unaddedToken = t2.Tokens.Add("unrelated")
Console.WriteLine($"Index of un-added token: {tokens.IndexOf(unaddedToken)}")
End Sub
End Module
Precedence Check:
Caret (^) > Star (*): True
Star (*) > Plus (+): True
Index of un-added token: -1 Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Dim t As New uCalc.Transformer() Dim tokens = t.Tokens tokens.Clear() tokens.Add(".") '// Fallback Dim tokenPlus = tokens.Add("[+]") Dim tokenStar = tokens.Add("[*]") Dim tokenCaret = tokens.Add("^") '// LIFO order means precedence is: '^' > '*' > '+' Console.WriteLine("Precedence Check:") Console.WriteLine($"Caret (^) > Star (*): {tokens.IndexOf(tokenCaret) > tokens.IndexOf(tokenStar)}") Console.WriteLine($"Star (*) > Plus (+): {tokens.IndexOf(tokenStar) > tokens.IndexOf(tokenPlus)}") '// Test for a token not in this collection Dim t2 As New uCalc.Transformer() Dim unaddedToken = t2.Tokens.Add("unrelated") Console.WriteLine($"Index of un-added token: {tokens.IndexOf(unaddedToken)}") End Sub End Module