InventoryTest.java 7.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. import static org.junit.Assert.*;
  2. import java.util.Arrays;
  3. import org.junit.Test;
  4. import org.junit.Before;
  5. public class InventoryTest {
  6. private static final int MAX_QUALITY = 50;
  7. private static final String AGED_BRIE_NAME = "Aged Brie";
  8. private static final String BACKSTAGE_PASS_NAME = "Backstage passes to a TAFKAL80ETC concert";
  9. private static final String NORMAL_ITEM_NAME = "+5 Dexterity Vest";
  10. private static final String CONJURED_ITEM_NAME = "Conjured Flower Bouquet";
  11. private Item sulfuras;
  12. private Item normalItem;
  13. @Before
  14. public void setup(){
  15. sulfuras = new Item("Sulfuras, Hand of Ragnaros", 0, 80);
  16. normalItem = new Item(NORMAL_ITEM_NAME, 10, 20);
  17. }
  18. @Test
  19. public void testUpdate_ForSulfurasQuality() throws Exception {
  20. int expectedQuality = sulfuras.getQuality();
  21. Item[] items = {sulfuras};
  22. Inventory sut = new Inventory(items);
  23. sut.updateQuality();
  24. assertEquals(expectedQuality, sulfuras.getQuality());
  25. }
  26. @Test
  27. public void testUpdate_ForSulfurasSellIn() throws Exception {
  28. int expectedSellIn = sulfuras.getSellIn();
  29. Item[] items = {sulfuras};
  30. Inventory sut = new Inventory(items);
  31. sut.updateQuality();
  32. assertEquals(expectedSellIn, sulfuras.getSellIn());
  33. }
  34. @Test
  35. public void testUpdate_ForNormalItemSellIn() throws Exception {
  36. int expectedSellIn = normalItem.getSellIn() - 1;
  37. Item[] items = {normalItem};
  38. Inventory sut = new Inventory(items);
  39. sut.updateQuality();
  40. assertEquals(expectedSellIn, normalItem.getSellIn());
  41. }
  42. @Test
  43. public void testUpdate_ForNormalItemQuantity() throws Exception {
  44. int expectedQuality = normalItem.getQuality() - 1;
  45. Item[] items = {normalItem};
  46. Inventory sut = new Inventory(items);
  47. sut.updateQuality();
  48. assertEquals(expectedQuality, normalItem.getQuality());
  49. }
  50. @Test
  51. public void testUpdate_ForSoldOutItem() throws Exception {
  52. int minimumQuality = 0;
  53. Item normalItemWithMinimumQuality = new Item(NORMAL_ITEM_NAME, 10, minimumQuality);
  54. Item[] items = {normalItemWithMinimumQuality};
  55. Inventory sut = new Inventory(items);
  56. sut.updateQuality();
  57. assertEquals(minimumQuality, normalItemWithMinimumQuality.getQuality());
  58. }
  59. @Test
  60. public void testUpdate_ForNormalItemOnceTheSellInDatePassed() throws Exception {
  61. Item normalItemWithPassedSellDate = new Item(NORMAL_ITEM_NAME, -1, 25);
  62. int expectedQuality = normalItemWithPassedSellDate.getQuality() - 2;
  63. Item[] items = {normalItemWithPassedSellDate};
  64. Inventory sut = new Inventory(items);
  65. sut.updateQuality();
  66. assertEquals(expectedQuality, normalItemWithPassedSellDate.getQuality());
  67. }
  68. @Test
  69. public void testUpdate_ForConjuredItem() throws Exception {
  70. Item conjuredItem = new Item(CONJURED_ITEM_NAME, 5, 25);
  71. int expectedQuality = conjuredItem.getQuality() - 2;
  72. Item[] items = {conjuredItem};
  73. Inventory sut = new Inventory(items);
  74. sut.updateQuality();
  75. assertEquals(expectedQuality, conjuredItem.getQuality());
  76. }
  77. @Test
  78. public void testUpdate_ForPassedSellDateConjuredItem() throws Exception {
  79. Item conjuredPassedDateItem = new Item(CONJURED_ITEM_NAME, -1, 25);
  80. int expectedQuality = conjuredPassedDateItem.getQuality() - 4;
  81. Item[] items = {conjuredPassedDateItem};
  82. Inventory sut = new Inventory(items);
  83. sut.updateQuality();
  84. assertEquals(expectedQuality, conjuredPassedDateItem.getQuality());
  85. }
  86. @Test
  87. public void testUpdate_AgedBrie() throws Exception {
  88. Item agedBrie = new Item(AGED_BRIE_NAME, 10, 25);
  89. int expectedQuality = agedBrie.getQuality() + 1;
  90. Item[] items = {agedBrie};
  91. Inventory sut = new Inventory(items);
  92. sut.updateQuality();
  93. assertEquals(expectedQuality, agedBrie.getQuality());
  94. }
  95. @Test
  96. public void testUpdate_WhenAgedBrieIsAtMaxQuality() throws Exception {
  97. Item agedBrie = new Item(AGED_BRIE_NAME, 10, MAX_QUALITY);
  98. Item[] items = {agedBrie};
  99. Inventory sut = new Inventory(items);
  100. sut.updateQuality();
  101. assertEquals(MAX_QUALITY, agedBrie.getQuality());
  102. }
  103. @Test
  104. public void testUpdate_WhenAgedBrieOnceTheSellInDatePassed() throws Exception {
  105. Item agedBrie = new Item(AGED_BRIE_NAME, -1, 20);
  106. int expectedQuality = agedBrie.getQuality() + 2;
  107. Item[] items = {agedBrie};
  108. Inventory sut = new Inventory(items);
  109. sut.updateQuality();
  110. assertEquals(expectedQuality, agedBrie.getQuality());
  111. }
  112. @Test
  113. public void testUpdate_ForBackstagePassesAfterTheConcertOccurred() throws Exception {
  114. Item backStagePass = new Item(BACKSTAGE_PASS_NAME, -1, 20);
  115. Item[] items = {backStagePass};
  116. Inventory sut = new Inventory(items);
  117. sut.updateQuality();
  118. assertEquals(0, backStagePass.getQuality());
  119. }
  120. @Test
  121. public void testUpdate_ForBackstagePassesQualityWhenTheConcertIsMoreThan10DaysAway() throws Exception {
  122. Item backStagePass = new Item(BACKSTAGE_PASS_NAME, 11, 20);
  123. int expectedQuality = backStagePass.getQuality() + 1;
  124. Item[] items = {backStagePass};
  125. Inventory sut = new Inventory(items);
  126. sut.updateQuality();
  127. assertEquals(21, backStagePass.getQuality());
  128. }
  129. @Test
  130. public void testUpdate_ForBackstagePassesWhenTheConcertIs10DaysOrLessAway() throws Exception {
  131. Item backStagePass = new Item(BACKSTAGE_PASS_NAME, 10, 27);
  132. int expectedQuality = backStagePass.getQuality() + 2;
  133. Item[] items = {backStagePass};
  134. Inventory sut = new Inventory(items);
  135. sut.updateQuality();
  136. assertEquals(expectedQuality, backStagePass.getQuality());
  137. }
  138. @Test
  139. public void testUpdate_ForBackstagePassesWhenTheConcertIs5DaysOrLessAway() throws Exception {
  140. Item backStagePass = new Item(BACKSTAGE_PASS_NAME, 5, 44);
  141. int expectedQuality = backStagePass.getQuality() + 3;
  142. Item[] items = {backStagePass};
  143. Inventory sut = new Inventory(items);
  144. sut.updateQuality();
  145. assertEquals(expectedQuality, backStagePass.getQuality());
  146. }
  147. @Test
  148. public void testUpdate_WhenBackstagePassesIsAtOrNeaerMaxQuality() throws Exception {
  149. Item backStagePassMoreThan10DaysAway = new Item(BACKSTAGE_PASS_NAME, 15, MAX_QUALITY);
  150. Item backStagePass10DaysAway = new Item(BACKSTAGE_PASS_NAME, 10, MAX_QUALITY - 1);
  151. Item backStagePass5DaysAway = new Item(BACKSTAGE_PASS_NAME, 5, MAX_QUALITY - 2);
  152. Item[] items = {backStagePassMoreThan10DaysAway, backStagePass10DaysAway, backStagePass5DaysAway};
  153. Inventory sut = new Inventory(items);
  154. sut.updateQuality();
  155. assertEquals(MAX_QUALITY, backStagePassMoreThan10DaysAway.getQuality());
  156. assertEquals(MAX_QUALITY, backStagePass10DaysAway.getQuality());
  157. assertEquals(MAX_QUALITY, backStagePass5DaysAway.getQuality());
  158. }
  159. }