#include <iostream>
#include "uCalc.h"

using namespace std;
using namespace uCalcSoftware;

int main() {
   uCalc uc;
   // 1. Create and configure the original transformer
   uCalc::Transformer t1;
   t1.FromTo("A", "B");
   cout << "Original Transform: " << t1.Transform("A C A") << endl;

   // 2. Clone it
   auto t2 = t1.Clone();

   // 3. Modify the clone. This does not affect the original.
   t2.FromTo("C", "D");
   cout << "Cloned Transform:   " << t2.Transform("A C A") << endl;

   // 4. Verify original is unchanged by re-running its transform
   cout << "Original is Unchanged: " << t1.Transform("A C A") << endl;
   t2.Release();
   t1.Release();
}