Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@
<artifactId>fest-assert-core</artifactId>
<version>2.0M8</version>
</dependency>
<!-- You must install approvalstest in you local or corporate repository -->
<!-- Cf. src/main/lib/README.txt file to install it -->
<dependency>
<groupId>com.approvaltests</groupId>
<artifactId>approval</artifactId>
<version>0.12</version>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,9 @@ public int getSellIn() {
public int getQuality() {
return quality;
}

@Override
public String toString() {
return "Item [name=" + name +", sellIn=" + sellIn + ", quality=" + quality + "]";
}
}
Binary file not shown.
Binary file not shown.
10 changes: 10 additions & 0 deletions java/src/main/lib/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
List of all dependencies that are not hosted in maven repository.
You have to install it in your local repository (see below for the install command).

- ApprovalTests (http://approvaltests.sourceforge.net/)
Unit testing asserts can be difficult to use. Approval tests simplify this by taking
a snapshot of the results, and confirming that they have not changed.

Type this command in you console (in src/main/lib directory) to install ApprovalTests in you local repository:

mvn install:install-file -Dfile=ApprovalTests/ApprovalTests.jar -DgroupId=com.approvaltests -DartifactId=approval -Dversion=0.12 -Dpackaging=jar -DgeneratePom=true
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package org.joyofcoding.objectcalisthenics;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.approvaltests.Approvals;
import org.junit.Before;
import org.junit.Test;

/**
* Testing GildedRose with Golden Master.
* <p>
* <b>Warning:</b> You must download and install approvalstest in you local or corporate repository. Cf. src/main/lib/README.txt file to install it.
* </p>
* @see <a href="http://craftedsw.blogspot.fr/2012/11/testing-legacy-code-with-golden-master.html#comment-form">Testing legacy code with Golden Master</a>
* by Sandro Mancuso
* @see <a href="http://approvaltests.sourceforge.net/">Approval Tests</a>
*
*/
public class GoldenMasterGildedRoseTest {
private static final int FIXED_SEED = 100;
private static final int NUMBER_OF_RANDOM_ITEMS = 2000;
private static final int MINIMUM = -50;
private static final int MAXIMUN = 101;

private String[] itemNames = { "+5 Dexterity Vest", "Aged Brie",
"Elixir of the Mongoose", "Sulfuras, Hand of Ragnaros",
"Backstage passes to a TAFKAL80ETC concert", "Conjured Mana Cake" };
private Random random = new Random(FIXED_SEED);
private GildedRose gildedRose;

@Before
public void initialise() {
gildedRose = new GildedRose();
}

@Test
// @UseReporter(JunitReporter.class)
public void should_generate_update_quality_output() throws Exception {
List<Item> items = generateRandomItems(NUMBER_OF_RANDOM_ITEMS);

gildedRose.updateQuality(items);
Approvals.verifyAll("Item", items);
}

private List<Item> generateRandomItems(int totalNumberOfRandomItems) {
List<Item> items = new ArrayList<Item>();
for (int cnt = 0; cnt < totalNumberOfRandomItems; cnt++) {
items.add(new Item(itemName(), sellIn(), quality()));
}
return items;
}

private String itemName() {
return itemNames[0 + random.nextInt(itemNames.length)];
}

private int sellIn() {
return randomNumberBetween(MINIMUM, MAXIMUN);
}

private int quality() {
return randomNumberBetween(MINIMUM, MAXIMUN);
}

private int randomNumberBetween(int minimum, int maximum) {
return minimum + random.nextInt(maximum);
}

}
Loading