✨ Requirements Checker (stage 4 -- product) ✨
Due: Mon Mar 9 by 11pm
Overview
Time to turn your requirements checker into an actual product!
Running Tests Across our Versions
Your implementation needs to let us download your repo, go into a terminal/shell window, cd into a directory named testFest, and run the following:
npx tsx testrunner.ts <filename.csv>
npx and tsx are part of how we run typescript programs from the command line. If you get an error about not having tsx, you can run npm install -g tsx. If you get an error about not having npx installed, run brew install node.
We have pushed the testFest folder and a skeletal testrunner.ts to your repo. You should edit testrunner.ts to call whatever functions are in your implementation to check the requirements, then print out the result of the test.
Filename structure
The filename should have the format conc-degree-result-tag.csv, where
concis the concentrationdegreeis ab or scbresultis one ofpass,fail, ormalformed(this is your expected result for this test)tagis short descriptive info (so you can have multiple tests with the same other parameters)
Examples:
csci-ab-fail-1.csvcsci-ab-malformed-spaces.csv
CSV Internal Format
Internally, the csv will have two mandatory columns: column A will be named course, and should consist of course names written as "CSCI1420" (no spaces). Column B will be named capstone. It should have at most one entry (in cell B2), which is the course being used for capstone.
The testrunner should return malformed if the data in the csv file does not meet this specification. Specifically, missing column names or course names with spaces or other whitespace count as malformed. Having too few courses does not (that would result in fail). It is fine for the CSV to have additional columns, as long as the first two are correct.
The testFest folder that you pull into your repo will have two CSV files, one malformed and one well-formed, so that you can confirm the formatting requirements.
Definitions of course categories
We have also pushed a directory called specs that has both a csv of CS courses (and indicators of whether they are technical and eligible for capstone) and a csv of approved courses in other disciplines. The latter has an entry MATH1*** to indicate that any 1000-level math course is allowed.
Assignment Tasks
Task 1: Pull the repo addition that Kathi issued and edit testrunner.ts to run tests.
Task 2: Clean up your code based on the feedback that you received from peers and any other changes you want to make.
Task 3: Build out the set of tests that you'll use to check classmates' and Kathi's implementations. Create each test as a CSV file with the structure and format defined above. Put all of those tests in the testFest directory. Those are the only tests that we will run on your code.
Task 4: Add a simple user-interface.
Task 5: Don't forget to maintain your reflection journal for this project. If you haven't already uploaded your journal link for this assignment, please do so.
Submission
Push everything to your repo by the deadline, and submit your research journal link if you haven't already.
Grading
Grading on this assignment will take two forms:
- We will apply the code quality rubric (the one you used on your peers' work) to your implementation.
- We will run your tests against each others' solutions, Kathi's tests against your solutions, and your tests against Kathi's solution. Your testing grade will give points for each of Kathi's tests that you pass, and deduct points for each of Kathi's tests that you fail. You'll get extra points for tests that find errors in others' solutions, and extra extra points for tests that find errors in Kathi's solution.
FAQ
Here's a record of clarification questions and answers:
- For a well-formed csv file, the course and capstone headings should not have spaces (just as with the courses)
- You do not need to support the handbook exception that allows MATH 1001 or APMA 1001 in place of CSCI 0220. Just follow the Bulletin (which allows CSCI 0220 or MATH 1530)