Update README.md

- replaced gilded rose requirements by a link to the requirements-file
- added a clarification for running the tests
- added a description for using cl-mock to stub a function or method
- added a description for running the testtest-fixture
This commit is contained in:
NicoSimoski 2023-07-27 11:51:07 +02:00 committed by GitHub
parent bf5b0d9cec
commit 6ecbea14f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,8 +1,11 @@
# gilded-rose # gilded rose
## Setup The requirements of gilded rose can be found here:
https://github.com/emilybache/GildedRose-Refactoring-Kata/blob/main/GildedRoseRequirements.txt
### Install quicklisp # Setup
## Install quicklisp
To run this project install quicklisp (if not already done): To run this project install quicklisp (if not already done):
- download https://beta.quicklisp.org/quicklisp.lisp - download https://beta.quicklisp.org/quicklisp.lisp
@ -15,65 +18,40 @@ To run this project install quicklisp (if not already done):
> (ql:add-to-init-file) > (ql:add-to-init-file)
in your common lisp implementation in your common lisp implementation
### Install project ## Install project
Copy the project-folder containing this file into /quicklisp/local-projects/ that has been created when installing quicklisp. Copy the project-folder containing this file into /quicklisp/local-projects/ that has been created when installing quicklisp.
This is the root directory for quicklisp to search for the gilded-rose.asd file which defines the system (project) and its dependencies. This is the root directory for quicklisp to search for the gilded-rose.asd file which defines the system (project) and its dependencies.
The quicklisp-folder is usually created in your home-directory. The quicklisp-folder is usually created in your home-directory.
### Work with the project ## Working with the project
Now you can load the project with Now you can load the project with
> (ql:quickload "gilded-rose") > (ql:quickload "gilded-rose")
in your common lisp-implementation and run the tests with in the common lisp implementation of your choice and run the tests with
> (asdf:test-system "gilded-rose") > (asdf:test-system "gilded-rose")
. .
You can stub and mock functions and methods with the cl-mock-library which is already included in the system definition of the test-system: If you just want to run the tests
> (asdf:test-system "gilded-rose")
is sufficient.
You can mock functions and methods with the cl-mock-library which is already included in the system definition of the test-system:
(with-mocks () (with-mocks ()
(answer <your-method> (call-previous)) (answer <your-method> (call-previous))
(<your-method> <argument-list>) (<your-method> <argument-list>)
(is <your-testcase> (invocations '<your-method>))) (is <your-testcase> (invocations '<your-method>)))
## Documentation If you just want to stub functions you can replace
(call-previous)
with a return value of your choice and your test does not depend on
(invocations '<your-method>)
Hi and welcome to team Gilded Rose. As you know, we are a small inn ## Running the texttest-fixture
with a prime location in a prominent city ran by a friendly
innkeeper named Allison. We also buy and sell only the finest goods.
Unfortunately, our goods are constantly degrading in quality as they
approach their sell by date. We have a system in place that updates
our inventory for us. It was developed by a no-nonsense type named
Leeroy, who has moved on to new adventures. Your task is to add the
new feature to our system so that we can begin selling a new
category of items.
First an introduction to our system:
- All items have a SellIn value which denotes the number of days we have to sell the item
- All items have a Quality value which denotes how valuable the item is
- At the end of each day our system lowers both values for every item
Pretty simple, right? Well this is where it gets interesting:
- Once the sell by date has passed, Quality degrades twice as fast
The Quality of an item is never negative
- "Aged Brie" actually increases in Quality the older it gets
- The Quality of an item is never more than 50
- "Sulfuras", being a legendary item, never has to be sold or decreases in Quality
- "Backstage passes", like aged brie, increases in Quality as it's
SellIn value approaches; Quality increases by 2 when there are 10
days or less and by 3 when there are 5 days or less but Quality
drops to 0 after the concert
We have recently signed a supplier of conjured items. This requires an update to our system:
- "Conjured" items degrade in Quality twice as fast as normal items
Feel free to make any changes to the UpdateQuality method and add
any new code as long as everything still works correctly. However,
do not alter the Item class or Items property as those belong to the
goblin in the corner who will insta-rage and one-shot you as he
doesn't believe in shared code ownership (you can make the
UpdateQuality method and Items property static if you like, we'll
cover for you).
Just for clarification, an item can never have its Quality increase
above 50, however "Sulfuras" is a legendary item and as such its
Quality is 80 and it never alters.
If you don't want to work with the unit-tests you can test your program with the texttest-fixture.
After loading the project in the common lisp implementation of your choice with
> (ql:quickload "gilded-rose")
you can run the texttest-fixture with
> (gilded-rose::run-gilded-rose <number-of-days>)
where <number-of-days> is the number of days you want to simulate.