#include "OPair.h"
#include "btThread.h"

int main()
{

OrderedPair A(3,1);
OrderedPair B(3,5);
OrderedPair C(100,100);
Ordered Pair D(99,200);

// test << on ordered pairs
cout << "A: " << A <<  endl << "B: " << B << endl << "C: " << C << endl;

// test comparison on ordered pairs
cout << "A < B " << (A< B) << endl;
cout << "A > B " << (A> B) << endl;
cout << "B < C " << (B< C) << endl;
cout << "B > C " << (B> C) << endl;

//
// test a double threaded tree for sorting ordered pairs
btThrd<OrderedPair>* opTree = new btThrd<OrderedPair>(B);
opTree->insert(C);
opTree->insert(A);
opTree->insert(D);

cout << "Some ordered pairs in lexicographic order: \n";

opTree->inOrder();

cout << "Same ordered pairs in reverse lexicographic order: \n";

opTree->reverseOrder();

//
// test a double threaded tree for sorting strings
btThrd<String>* strTree = new btThrd<String>("alpha");
strTree->insert("gummy bear");
strTree->insert("beta");
strTree->insert("gamma ray");
strTree->insert("gamma");

cout << "Some strings in lexicographic order: \n";

strTree->inOrder();

cout << "Same strings in reverse lexicographic order: \n";

strTree->reverseOrder();



//
// test a double threaded tree for sorting ints
btThrd<int>* intTree = new btThrd<int>(9);

intTree->insert(5);
intTree->insert(4);
intTree->insert(15);
intTree->insert(11);
intTree->insert(13);
intTree->insert(25);
intTree->insert(18);
intTree->insert(30);

cout << "Some integers in order: \n";

intTree->inOrder();

cout << "Same integers in reverse order: \n";

intTree->reverseOrder();

return(1);
}
