/*************************************************************************/ /* */ /* test_co_pr.cc: Test file for STL modifications */ /* */ /* Written by Mark Ottesen and Kathy Miu for 2kf522 */ /* */ /*************************************************************************/ #define MAIN #include #include "test_co_pr.h" #include "EMschema.h" #include "ONschema.h" #include "DEschema.h" #include "COschema.h" #include "PRschema.h" /* The following defines are only necessary if attempting to use ** this file when USE_STL is undefined--i.e. to run the older version ** of gencpp. */ #ifndef USE_STL #define generic_EMcurr EMcurr #define generic_ONcurr ONcurr #define generic_DEcurr DEcurr #define generic_COcurr COcurr #define generic_PRcurr PRcurr #else #define generic_EMcurr (*EMcurr) #define generic_ONcurr (*ONcurr) #define generic_DEcurr (*DEcurr) #define generic_COcurr (*COcurr) #define generic_PRcurr (*PRcurr) #endif //#include //#include //#include //using namespace std; //void StripTrailingBlanks(string& mutant) //{ // int lnspace = mutant.find_last_not_of(' '); // if(lnspace != string::npos) // { // mutant.erase(lnspace + 1, mutant.size()); // } // //} int main() { PR *newPRrow; #ifdef USE_STL printf("\n\n****USING STL CONTAINERS FOR TABLES AND ROWS--KMIU&MOTTESEN****\n\n"); #else printf("\n\n****USING NTANSALA GENCPP****\n\n"); #endif pr_init("test_co_pr.vdf", "test_co_pr.dat"); pr_load("DefaultView", "test_co_pr.dat"); pr_dump("DefaultView", "test_co_pr.out", 0, "w"); printf("\n*** TEST OF INSERTROW() & ADD_ROW & PR_CHECK_FKEY & PR_CHECK_STR ***\n"); #ifdef USE_STL newPRrow = new PR; #else newPRrow = newPRrow->create_row(); /* class method */ #endif // newPRrow->set_test("INSERT: Acc04's prereq is Acc03"); newPRrow->add_row("DefaultView"); printf("\n************************* TEST OF TABLE_LOOP ***********************\n"); table_loop("DefaultView", EM) /* on empty table */ { } table_loop("DefaultView", ON) /* on one-row table */ { printf("ON: name is *%s*\n",generic_ONcurr->get_name()); } table_loop("DefaultView", DE) /* dept table */ { printf("DE: dept name is *%s*\n",generic_DEcurr->get_name()); } table_loop("DefaultView", CO) /* course table */ { printf("CO: course name is *%s*\n",generic_COcurr->get_name()); } table_loop("DefaultView", PR) /* prereq table */ { printf("PR: prereq test field is *%s*\n",generic_PRcurr->get_test()); } printf("\n************* TEST CHILD_LOOP & FIRST_CHILD & LAST_CHILD ***********\n"); table_loop("DefaultView", DE) { child_loop(DE,CO,COid,DEid) { if (first_child(DE,CO,COid)) { printf("\nCO children of DE %s (first_child)\n\n",generic_DEcurr->get_name()); } printf(" %s\n",generic_COcurr->get_name()); #ifdef USE_STL if (last_child(DE,CO,COid)) #else if (last_child(DE,CO,DEid)) #endif { printf("Done (last_child).\n"); } } } table_loop("DefaultView", CO) { child_loop(CO,PR,PRid1,COid1) { if (first_child(CO,PR,PRid1)) { printf("\nPRid1 children of CO %s (first_child)\n\n",generic_COcurr->get_name()); } printf(" %s\n",generic_PRcurr->get_test()); #ifdef USE_STL if (last_child(CO,PR,PRid1)) #else if (last_child(CO,PR,COid1)) #endif { printf("Done (last_child).\n"); } } child_loop(CO,PR,PRid2,COid2) { if (first_child(CO,PR,PRid2)) { printf("\nPRid2 children of CO %s (first_child)\n\n",generic_COcurr->get_name()); } printf(" %s\n",generic_PRcurr->get_test()); #ifdef USE_STL if (last_child(CO,PR,PRid2)) #else if (last_child(CO,PR,COid2)) #endif { printf("Done (last_child).\n"); } } } printf("\n***** TEST FIND_STR_LOOP & DELETE_ROW & REMOVEROW() ***************\n"); find_str_loop("DefaultView", PR, test, "???????????????????????????????????") { #ifdef USE_STL PRcurr = generic_PRcurr->delete_row(PRcurr); #else /* PRcurr->delete_row(); *//* This is a bug in the ntansala gencpp because delete_row() * will free PRcurr which is the looping var used by * find_str_loop */ PR *myPRcurr = new PR; /* kludge */ myPRcurr->next_ptr = generic_PRcurr->next_ptr; /* kludge */ generic_PRcurr->delete_row(); generic_PRcurr = myPRcurr; /* kludge */ #endif } table_loop("DefaultView", PR) /* prereq table */ { printf("PR: prereq test field is *%s*\n",generic_PRcurr->get_test()); } /* delete first CO row and set COcurr to next row */ #ifdef USE_STL COcurr = COtab->getFirstRow(); COcurr = generic_COcurr->delete_row(COcurr); if (COcurr != COtab->Terminator()) #else generic_COcurr = CObegin; generic_COcurr->delete_row(); generic_COcurr = CObegin; if (generic_COcurr != NULL) #endif printf("CO name is *%s*\n",generic_COcurr->get_name()); /* part of preceding if stmt */ table_loop("DefaultView", CO) /* course table */ { printf("CO: course name is *%s*\n",generic_COcurr->get_name()); } printf("\n************* VERIFY CHILD LISTS AFTER DELETION ***********\n"); table_loop("DefaultView", DE) { child_loop(DE,CO,COid,DEid) { if (first_child(DE,CO,COid)) { printf("\nCO children of DE %s (first_child)\n\n",generic_DEcurr->get_name()); } printf(" %s\n",generic_COcurr->get_name()); #ifdef USE_STL if (last_child(DE,CO,COid)) #else if (last_child(DE,CO,DEid)) #endif { printf("Done (last_child).\n"); } } } table_loop("DefaultView", CO) { child_loop(CO,PR,PRid1,COid1) { if (first_child(CO,PR,PRid1)) { printf("\nPRid1 children of CO %s (first_child)\n\n",generic_COcurr->get_name()); } printf(" %s\n",generic_PRcurr->get_test()); #ifdef USE_STL if (last_child(CO,PR,PRid1)) #else if (last_child(CO,PR,COid1)) #endif { printf("Done (last_child).\n"); } } child_loop(CO,PR,PRid2,COid2) { if (first_child(CO,PR,PRid2)) { printf("\nPRid2 children of CO %s (first_child)\n\n",generic_COcurr->get_name()); } printf(" %s\n",generic_PRcurr->get_test()); #ifdef USE_STL if (last_child(CO,PR,PRid2)) #else if (last_child(CO,PR,COid2)) #endif { printf("Done (last_child).\n"); } } } return(0); }