all:	runDB

runDB:	Student.o SortedList.o studentDB.o main.o
	g++ Student.o SortedList.o studentDB.o -o runDB
	g++ main.cpp Student.o SortedList.o -o main

pure:	Student.o SortedList.o studentDB.o main.o
	purify g++ Student.o SortedList.o studentDB.o -o runDB
	purify g++ Student.o SortedList.o main.o -o main

Student.o:	Student.h Student.cpp
	g++ -c Student.cpp

SortedList.o:	SortedList.h SortedList.cpp
	g++ -c SortedList.cpp

test:	runDB	
	@echo "TEST0: Test deleting head of list"
	./runDB < testData/testData0 
	@echo

	@echo "TEST1: Test IDs out of order (1st > 2nd > 3rd)"
	./runDB < testData/testData1 
	@echo

	@echo "TEST2: Test deleting head of list"
	./runDB < testData/testData2 
	@echo

	@echo "TEST3: Test deleting middle of list"
	./runDB < testData/testData3 
	@echo

	@echo "TEST4: Test deleting end of list"
	./runDB < testData/testData4 
	@echo

	@echo "TEST5: Test updating head (also tests find)"
	./runDB < testData/testData5
	@echo

	@echo "TEST6: Test updating middle (also tests find)"
	./runDB < testData/testData6
	@echo

	@echo "TEST7: Test updating last (also tests find) (updating tests all letter grades)"
	./runDB < testData/testData7
	@echo

	@echo "TEST8: Test updating on empty list"
	./runDB < testData/testData8
	@echo

	@echo "TEST9: Test duplicate insert"
	./runDB < testData/testData9
	@echo

clean:
	rm SortedList.o Student.o runDB
