.NET Developer Practicum - Refactoring
Introduction:
The .Net Developer Practicum is an exercise to extend the functionality of an existing solution.
The .NET Developer practicum is evaluated on:
- Object Oriented Design
- Readability
- Maintainability
- Testability
- Extensibility
Hints:
- Take the time to walk through the existing functionality before trying to make changes
- Feel free to add 3rd party packages as needed
Technical Requirements:
Solution must:
- Compile without errors
- Run from the command line
- Pass all automated test cases
- Demonstrate your knowledge of automated testing by implementing both unit and acceptance tests
Functional Requirements:
- Add ability to switch between morning and evening and have that be the first required parameter (case insensitive)
- Add ability to have different dishes in the morning and at night (See sample input/output below)
- You can have multiple orders of coffee in the morning (but still no more than 1 each of the other Dish Types)
- Dessert is not available as a morning Dish Type
- ✓
Preserve existing requirements:
- ✓
You must enter a comma delimited list of Dish Types with at least one selection
- ✓
The output must print Dish Names in the following order: entrée, side, drink, dessert
- ✓
If invalid selection is encountered, then print "error"
- ✓
Ignore whitespace in the input
- ✓
Each Dish Type is optional (i.e. can have zero if not entered in the input)
- ✓
You can have multiple orders of potatoes (but still no more than 1 each of the other Dish Types)
- ✓
If more than one Dish Type is entered, output it once, followed by "(xN)", e.g. "potato(x2)"
✓ Covered by tests
Dishes for Morning
Dish Type |
Dish Name |
1 (entrée) |
egg |
2 (side) |
toast |
3 (drink) |
coffee |
Dishes for Evening
Dish Type |
Dish Name |
1 (entrée) |
steak |
2 (side) |
potato |
3 (drink) |
wine |
4 (dessert) |
cake |
Sample Input and Output:
Input |
Output |
morning, 1, 2, 3 |
egg,toast,coffee |
Morning,3,3,3 |
coffee(x3) |
morning ,1,3,2,3 |
egg,toast,coffee(x2) |
morning, 1, 2, 2 |
error |
morning, 1, 2, 4 |
error |
evening,1, 2, 3, 4 |
steak,potato,wine,cake |
Evening,1, 2, 2, 4 |
steak,potato(x2),cake |
evening,1, 2, 3, 5 |
error |
evening,1, 3, 2, 3 |
error |