Internal Test: Verify the stack-like behavior of the default instance list.
ID: 368
See: IsDefault = [bool]
using uCalcSoftware;
var uc = new uCalc();
// Define a variable in the original default to distinguish it.
// Note: This variable won't exist in the implicit 'uc' instance.
uCalc.DefaultInstance.DefineVariable("id='Original'");
Console.WriteLine($"Initial default: {uCalc.DefaultInstance.EvalStr("id")}");
var ucA = new uCalc();
ucA.DefineVariable("id='A'");
ucA.IsDefault = true; // Default stack: [Original, A]
Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}");
var ucB = new uCalc();
ucB.DefineVariable("id='B'");
ucB.IsDefault = true; // Default stack: [Original, A, B]
Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}");
var ucC = new uCalc();
ucC.DefineVariable("id='C'");
ucC.IsDefault = true; // Default stack: [Original, A, B, C]
Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}");
Console.WriteLine("--- Unsetting instances ---");
// Unset B. The default should remain C.
ucB.IsDefault = false;
Console.WriteLine($"After unsetting B, current default: {uCalc.DefaultInstance.EvalStr("id")}");
// Unset C. The default should revert to A.
ucC.IsDefault = false;
Console.WriteLine($"After unsetting C, current default: {uCalc.DefaultInstance.EvalStr("id")}");
// Unset A. Reverts to the original default.
ucA.IsDefault = false;
Console.WriteLine($"After unsetting A, current default: {uCalc.DefaultInstance.EvalStr("id")}");
Initial default: Original
Current default: A
Current default: B
Current default: C
--- Unsetting instances ---
After unsetting B, current default: C
After unsetting C, current default: A
After unsetting A, current default: Original using uCalcSoftware; var uc = new uCalc(); // Define a variable in the original default to distinguish it. // Note: This variable won't exist in the implicit 'uc' instance. uCalc.DefaultInstance.DefineVariable("id='Original'"); Console.WriteLine($"Initial default: {uCalc.DefaultInstance.EvalStr("id")}"); var ucA = new uCalc(); ucA.DefineVariable("id='A'"); ucA.IsDefault = true; // Default stack: [Original, A] Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}"); var ucB = new uCalc(); ucB.DefineVariable("id='B'"); ucB.IsDefault = true; // Default stack: [Original, A, B] Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}"); var ucC = new uCalc(); ucC.DefineVariable("id='C'"); ucC.IsDefault = true; // Default stack: [Original, A, B, C] Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}"); Console.WriteLine("--- Unsetting instances ---"); // Unset B. The default should remain C. ucB.IsDefault = false; Console.WriteLine($"After unsetting B, current default: {uCalc.DefaultInstance.EvalStr("id")}"); // Unset C. The default should revert to A. ucC.IsDefault = false; Console.WriteLine($"After unsetting C, current default: {uCalc.DefaultInstance.EvalStr("id")}"); // Unset A. Reverts to the original default. ucA.IsDefault = false; Console.WriteLine($"After unsetting A, current default: {uCalc.DefaultInstance.EvalStr("id")}");
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
// Define a variable in the original default to distinguish it.
// Note: This variable won't exist in the implicit 'uc' instance.
uCalc::DefaultInstance().DefineVariable("id='Original'");
cout << "Initial default: " << uCalc::DefaultInstance().EvalStr("id") << endl;
uCalc ucA;
ucA.DefineVariable("id='A'");
ucA.IsDefault(true); // Default stack: [Original, A]
cout << "Current default: " << uCalc::DefaultInstance().EvalStr("id") << endl;
uCalc ucB;
ucB.DefineVariable("id='B'");
ucB.IsDefault(true); // Default stack: [Original, A, B]
cout << "Current default: " << uCalc::DefaultInstance().EvalStr("id") << endl;
uCalc ucC;
ucC.DefineVariable("id='C'");
ucC.IsDefault(true); // Default stack: [Original, A, B, C]
cout << "Current default: " << uCalc::DefaultInstance().EvalStr("id") << endl;
cout << "--- Unsetting instances ---" << endl;
// Unset B. The default should remain C.
ucB.IsDefault(false);
cout << "After unsetting B, current default: " << uCalc::DefaultInstance().EvalStr("id") << endl;
// Unset C. The default should revert to A.
ucC.IsDefault(false);
cout << "After unsetting C, current default: " << uCalc::DefaultInstance().EvalStr("id") << endl;
// Unset A. Reverts to the original default.
ucA.IsDefault(false);
cout << "After unsetting A, current default: " << uCalc::DefaultInstance().EvalStr("id") << endl;
}
Initial default: Original
Current default: A
Current default: B
Current default: C
--- Unsetting instances ---
After unsetting B, current default: C
After unsetting C, current default: A
After unsetting A, current default: Original #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; // Define a variable in the original default to distinguish it. // Note: This variable won't exist in the implicit 'uc' instance. uCalc::DefaultInstance().DefineVariable("id='Original'"); cout << "Initial default: " << uCalc::DefaultInstance().EvalStr("id") << endl; uCalc ucA; ucA.DefineVariable("id='A'"); ucA.IsDefault(true); // Default stack: [Original, A] cout << "Current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; uCalc ucB; ucB.DefineVariable("id='B'"); ucB.IsDefault(true); // Default stack: [Original, A, B] cout << "Current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; uCalc ucC; ucC.DefineVariable("id='C'"); ucC.IsDefault(true); // Default stack: [Original, A, B, C] cout << "Current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; cout << "--- Unsetting instances ---" << endl; // Unset B. The default should remain C. ucB.IsDefault(false); cout << "After unsetting B, current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; // Unset C. The default should revert to A. ucC.IsDefault(false); cout << "After unsetting C, current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; // Unset A. Reverts to the original default. ucA.IsDefault(false); cout << "After unsetting A, current default: " << uCalc::DefaultInstance().EvalStr("id") << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
'// Define a variable in the original default to distinguish it.
'// Note: This variable won't exist in the implicit 'uc' instance.
uCalc.DefaultInstance.DefineVariable("id='Original'")
Console.WriteLine($"Initial default: {uCalc.DefaultInstance.EvalStr("id")}")
Dim ucA As New uCalc()
ucA.DefineVariable("id='A'")
ucA.IsDefault = true '// Default stack: [Original, A]
Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}")
Dim ucB As New uCalc()
ucB.DefineVariable("id='B'")
ucB.IsDefault = true '// Default stack: [Original, A, B]
Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}")
Dim ucC As New uCalc()
ucC.DefineVariable("id='C'")
ucC.IsDefault = true '// Default stack: [Original, A, B, C]
Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}")
Console.WriteLine("--- Unsetting instances ---")
'// Unset B. The default should remain C.
ucB.IsDefault = false
Console.WriteLine($"After unsetting B, current default: {uCalc.DefaultInstance.EvalStr("id")}")
'// Unset C. The default should revert to A.
ucC.IsDefault = false
Console.WriteLine($"After unsetting C, current default: {uCalc.DefaultInstance.EvalStr("id")}")
'// Unset A. Reverts to the original default.
ucA.IsDefault = false
Console.WriteLine($"After unsetting A, current default: {uCalc.DefaultInstance.EvalStr("id")}")
End Sub
End Module
Initial default: Original
Current default: A
Current default: B
Current default: C
--- Unsetting instances ---
After unsetting B, current default: C
After unsetting C, current default: A
After unsetting A, current default: Original Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() '// Define a variable in the original default to distinguish it. '// Note: This variable won't exist in the implicit 'uc' instance. uCalc.DefaultInstance.DefineVariable("id='Original'") Console.WriteLine($"Initial default: {uCalc.DefaultInstance.EvalStr("id")}") Dim ucA As New uCalc() ucA.DefineVariable("id='A'") ucA.IsDefault = true '// Default stack: [Original, A] Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}") Dim ucB As New uCalc() ucB.DefineVariable("id='B'") ucB.IsDefault = true '// Default stack: [Original, A, B] Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}") Dim ucC As New uCalc() ucC.DefineVariable("id='C'") ucC.IsDefault = true '// Default stack: [Original, A, B, C] Console.WriteLine($"Current default: {uCalc.DefaultInstance.EvalStr("id")}") Console.WriteLine("--- Unsetting instances ---") '// Unset B. The default should remain C. ucB.IsDefault = false Console.WriteLine($"After unsetting B, current default: {uCalc.DefaultInstance.EvalStr("id")}") '// Unset C. The default should revert to A. ucC.IsDefault = false Console.WriteLine($"After unsetting C, current default: {uCalc.DefaultInstance.EvalStr("id")}") '// Unset A. Reverts to the original default. ucA.IsDefault = false Console.WriteLine($"After unsetting A, current default: {uCalc.DefaultInstance.EvalStr("id")}") End Sub End Module