コード例 #1
0
// For testing (DO NOT ALTER)
void UnitTest() {
  string temp = "This unit test will test some of your code:\n";
  cout << temp << "There are 59 tests.\n" << string(temp.length() - 1, '-')
       << endl;
  // Tests
  cout << "******BSTNodeT<int>******" << endl;
  BSTNodeT<int> inode1;
  BSTNodeT<int> inode2(99);
  BSTNodeT<int> inode3(-1);

  Test(inode1.GetContents() == 0, "Default Constructor / GetContents()");
  Test(inode1.GetLeft() == NULL, "Default Constructor / GetLeft()");
  Test(inode1.GetRight() == NULL, "Default Constructor / GetRight()");

  Test(inode2.GetContents() == 99, "Constructor(99) / GetContents()");
  Test(inode2.GetLeft() == NULL, "Constructor(99) / GetLeft()");
  Test(inode2.GetRight() == NULL, "Constructor(99) / GetRight()");

  // node 2 is leftChild, node 3 is rightChild
  inode1.SetLeft(&inode2);
  Test(inode1.GetLeft() == &inode2, "SetLeft() / GetLeft()");
  inode1.SetRight(&inode3);
  Test(inode1.GetRight() == &inode3, "SetRight() / GetRight()");

  cout << "******BSTNodeT<char>******" << endl;
  BSTNodeT<char> cnode1;
  BSTNodeT<char> cnode2('A');
  BSTNodeT<char> cnode3('a');

  Test(cnode1.GetContents() == '\0', "Default Constructor / GetContents()");
  Test(cnode1.GetLeft() == NULL, "Default Constructor / GetLeft()");
  Test(cnode1.GetRight() == NULL, "Default Constructor / GetRight()");

  Test(cnode2.GetContents() == 'A', "Constructor('A') / GetContents()");
  Test(cnode2.GetLeft() == NULL, "Constructor('A') / GetLeft()");
  Test(cnode2.GetRight() == NULL, "Constructor('A') / GetRight()");

  // node 2 is leftChild, node 3 is rightChild
  cnode1.SetLeft(&cnode2);
  Test(cnode1.GetLeft() == &cnode2, "SetLeft() / GetLeft()");
  cnode1.SetRight(&cnode3);
  Test(cnode1.GetRight() == &cnode3, "SetRight() / GetRight()");

  cout << "******BSTNodeT<string>******" << endl;
  BSTNodeT<string> snode1;
  BSTNodeT<string> snode2("Hello");
  BSTNodeT<string> snode3("Goodbye");

  Test(snode1.GetContents() == "", "Default Constructor / GetContents()");
  Test(snode1.GetLeft() == NULL, "Default Constructor / GetLeft()");
  Test(snode1.GetRight() == NULL, "Default Constructor / GetRight()");

  Test(snode2.GetContents() == "Hello",
       "Constructor(\"Hello\") / GetContents()");
  Test(snode2.GetLeft() == NULL, "Constructor(\"Hello\") / GetLeft()");
  Test(snode2.GetRight() == NULL, "Constructor(\"Hello\") / GetRight()");

  // node 2 is leftChild, node 3 is rightChild
  snode1.SetLeft(&snode2);
  Test(snode1.GetLeft() == &snode2, "SetLeft() / GetLeft()");
  snode1.SetRight(&snode3);
  Test(snode1.GetRight() == &snode3, "SetRight() / GetRight()");

  cout << "******BSTreeT<int>******" << endl;

  // Setup the BST
  BSTreeT<int> tree;
  BSTNodeT<int> *tree_pointer;
  string actual = "";
  Test(tree.GetSize() == 0, "Default Constructor / GetSize()");

  Test(tree.ToStringForwards() == actual, "ToStringForwards()",
       tree.ToStringForwards(), actual);
  Test(tree.ToStringBackwards() == actual, "ToStringBackwards()",
       tree.ToStringBackwards(), actual);
  Test(tree.Insert(50) == 1, "Insert(50)");
  Test(tree.GetSize() == 1, "GetSize()");
  actual = "50";
  Test(tree.ToStringForwards() == actual, "ToStringForwards()",
       tree.ToStringForwards(), actual);
  Test(tree.ToStringBackwards() == actual, "ToStringBackwards()",
       tree.ToStringBackwards(), actual);
  Test(tree.Insert(20) == 1, "Insert(20)");
  Test(tree.GetSize() == 2, "GetSize()");
  actual = "20, 50";
  Test(tree.ToStringForwards() == actual, "ToStringForwards()",
       tree.ToStringForwards(), actual);
  actual = "50, 20";
  Test(tree.ToStringBackwards() == actual, "ToStringBackwards()",
       tree.ToStringBackwards(), actual);

  Test(tree.Insert(80) == 1, "Insert(80)");
  Test(tree.GetSize() == 3, "GetSize()");
  actual = "20, 50, 80";
  Test(tree.ToStringForwards() == actual, "ToStringForwards()",
       tree.ToStringForwards(), actual);
  actual = "80, 50, 20";
  Test(tree.ToStringBackwards() == actual, "ToStringBackwards()",
       tree.ToStringBackwards(), actual);

  Test(tree.Insert(80) == 1, "Insert(80)");
  Test(tree.GetSize() == 3, "GetSize()");
  actual = "20, 50, 80";
  Test(tree.ToStringForwards() == actual, "ToStringForwards()",
       tree.ToStringForwards(), actual);
  actual = "80, 50, 20";
  Test(tree.ToStringBackwards() == actual, "ToStringBackwards()",
       tree.ToStringBackwards(), actual);

  Test(tree.Exists(50) == true, "Exists(50)");
  Test(tree.Exists(0) == false, "Exists(0)");

  //tree_pointer = tree.Get(50);
  //Test(tree_pointer->GetContents() == 50, "Get(50)");

  //tree_pointer = tree.Get(0);
  //Test(tree_pointer == NULL, "Get(0)");

  Test(tree.Remove(80) == 1, "Remove(80)");
  Test(tree.GetSize() == 3, "GetSize()");
  actual = "20, 50, 80";
  Test(tree.ToStringForwards() == actual, "ToStringForwards()",
       tree.ToStringForwards(), actual);
  actual = "80, 50, 20";
  Test(tree.ToStringBackwards() == actual, "ToStringBackwards()",
       tree.ToStringBackwards(), actual);

  Test(tree.Remove(80) == 0, "Remove(80)");
  Test(tree.GetSize() == 2, "GetSize()");
  actual = "20, 50";
  Test(tree.ToStringForwards() == actual, "ToStringForwards()",
       tree.ToStringForwards(), actual);
  actual = "50, 20";
  Test(tree.ToStringBackwards() == actual, "ToStringBackwards()",
       tree.ToStringBackwards(), actual);

  Test(tree.Remove(80) == -1, "Remove(80)");

  tree.Clear();
  Test(tree.GetSize() == 0, "Clear() / GetSize()");
  actual = "";
  Test(tree.ToStringForwards() == actual, "ToStringForwards()",
       tree.ToStringForwards(), actual);
  Test(tree.ToStringBackwards() == actual, "ToStringBackwards()",
       tree.ToStringBackwards(), actual);

  cout << string(temp.length() - 1, '-') << endl;
  cout << "Unit Test Complete!\n" << "Passed: " << ut_passed << " / "
       << ut_total << endl << "Failed: " << ut_failed << " / " << ut_total
       << endl << endl;
}
コード例 #2
0
ファイル: driver.cpp プロジェクト: RussPowell/Hello-World
int main() {
    string filename;
    string read_in;
    
    cout << "Specify the filename to read in." << endl;
    cin >> filename;
    
    filename = filename + ".txt";
    
    // Initialize and open InputFile
    ifstream InputFile;
    InputFile.open(filename.c_str());
    BSTreeT<string>* tree;
    
    if(InputFile.is_open()) {
        while(!InputFile.eof()) {
            char read = InputFile.get();
            
            if (read == 35){
                getline(InputFile, read_in);
                //do nothing
                
            }
            else if(read == 'C' || read == 'c') {
                cout << "Creating new Tree!" << endl;
                tree = new BSTreeT<string>;
                cout << "        Tree Created, New Size = " << tree->GetSize() << endl;
            }
            else if(read == 'X' || read == 'x') {
                tree->Clear();
                cout << "Cleared ALL Trees!" << endl;
            }
            else if(read == 'D' || read == 'd') {
                cout << "Deleting ALL Trees...." << endl;
                tree->~BSTreeT();
                if(tree->GetSize() != 0) {
                    cout << "        Deletion was unsuccessful!\n        Size returned as: " << tree->GetSize() << ".\n        Expected ZERO(0)" << endl;
                } else {
                    cout << "        Deletion Success!\n        Size returned as: 0" << endl;
                }
            }
            else if(read == 'I' || read == 'i') {
                cout << "Inserting into trees!" << endl;
                getline(InputFile, read_in);
                cout << "Inserting: " << read_in << endl;
                tree->Insert(read_in);
                cout << "        Insertion Completed!\n        Size returned as: " << tree->GetSize() << endl;
            }
            else if(read == 'F' || read == 'f') {
                cout << "Searching for input!" << endl;
                getline(InputFile, read_in);
                cout << "Searching for: " << read_in << endl;
                if(tree->Exists(read_in)) {
                    cout << "        Search Term was found in the Tree!" << endl;
                }
                else {
                    cout << "        Search term was NOT found!" << endl;
                };
            }
            else if(read == 'R' || read == 'r') {
                cout << "Removing input from tree!" << endl;
                getline(InputFile, read_in);
                if(tree->Exists(read_in)) {
                    tree->Remove(read_in);
                    cout << "        Deletion was successful!\n        Size returned as: " << tree->GetSize() << endl;
                }
                else {
                    cout << "        Deletion was unsuccessful!\n        " << read_in << " was not found." << endl;
                }
            }
            else if(read == 'G' || read == 'g') {
                getline(InputFile, read_in);
                cout << "Retrieving: " << read_in << endl;
                if(tree->Exists(read_in)) {
                    cout << "        Successfully retrieved " << read_in << endl;
                }
                else {
                    cout << "        Unsuccessful." << endl;
                }
            }
            else if(read == 'N' || read == 'n') {
                cout << "Retrieving current Node count in tree!" << endl;
                cout << "        " << tree->GetSize() << endl;
            }
            else if(read == 'O' || read == 'o') {
                cout << "Reading out tree FORWARDS!" << endl;
                if(tree->GetSize() == 0) {
                    cout<< "        TREE EMPTY!!" << endl;
                }
                else { 
                    cout << "       " << tree->ToStringForwards() << endl;
                }
            }
            else if(read == 'E' || read == 'e') {
                cout << "Reading out tree BACKWARDS!" << endl;
                if(tree->GetSize() == 0) {
                    cout<< "        TREE EMPTY!!" << endl;
                }
                else { 
                    cout << "       " << tree->ToStringBackwards() << endl;
                }
            } else {
                
            }
        }
    }
    
    InputFile.close();
}