File tree Expand file tree Collapse file tree 2 files changed +46
-12
lines changed Expand file tree Collapse file tree 2 files changed +46
-12
lines changed Original file line number Diff line number Diff line change @@ -36,15 +36,16 @@ public void updateQuality() {
3636 private void updateItem (Item item ) {
3737 if (isLegendary (item .name )) {
3838 return ;
39- } else if (isAgedBrie (item .name )) {
40- item .sellIn --;
39+ }
40+
41+ item .sellIn --;
42+
43+ if (isAgedBrie (item .name )) {
4144 if (item .quality < 50 ) {
4245 var qualityDelta = item .sellIn < 0 ? 2 : 1 ;
4346 item .quality += qualityDelta ;
4447 }
45- return ;
4648 } else if (isBackStagePass (item .name )) {
47- item .sellIn --;
4849 if (item .sellIn < 0 ) {
4950 item .quality = 0 ;
5051 } else {
@@ -53,15 +54,9 @@ private void updateItem(Item item) {
5354 item .quality += qualityDelta ;
5455 }
5556 }
56- return ;
57- }
58-
59- // all items except Sulfuras -> decrease sellIn
60- item .sellIn = item .sellIn - 1 ;
61-
62- if (item .quality > 0 ) {
57+ } else { // regular item
6358 var qualityDelta = item .sellIn < 0 ? 2 : 1 ;
64- item .quality = item .quality - qualityDelta ;
59+ item .quality = Math . max ( 0 , item .quality - qualityDelta ) ;
6560 }
6661 }
6762}
Original file line number Diff line number Diff line change @@ -129,6 +129,45 @@ void qualityIncreasesBy3WhenSellInIsBetween5And0() {
129129 }
130130 }
131131
132+ @ Nested
133+ class NormalItem {
134+ private final Item normalItem = new Item ("Foo" , 10 , 20 );
135+
136+ @ DisplayName ("quality decreases by 1" )
137+ @ Test
138+ void qualityDecreasesBy1 () {
139+ GildedRose app = createGildedRose (normalItem );
140+ app .updateQuality ();
141+ assertThat (normalItem .quality ).isEqualTo (19 );
142+ }
143+
144+ @ DisplayName ("sellIn decreases by 1" )
145+ @ Test
146+ void sellInDecreasesBy1 () {
147+ GildedRose app = createGildedRose (normalItem );
148+ app .updateQuality ();
149+ assertThat (normalItem .sellIn ).isEqualTo (9 );
150+ }
151+
152+ @ DisplayName ("quality decreases by 2 after sellIn date" )
153+ @ Test
154+ void qualityDecreasesBy2AfterSellIn () {
155+ normalItem .sellIn = 0 ;
156+ GildedRose app = createGildedRose (normalItem );
157+ app .updateQuality ();
158+ assertThat (normalItem .quality ).isEqualTo (18 );
159+ }
160+
161+ @ DisplayName ("quality never goes below 0" )
162+ @ Test
163+ void qualityNeverGoesBelow0 () {
164+ normalItem .quality = 0 ;
165+ GildedRose app = createGildedRose (normalItem );
166+ app .updateQuality ();
167+ assertThat (normalItem .quality ).isEqualTo (0 );
168+ }
169+ }
170+
132171 public GildedRose createGildedRose (Item item ) {
133172 return new GildedRose (item );
134173 }
You can’t perform that action at this time.
0 commit comments