void SystemTest2::processUsesBasicTest(){ string source = "..\\..\\Tests\\TestAllSources1.txt"; Parser parser; PKB pkb; DesignExtractor designextractor; parser.parse(source); parser.buildPKB(); designextractor.buildPKB(); //int p = pkb.getProcIndex("p").at(0); //int a = pkb.getProcIndex("a").at(0); //int q = pkb.getProcIndex("q").at(0); //int d = pkb.getProcIndex("d").at(0); cout << "---------USE CHECK-----------"; //vector<int> usedvars = pkb.getUsedVarAtProc(p); //for (int i = 0; i < usedvars.size(); i++){ // cout << pkb.getVarName(usedvars[i]); //} int Example = pkb.getProcIndex("Example").front(); cout << Example; vector<int> usedProc = pkb.getUsedVarAtProc(Example); cout << "size of usedProc"; cout << usedProc.size(); for (int i = 0; i < usedProc.size(); i++){ cout << pkb.getVarName(usedProc[i]); } }
void SystemTest2::processUses() { string source = "..\\..\\Tests\\TestDesignExtractorSource.txt"; Parser parser; PKB pkb; DesignExtractor designextractor; parser.parse(source); parser.buildPKB(); designextractor.buildPKB(); int A = pkb.getProcIndex("A").at(0); int B = pkb.getProcIndex("B").at(0); int C = pkb.getProcIndex("C").at(0); int D = pkb.getProcIndex("D").at(0); int E = pkb.getProcIndex("E").at(0); int x = pkb.getVarIndex("x"); int a = pkb.getVarIndex("a"); int w = pkb.getVarIndex("w"); int c = pkb.getVarIndex("c"); int b = pkb.getVarIndex("b"); int k = pkb.getVarIndex("k"); int loops = pkb.getVarIndex("loops"); int newvar = pkb.getVarIndex("new"); int yes = pkb.getVarIndex("yes"); vector<int> usedvars = pkb.getUsedVarAtProc(A); sort(usedvars.begin(), usedvars.end()); int vars[] = {x, a, w, c, b, k, loops, newvar, yes}; vector<int> expectedvars(vars, vars + sizeof(vars) / sizeof(int) ); sort(expectedvars.begin(), expectedvars.end()); CPPUNIT_ASSERT_EQUAL(expectedvars.at(0), usedvars.at(0)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(1), usedvars.at(1)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(2), usedvars.at(2)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(3), usedvars.at(3)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(4), usedvars.at(4)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(5), usedvars.at(5)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(6), usedvars.at(6)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(7), usedvars.at(7)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(8), usedvars.at(8)); usedvars = pkb.getUsedVarAtProc(B); sort(usedvars.begin(), usedvars.end()); int vars2[] = { a, c, b, k, loops, newvar, yes}; vector<int> expectedvars2(vars2, vars2 + sizeof(vars2) / sizeof(int) ); sort(expectedvars2.begin(), expectedvars2.end()); CPPUNIT_ASSERT_EQUAL(expectedvars2.at(0), usedvars.at(0)); CPPUNIT_ASSERT_EQUAL(expectedvars2.at(1), usedvars.at(1)); CPPUNIT_ASSERT_EQUAL(expectedvars2.at(2), usedvars.at(2)); CPPUNIT_ASSERT_EQUAL(expectedvars2.at(3), usedvars.at(3)); CPPUNIT_ASSERT_EQUAL(expectedvars2.at(4), usedvars.at(4)); CPPUNIT_ASSERT_EQUAL(expectedvars2.at(5), usedvars.at(5)); CPPUNIT_ASSERT_EQUAL(expectedvars2.at(6), usedvars.at(6)); usedvars = pkb.getUsedVarAtProc(C); sort(usedvars.begin(), usedvars.end()); int vars3[] = { a, c, k, loops, yes}; vector<int> expectedvars3(vars3, vars3 + sizeof(vars3) / sizeof(int) ); sort(expectedvars3.begin(), expectedvars3.end()); CPPUNIT_ASSERT_EQUAL(expectedvars3.at(0), usedvars.at(0)); CPPUNIT_ASSERT_EQUAL(expectedvars3.at(1), usedvars.at(1)); CPPUNIT_ASSERT_EQUAL(expectedvars3.at(2), usedvars.at(2)); CPPUNIT_ASSERT_EQUAL(expectedvars3.at(3), usedvars.at(3)); CPPUNIT_ASSERT_EQUAL(expectedvars3.at(4), usedvars.at(4)); }
void SystemTest2::processModifyLoopProc() { string source = "..\\..\\Tests\\TestDesignExtractorSource2.txt"; Parser parser; PKB pkb; DesignExtractor designextractor; parser.parse(source); parser.buildPKB(); designextractor.buildPKB(); int A = pkb.getProcIndex("A").at(0); int B = pkb.getProcIndex("B").at(0); int C = pkb.getProcIndex("C").at(0); int D = pkb.getProcIndex("D").at(0); int x = pkb.getVarIndex("x"); int a = pkb.getVarIndex("a"); int c = pkb.getVarIndex("c"); int k = pkb.getVarIndex("k"); int loops = pkb.getVarIndex("loops"); int j = pkb.getVarIndex("j"); int b = pkb.getVarIndex("b"); int fruit = pkb.getVarIndex("fruit"); CPPUNIT_ASSERT(pkb.isCalls(C, D)); CPPUNIT_ASSERT(pkb.isCalls(A, B)); CPPUNIT_ASSERT(pkb.isCalls(B, C)); CPPUNIT_ASSERT(pkb.isCalls(C, A)); CPPUNIT_ASSERT(pkb.isCallStar(A, B)); CPPUNIT_ASSERT(pkb.isCallStar(A, A)); CPPUNIT_ASSERT(pkb.isCallStar(A, D)); CPPUNIT_ASSERT(pkb.isCallStar(B, A)); vector<int> modifiedvars = pkb.getModifiedVarAtProc(A); sort(modifiedvars.begin(), modifiedvars.end()); int vars[] = {x, a, c, k, loops, j, b, fruit}; vector<int> expectedvars(vars, vars + sizeof(vars) / sizeof(int) ); sort(expectedvars.begin(), expectedvars.end()); CPPUNIT_ASSERT_EQUAL(expectedvars.at(0), modifiedvars.at(0)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(1), modifiedvars.at(1)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(2), modifiedvars.at(2)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(3), modifiedvars.at(3)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(4), modifiedvars.at(4)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(5), modifiedvars.at(5)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(6), modifiedvars.at(6)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(7), modifiedvars.at(7)); modifiedvars = pkb.getModifiedVarAtProc(B); sort(modifiedvars.begin(), modifiedvars.end()); CPPUNIT_ASSERT_EQUAL(expectedvars.at(0), modifiedvars.at(0)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(1), modifiedvars.at(1)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(2), modifiedvars.at(2)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(3), modifiedvars.at(3)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(4), modifiedvars.at(4)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(5), modifiedvars.at(5)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(6), modifiedvars.at(6)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(7), modifiedvars.at(7)); modifiedvars = pkb.getModifiedVarAtProc(C); sort(modifiedvars.begin(), modifiedvars.end()); CPPUNIT_ASSERT_EQUAL(expectedvars.at(0), modifiedvars.at(0)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(1), modifiedvars.at(1)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(2), modifiedvars.at(2)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(3), modifiedvars.at(3)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(4), modifiedvars.at(4)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(5), modifiedvars.at(5)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(6), modifiedvars.at(6)); CPPUNIT_ASSERT_EQUAL(expectedvars.at(7), modifiedvars.at(7)); modifiedvars = pkb.getModifiedVarAtProc(D); sort(modifiedvars.begin(), modifiedvars.end()); int vars2[] = {b, fruit}; vector<int> expectedvars2(vars2, vars2 + sizeof(vars2) / sizeof(int) ); sort(expectedvars2.begin(), expectedvars2.end()); CPPUNIT_ASSERT_EQUAL(expectedvars2.at(0), modifiedvars.at(0)); CPPUNIT_ASSERT_EQUAL(expectedvars2.at(1), modifiedvars.at(1)); }