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));
}