Deliverables Summary
This part of the document is provided to help you track where you are in the individual project. This section will be updated in future deliverables.
Deliverable 1
Provided
- edittxt specification (linked in_IPD1)
- Skeleton of the main class for edittxt (linked in_IPD1)
- JUnit 5 example tests and skeleton of test class to submit (linked in_IPD1)
- JUnit 5 library (linked in_IPD1)
Expected
- Part I (Category partition)
- txt: TSL file you created
- txt.tsl: test specifications generated by the TSLCompiler tool when run on your TSL file
- Part II (JUnit tests)
- java: JUnit tests derived from your category partition test frames
Deliverable 2
Provided
- Reference implementation of edittxt utility (through Gradescope)
Expected
- Possibly revised set of tests that (1) pass on the reference implementation, (2) cover a set of scenarios (provided through Gradescope), and (3) have suitable oracles
Deliverable 3
Provided
- Instructor-provided test cases for edittxt (through Gradescope)
Expected
- Implementation of edittxt on java that passes all the student- and instructor-provided test cases
Deliverable 4
Provided: TBD
Expected: TBD
Deliverable 3: Instructions
In this deliverable, you will provide your own implementation of the edittxt utility, written on the Main.java file. Your implementation must pass all of the test cases that you submitted as part of Deliverable 2 (D2). In addition, we will assume that someone else in your team developed a set of additional test cases, independently from you. Your code will also have to pass these additional tests.
Please note that these tests all pass on the reference implementation we provided for D2, so they should be “compatible” with your own tests (as long as they passed in D2). Similar to D2, we are expecting the test class MyMainTest to be self-contained; that is, MyMainTest should not rely on any external classes or resources. However, you may use different classes or files to implement the edittxt utility.
- IMPORTANT: You are expected to infer the expected program behavior using the Gradescope provided information alone. Submitting an implementation that prints out the instructor-provided test inputs is unfair to your classmates and will result in a significant grade penalty.
Make sure not to make calls to System.exit() within your tests, as that creates problems for JUnit.
For this deliverable, you should not modify or delete any of your passing D2 tests, but you may append additional tests to MyMainTest and modify or delete tests that did not pass in D2. Even if you later realize that your original passing D2 tests are inadequate or somehow do not test the intended program behavior, do not modify the original passing tests as it will result in a penalty. Instead, append improved tests to MyMainTest.
Grade
Your grade for this deliverable will consist of two parts:
- 30% of your grade will be proportional to the percentage of your test cases that pass on your implementation. We expect everybody to get full points on this part, as it only involves your tests and your code.
- The remaining 70% of your grade will be proportional to the percentage of the instructor-provided test cases that pass on your implementation. For example, if your implementation passes 80 of the 100 provided test cases, your grade for this part will be .
Committing and submitting the deliverable
Following are the steps to commit and submit this deliverable:
- As usual, commit and push your code to your individual, assigned private repository. Important: make sure not to modify or remove any of the tests that you submitted for D2. Although for practical reasons the autograder does not check for that, we perform that check offline before finalizing the grades.
- Make sure that all Java files and necessary libraries are committed and pushed. As you did for Deliverable 1 and 2, you can check that you committed and pushed all the files you needed by doing the following:
- Clone a fresh copy of your personal repo in another directory
- Go to directory IndividualProject/edittxt in this fresh clone
- Compile your code. One way to do is to run, from a Unix-like shell:
javac -cp lib/\* -d classes src/edu/gatech/seclass/edittxt/*.java test/edu/gatech/seclass/edittxt/*.java[1]
- Run your tests. Again, from a Unix-like shell, you can run:
java -cp classes:lib/\* org.junit.platform.console.ConsoleLauncher
–select-class edu.gatech.seclass.edittxt.MyMainTest[2]
- Submit on Gradescope a file, called txt that contains, in two separate lines (1) your GT username and (2) the commit ID for your submission. For example, the content of file submission.txt for George P. Burdell could look something like the following:submission.txt
| gpburdell1 |
| 81b2f59 |
As soon as you submit, Gradescope will grade your submission by:
- Making sure that your files are present and in the correct location.
- Performing the same sanity checks it performed in D1 and D2.
- Compiling and running your tests and the instructor-provided tests against your implementation of edittxt.
If any of the above steps fails, you will see a grade of 0 and an error message with some diagnostic information. Please note that, as before, if your submission does not pass the Gradescope checks, it will receive a 0. Conversely, if Gradescope can successfully compile and run your code and both sets of tests, you will immediately receive a grade that is your actual grade for this deliverable (assuming you did not modify your D2 tests). Note that you can resubmit as many times as you want before the deadline.
Gradescope Feedback
Unlike other assignments, this deliverable is not available to submit on Gradescope until the previous deliverable is due. That is, deliverable 3 will be available on Gradescope 48 hours after this assignment is released on Canvas.
The test results that you see in Gradescope tell you whether a given test passed or not. If the test didn’t pass, Gradescope should show the difference between expected and actual outputs. For ease of readability, Gradescope will output newlines as “↵”, tabs as “⇥”, and a single space as ” “. Note that these values are not explicit and not expected as output of the edittxt program; instead, they are replaced to make the Gradescope output easier to read. For example, if the expected output of a test is
“Hello,\tworld ” + System.lineSeparator()
then Gradescope will show a message like
… expected <Hello,⇥world ↵> but was …
Requests for clarifications
If you need clarifications on a specific test or Gradescope output, please post privately on Ed Discussion (if appropriate, we will make it public) and make sure to add, when applicable:
- a link to the Gradescope results (not the Canvas page for the assignment),
- an inlined, complete copy of the test(s) you reference, if yours (i.e., no screenshots or commit IDs, please), and
- any information that may be relevant.
The bottom line is that, to make the interaction efficient, you should make your posts as self-contained and easy-to-check as possible. The faster we can respond to the posts, the more students we can help. Although we tested the autograder, it may still handle some corner cases incorrectly. If you receive feedback that seems to be incorrect, please contact us on Ed Discussion using the approach we describe above.
In addition, if you think you have a legitimate reason to modify your D2 tests, reach out to us privately on Ed Discussion and provide all the necessary details, to include a justification for why specific tests passed the reference implementation, but failed in your implementation. We believe this should not be necessary, but we cannot completely exclude some rare corner cases.
FAQ
- Can I delete or modify a test that passed in deliverable 2?
Answer: No, you can only delete or modify tests that did not pass in deliverable 2.
- How can I make sure I don’t accidentally change any tests from deliverable 2?
Answer: It is recommended you use git-diff or the github interface to compare commits with the commits from your D2 active submission and D3 active submission. This will let you know which statements, if any, were changed.
- Can any hints or input be given for a particular test?
Answer: Unfortunately, we cannot give any further guidance from what was given in the assignment instructions above and/or feedback given from the Gradescope autograder.
- Can I use external libraries in my program?
Answer: Yes, although there are some details to be aware of (1) make sure the autograder runs without problems, (2) ensure that the libraries must not be made specifically for any version of the assignment in the past or present, and (3) you are responsible for behavior of the library, and we will not help debug problems if you run into Gradescope issues using third party dependencies. We would like to caution that using such libraries may cause problems (such as the program exiting abruptly, etc.), and students should be extra careful and aware of what these libraries do.
- Can options “consume” other flags? For example, is “-k”, “-i” valid?
Answer: Yes, this shouldn’t result in an error and does not change any behavior. This will keep the lines containing the given substring “-i”. This happens because we parse first, so “-i” becomes the parameter for “-k”, just like any other string.
- Will the tests or reference implementation be revealed after this deliverable?
Answer: We cannot reveal any of the scenarios tested against.
[1] On some platforms, you may need to first create directory “classes”.
[2] If using a Windows-based system, you may need to run
java -cp “classes;lib/*” org.junit.platform.console.ConsoleLauncher
–select-class edu.gatech.seclass.edittxt.MyMainTest




