Skip to content

Commit 1285749

Browse files
committed
after first code club refactoring exercise
1 parent 408c7ae commit 1285749

File tree

2 files changed

+85
-67
lines changed

2 files changed

+85
-67
lines changed

src/vending/VendingMachine.java

Lines changed: 46 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,92 +9,91 @@ public class VendingMachine {
99
ArrayList<Double> returnSlotCoins = new ArrayList<Double>();
1010
String display = "";
1111
ArrayList<String> itemBinList = new ArrayList<String>();
12-
1312

1413
public ArrayList<Double> returnCoins() {
15-
setCoinReturnAmount(getCurrentAmount());
14+
setCoinReturnAmount(getCurrentAmount());
1615
setCurrentAmount(0.00);
17-
18-
returnSlotCoins.addAll(coinsList);
16+
17+
returnSlotCoins.addAll(coinsList);
1918
return coinsList;
2019
}
2120

2221
public void insertPenny() {
2322
setCoinReturnAmount(0.01);
24-
25-
returnSlotCoins.add((Double)0.01);
23+
24+
returnSlotCoins.add((Double) 0.01);
2625
}
2726

2827
public void insertNickel() {
2928
setCurrentAmount(getCurrentAmount() + 0.05);
3029
updateDisplay();
31-
32-
coinsList.add((Double)0.05);
30+
31+
coinsList.add((Double) 0.05);
3332
}
3433

3534
public void insertDime() {
3635
setCurrentAmount(getCurrentAmount() + 0.10);
37-
updateDisplay();
38-
39-
coinsList.add((Double)0.10);
40-
}
36+
updateDisplay();
37+
38+
coinsList.add((Double) 0.10);
39+
}
4140

4241
public void insertQuarter() {
4342
setCurrentAmount(getCurrentAmount() + 0.25);
4443
updateDisplay();
45-
46-
coinsList.add((Double)0.25);
44+
45+
coinsList.add((Double) 0.25);
4746
}
48-
47+
4948
public void sodaButton() {
50-
if (getCurrentAmount() >= 1.25){
49+
if (getCurrentAmount() >= 1.25) {
5150
updateChangeAmount();
5251
itemBinList.add("Soda");
5352
}
5453
}
5554

56-
5755
public void chipsButton() {
58-
if (getCurrentAmount() >= 0.75){
59-
updateChangeAmount();
56+
if (getCurrentAmount() >= 0.75) {
57+
updateChangeAmount();
6058
itemBinList.add("Chips");
6159
}
6260
}
63-
61+
6462
public void candyButton() {
65-
if (getCurrentAmount() >= 0.50){
66-
updateChangeAmount();
63+
if (getCurrentAmount() >= 0.50) {
64+
updateChangeAmount();
6765
itemBinList.add("Candy");
6866
}
6967
}
70-
68+
7169
// Helper Methods
7270
private void updateDisplay() {
73-
NumberFormat nf = NumberFormat.getInstance();
74-
nf.setMinimumFractionDigits(2);
75-
String stringConversion = nf.format(getCurrentAmount());
71+
NumberFormat nf = NumberFormat.getInstance();
72+
nf.setMinimumFractionDigits(2);
73+
String stringConversion = nf.format(getCurrentAmount());
7674
setDisplay("$" + stringConversion);
7775
}
76+
7877
private void updateChangeAmount() {
7978
if (getCurrentAmount() >= 1.25) {
8079
setCurrentAmount(getCurrentAmount() - 1.25);
8180
}
8281
}
83-
84-
//Getters / Setters
85-
82+
83+
// Getters / Setters
84+
8685
public Double getCoinReturnAmount() {
8786
return coinReturnAmount;
8887
}
89-
88+
9089
public void setCoinReturnAmount(Double coinReturnAmount) {
9190
this.coinReturnAmount = coinReturnAmount;
9291
}
93-
92+
9493
public Double getCurrentAmount() {
9594
return currentAmount;
9695
}
97-
96+
9897
public void setCurrentAmount(Double currentAmount) {
9998
this.currentAmount = currentAmount;
10099
}
@@ -123,6 +122,21 @@ public void setItemBinList(ArrayList<String> itemBinList) {
123122
this.itemBinList = itemBinList;
124123
}
125124

125+
public void insert(Coin coin) {
126+
switch (coin) {
127+
case QUARTER:
128+
insertQuarter();
129+
break;
130+
case DIME:
131+
insertDime();
132+
break;
133+
case PENNY:
134+
insertPenny();
135+
break;
136+
default:
137+
insertNickel();
138+
}
126139

140+
}
127141

128142
}

test/vending/VendingMachineTests.java

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@
55
import org.junit.Before;
66
import org.junit.Test;
77

8-
public class VendingMachineTests {
9-
8+
public class VendingMachineTest {
9+
10+
private static final Double DIME = (Double) 0.10;
11+
private static final Double NICKEL = (Double) 0.05;
12+
private static final Double PENNY = (Double) 0.01;
13+
private static final Double NO_COIN = (Double) 0.0;
14+
private static final Double QUARTER_VALUE = (Double) 0.25;
15+
1016
private VendingMachine vendingMachine;
1117

1218
@Before
@@ -16,53 +22,52 @@ public void setUp() {
1622

1723
@Test
1824
public void shouldAcceptQuarter() {
19-
vendingMachine.insertQuarter();
25+
26+
vendingMachine.insert(Coin.QUARTER);
2027

21-
assertEquals((Double) 0.25, vendingMachine.getCurrentAmount());
28+
assertEquals(QUARTER_VALUE, vendingMachine.getCurrentAmount());
2229
}
2330

2431
@Test
2532
public void shouldResetCurrentAmountEqualToZeroWhenReturnCoinsIsPressed() {
26-
vendingMachine.setCurrentAmount(0.25);
33+
34+
vendingMachine.setCurrentAmount(QUARTER_VALUE);
2735

2836
vendingMachine.returnCoins();
2937

30-
assertEquals((Double) 0.0, vendingMachine.getCurrentAmount());
38+
assertEquals(NO_COIN, vendingMachine.getCurrentAmount());
3139
}
3240

3341
@Test
3442
public void shouldNotAcceptPenny() {
35-
vendingMachine.insertQuarter();
36-
37-
vendingMachine.insertPenny();
43+
vendingMachine.insert(Coin.PENNY);
3844

39-
assertEquals((Double) 0.25, vendingMachine.getCurrentAmount());
40-
assertEquals((Double) 0.01, vendingMachine.getCoinReturnAmount());
45+
assertEquals(PENNY, vendingMachine.getCoinReturnAmount());
4146
}
4247

4348
@Test
4449
public void shouldAcceptNickel() {
45-
vendingMachine.insertNickel();
50+
vendingMachine.insert(Coin.NICKEL);
4651

47-
assertEquals((Double) 0.05, vendingMachine.getCurrentAmount());
52+
assertEquals(NICKEL, vendingMachine.getCurrentAmount());
4853
}
4954

5055
@Test
5156
public void shouldAcceptDime() {
52-
vendingMachine.insertDime();
57+
vendingMachine.insert(Coin.DIME);
5358

54-
assertEquals((Double) 0.10, vendingMachine.getCurrentAmount());
59+
assertEquals(DIME, vendingMachine.getCurrentAmount());
5560
}
5661

5762
@Test
5863
public void pressingCoinReturnShouldReturnExactCoinsInserted() {
5964
insertFiftyCentsInQuarters();
60-
vendingMachine.insertNickel();
65+
vendingMachine.insert(Coin.NICKEL);
6166

6267
ArrayList<Double> expectedCoinList = new ArrayList<Double>();
63-
expectedCoinList.add((Double) 0.25);
64-
expectedCoinList.add((Double) 0.25);
65-
expectedCoinList.add((Double) 0.05);
68+
expectedCoinList.add(QUARTER_VALUE);
69+
expectedCoinList.add(QUARTER_VALUE);
70+
expectedCoinList.add(NICKEL);
6671

6772
assertEquals(expectedCoinList, vendingMachine.returnCoins());
6873
}
@@ -71,13 +76,13 @@ public void pressingCoinReturnShouldReturnExactCoinsInserted() {
7176
public void returnCoinSlotShouldHoldAllCoinsReturned() {
7277
vendingMachine.insertPenny();
7378
insertFiftyCentsInQuarters();
74-
vendingMachine.insertNickel();
79+
vendingMachine.insert(Coin.NICKEL);
7580

7681
ArrayList<Double> expectedCoinList = new ArrayList<Double>();
77-
expectedCoinList.add((Double) 0.01);
78-
expectedCoinList.add((Double) 0.25);
79-
expectedCoinList.add((Double) 0.25);
80-
expectedCoinList.add((Double) 0.05);
82+
expectedCoinList.add(PENNY);
83+
expectedCoinList.add(QUARTER_VALUE);
84+
expectedCoinList.add(QUARTER_VALUE);
85+
expectedCoinList.add(NICKEL);
8186

8287
vendingMachine.returnCoins();
8388

@@ -88,17 +93,17 @@ public void returnCoinSlotShouldHoldAllCoinsReturned() {
8893
public void currentAmountShouldContinueToSumAllChangePutInMachine() {
8994
vendingMachine.insertPenny();
9095
insertFiftyCentsInQuarters();
91-
vendingMachine.insertNickel();
96+
vendingMachine.insert(Coin.NICKEL);
9297

9398
assertEquals((Double) 0.55, vendingMachine.getCurrentAmount());
9499
}
95100

96101
@Test
97102
public void displayShouldShowAmountOfCurrencyInsertedIntoMachine() {
98103
insertDollarInQuarters();
99-
vendingMachine.insertDime();
100-
vendingMachine.insertDime();
101-
vendingMachine.insertNickel();
104+
vendingMachine.insert(Coin.DIME);
105+
vendingMachine.insert(Coin.DIME);
106+
vendingMachine.insert(Coin.NICKEL);
102107

103108
assertEquals("$1.25", vendingMachine.getDisplay());
104109
}
@@ -164,9 +169,8 @@ public void itemBinShouldHoldCandyWhenCandyButtonIsPressed() {
164169

165170
@Test
166171
public void vendingMachineShouldNotVendCandyIfChangeIsInsufficent() {
167-
VendingMachine vendingMachine = new VendingMachine();
168-
vendingMachine.insertQuarter();
169-
vendingMachine.insertNickel();
172+
vendingMachine.insert(Coin.QUARTER);
173+
vendingMachine.insert(Coin.NICKEL);
170174

171175
ArrayList<String> expectedItemBinList = new ArrayList<String>();
172176

@@ -180,7 +184,7 @@ public void itemBinShouldHoldCandySodaChipsIfAllArePressed() {
180184
insertDollarInQuarters();
181185
insertDollarInQuarters();
182186
insertDollarInQuarters();
183-
vendingMachine.insertQuarter();
187+
vendingMachine.insert(Coin.QUARTER);
184188

185189
ArrayList<String> expectedItemBinList = new ArrayList<String>();
186190
expectedItemBinList.add("Candy");
@@ -202,7 +206,7 @@ public void machineShouldMakeChangeIfTooMuchMoneyPaidForSoda() {
202206
vendingMachine.sodaButton();
203207
vendingMachine.returnCoins();
204208

205-
assertEquals((Double) 0.25, vendingMachine.getCoinReturnAmount());
209+
assertEquals(QUARTER_VALUE, vendingMachine.getCoinReturnAmount());
206210
}
207211

208212
private void insertDollarInQuarters() {
@@ -211,7 +215,7 @@ private void insertDollarInQuarters() {
211215
}
212216

213217
private void insertFiftyCentsInQuarters() {
214-
vendingMachine.insertQuarter();
215-
vendingMachine.insertQuarter();
218+
vendingMachine.insert(Coin.QUARTER);
219+
vendingMachine.insert(Coin.QUARTER);
216220
}
217221
}

0 commit comments

Comments
 (0)