Description
Important notes:
- Make sure you compile and run all code on socs.uoguelph.ca!
1 Grading rubric
Functions (graded using an automated test harness): | 90% | |||
– | createCalendar(): | 45% | 70% | |
– | Correct handling of valid files and arguments | |||
– | – | Correct handling of invalid files and arguments | 25% | 8% |
deleteCalendar(): | ||||
– | printCalendar(): | 7% | ||
– | printError(): | 5% | ||
Sub-Total: 90% | ||||
Correct makefile (has all four rules, creates correctly named files): | 10% |
- make list creates a shared libraryso in assign1/bin
- make parser creates a shared libraryso in assign1/bin
- make or make all createsso and libcal.so in assign1/bin
- make clean removes all .o and .so files
Total: 100%
Additional deductions: | -15% | |
– | Any compiler warnings: | |
– | Any memory leaks: | -15% |
– | Any memory errors other than leaks, e.g. under-allocating memory, using | -15% |
– | uninitialized pointers, etc.: | |
Incorrect directory structure: | -5% | |
– | Incorrect output filenames created by makefile: | -5% |
– | Any additional failures to follow submission instructions: | -5% |
Any compiler errors: automatic grade of zero (0) on the assignment.
- Test harness instructions
Running the main test harness
The harness tests iCalendar creation/deletion and the two print… functions. It also tests error handling. It does not test for memory leaks – those scripts are separate (see below). As a result, iCalendar deletion tests only really test for segfaults and other crashes during deletion.
We don’t want to rely on potentially broken makefiles/static libs, so the test harness only uses student .h and .c files.
The test harness directory structure is:
- bin – will contain all executable files
- src – contains test cases. Do not modify these in any way.
- include – contains test harness headers, as well ash and CalendarParser.h. Do not modify these in any way.
- studentCode – student .c files go here.
- studentInclude – student .h files go here
- testFiles – contains various broken and valid iCalendar files
Copy your .c and .h files (except CalendarParser.h. and LinkedListAPI.h) into the appropriate directories, and run the harness.
Running the test harness
- Place your .c files into studentCode.
- Place your additional headers into studentInclude – i.e. everything except h. and
LinkedListAPI.h. Do not use you CalendarParser.h and LinkedListAPI.h!
- Type make clean before compiling to clear the old data.
- Type make calTestA1 to compile and execute the harness. You will see the compilation feedback and, if the assignment compiles, the test harness results.
The output of the test harness contains all the information about the passed/failed tests, as well as the total score (out of 90).
Checking for memory leaks
- Compile and run by typing make leakTestA1
This will execute valgrind 12 times. There are 6 tests first create/delete (including 2 where create is expected to return an error code due to an invalid file), then 4 for create/print/delete. Each test must show
“ in use at exit: 0 bytes in 0 blocks”.
If there are more than 0 bytes at exit – i.e. if there are leaks – you will see something like:
LEAK SUMMARY:
==31556== | definitely lost: | 112 bytes in | 1 blocks | |||
==31556== | indirectly lost: | 20,929 bytes | in 681 | blocks | ||
==31556== | possibly lost: | 0 | bytes in 0 | blocks | ||
==31556== | still reachable: | 0 | bytes in | 0 | blocks | |
==31556== | suppressed: | 0 | bytes in | 0 | blocks |
Checking for memory errors
- Compile and run by typing make memErrTestA1
This will execute valgrind 12 times. There are 6 tests first create/delete (including 2 where create is expected to return an error code due to an invalid file), then 4 for create/print/delete. Each test must show
==14173== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
==14173== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Again, the unfortunately the output will be super-messy (especially with all the REDIR messages), so you will have to be careful when reading it.
!2