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
				
					#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;
}
				
			
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
				
			
Precedence Check:
Caret (^) > Star (*): True
Star (*) > Plus (+): True
Index of un-added token: -1