|
1
|
|
package com.takenoko.asset; |
|
2
|
|
|
|
3
|
|
import com.takenoko.layers.tile.ImprovementType; |
|
4
|
|
import java.util.HashMap; |
|
5
|
|
import java.util.Objects; |
|
6
|
|
import java.util.stream.Collectors; |
|
7
|
|
|
|
8
|
|
/** The deck containing all the improvement chips you can place on the tiles. */ |
|
9
|
|
public class ImprovementDeck extends HashMap<ImprovementType, Integer> { |
|
10
|
|
private static final int DEFAULT_IMPROVEMENT_COUNT = 3; |
|
11
|
|
private ImprovementType lastDrawnImprovement; |
|
12
|
|
|
|
13
|
|
public ImprovementDeck() { |
|
14
|
|
for (ImprovementType improvementType : ImprovementType.values()) { |
|
15
|
|
this.put(improvementType, DEFAULT_IMPROVEMENT_COUNT); |
|
16
|
|
} |
|
17
|
|
} |
|
18
|
|
|
|
19
|
|
/** |
|
20
|
|
* @param improvementType what improvement type you choose to draw |
|
21
|
|
* @return the improvement type you choose to draw |
|
22
|
|
*/ |
|
23
|
|
public ImprovementType draw(ImprovementType improvementType) { |
|
24
|
2
1. draw : changed conditional boundary → KILLED
2. draw : negated conditional → KILLED
|
if (this.get(improvementType) > 0) { |
|
25
|
1
1. draw : Replaced integer subtraction with addition → KILLED
|
this.put(improvementType, this.get(improvementType) - 1); |
|
26
|
|
lastDrawnImprovement = improvementType; |
|
27
|
1
1. draw : replaced return value with null for com/takenoko/asset/ImprovementDeck::draw → KILLED
|
return improvementType; |
|
28
|
|
} |
|
29
|
|
|
|
30
|
|
throw new IllegalArgumentException("No more improvement of type " + improvementType); |
|
31
|
|
} |
|
32
|
|
|
|
33
|
|
/** |
|
34
|
|
* @param improvementType the improvement type you want to know if available |
|
35
|
|
* @return true if the improvement type is available, false otherwise |
|
36
|
|
*/ |
|
37
|
|
public boolean hasImprovement(ImprovementType improvementType) { |
|
38
|
4
1. hasImprovement : changed conditional boundary → KILLED
2. hasImprovement : negated conditional → KILLED
3. hasImprovement : negated conditional → KILLED
4. hasImprovement : replaced boolean return with true for com/takenoko/asset/ImprovementDeck::hasImprovement → KILLED
|
return this.containsKey(improvementType) && this.get(improvementType) > 0; |
|
39
|
|
} |
|
40
|
|
|
|
41
|
|
@Override |
|
42
|
|
public boolean equals(Object o) { |
|
43
|
2
1. equals : negated conditional → KILLED
2. equals : replaced boolean return with false for com/takenoko/asset/ImprovementDeck::equals → KILLED
|
if (this == o) return true; |
|
44
|
3
1. equals : negated conditional → KILLED
2. equals : negated conditional → KILLED
3. equals : replaced boolean return with true for com/takenoko/asset/ImprovementDeck::equals → KILLED
|
if (o == null || getClass() != o.getClass()) return false; |
|
45
|
2
1. equals : negated conditional → KILLED
2. equals : replaced boolean return with true for com/takenoko/asset/ImprovementDeck::equals → KILLED
|
if (!super.equals(o)) return false; |
|
46
|
|
ImprovementDeck that = (ImprovementDeck) o; |
|
47
|
2
1. equals : replaced boolean return with true for com/takenoko/asset/ImprovementDeck::equals → SURVIVED
2. equals : negated conditional → KILLED
|
return lastDrawnImprovement == that.lastDrawnImprovement; |
|
48
|
|
} |
|
49
|
|
|
|
50
|
|
@Override |
|
51
|
|
public int hashCode() { |
|
52
|
1
1. hashCode : replaced int return with 0 for com/takenoko/asset/ImprovementDeck::hashCode → KILLED
|
return Objects.hash(super.hashCode(), lastDrawnImprovement); |
|
53
|
|
} |
|
54
|
|
|
|
55
|
|
public ImprovementType peek() { |
|
56
|
1
1. peek : replaced return value with null for com/takenoko/asset/ImprovementDeck::peek → TIMED_OUT
|
return lastDrawnImprovement; |
|
57
|
|
} |
|
58
|
|
|
|
59
|
|
@Override |
|
60
|
|
public String toString() { |
|
61
|
1
1. toString : replaced return value with "" for com/takenoko/asset/ImprovementDeck::toString → NO_COVERAGE
|
return "ImprovementDeck{" |
|
62
|
|
+ this.entrySet().stream() |
|
63
|
1
1. lambda$toString$0 : replaced return value with "" for com/takenoko/asset/ImprovementDeck::lambda$toString$0 → NO_COVERAGE
|
.map(o -> o.getKey() + "(" + o.getValue() + ")") |
|
64
|
|
.collect(Collectors.joining(", ")) |
|
65
|
|
+ "}"; |
|
66
|
|
} |
|
67
|
|
} |
| | Mutations |
| 24 |
|
1.1 Location : draw Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestDraw]/[method:draw_WhenImprovementIsExhausted_ThenAnExceptionIsThrown()] changed conditional boundary → KILLED 2.2 Location : draw Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestHasImprovement]/[method:hasImprovement_WhenImprovementIsDrawn_ThenItIsRemovedFromTheDeck()] negated conditional → KILLED
|
| 25 |
|
1.1 Location : draw Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestDraw]/[method:draw_WhenImprovementIsDrawn_ThenItIsRemovedFromTheDeck()] Replaced integer subtraction with addition → KILLED
|
| 27 |
|
1.1 Location : draw Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestDraw]/[method:draw_WhenImprovementIsDrawn_ThenItIsRemovedFromTheDeck()] replaced return value with null for com/takenoko/asset/ImprovementDeck::draw → KILLED
|
| 38 |
|
1.1 Location : hasImprovement Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestHasImprovement]/[method:hasImprovement_WhenDeckRunsOutOfImprovement_ThenReturnsFalse()] changed conditional boundary → KILLED 2.2 Location : hasImprovement Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestHasImprovement]/[method:hasImprovement_WhenImprovementIsDrawn_ThenItIsRemovedFromTheDeck()] negated conditional → KILLED 3.3 Location : hasImprovement Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestHasImprovement]/[method:hasImprovement_WhenImprovementIsDrawn_ThenItIsRemovedFromTheDeck()] negated conditional → KILLED 4.4 Location : hasImprovement Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestHasImprovement]/[method:hasImprovement_WhenDeckRunsOutOfImprovement_ThenReturnsFalse()] replaced boolean return with true for com/takenoko/asset/ImprovementDeck::hasImprovement → KILLED
|
| 43 |
|
1.1 Location : equals Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestEquals]/[method:equals_WhenCalledOnDifferentObject_ThenReturnsFalse()] negated conditional → KILLED 2.2 Location : equals Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestEquals]/[method:equals_WhenCalledOnSelf_ThenReturnsTrue()] replaced boolean return with false for com/takenoko/asset/ImprovementDeck::equals → KILLED
|
| 44 |
|
1.1 Location : equals Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestEquals]/[method:equals_WhenTwoDecksAreInstantiated_ThenTheyAreEquals()] negated conditional → KILLED 2.2 Location : equals Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestEquals]/[method:equals_WhenTwoDecksAreInstantiated_ThenTheyAreEquals()] negated conditional → KILLED 3.3 Location : equals Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestEquals]/[method:equals_WhenCalledOnDifferentObject_ThenReturnsFalse()] replaced boolean return with true for com/takenoko/asset/ImprovementDeck::equals → KILLED
|
| 45 |
|
1.1 Location : equals Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestEquals]/[method:equals_WhenTwoDecksAreInstantiated_ThenTheyAreEquals()] negated conditional → KILLED 2.2 Location : equals Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestEquals]/[method:equals_WhenTwoDecksAreDifferent_ThenTheyAreNotEquals()] replaced boolean return with true for com/takenoko/asset/ImprovementDeck::equals → KILLED
|
| 47 |
|
1.1 Location : equals Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestEquals]/[method:equals_WhenTwoDecksAreInstantiated_ThenTheyAreEquals()] negated conditional → KILLED 2.2 Location : equals Killed by : none replaced boolean return with true for com/takenoko/asset/ImprovementDeck::equals → SURVIVED
|
| 52 |
|
1.1 Location : hashCode Killed by : com.takenoko.asset.ImprovementDeckTest.[engine:junit-jupiter]/[class:com.takenoko.asset.ImprovementDeckTest]/[nested-class:TestHashCode]/[method:hashCode_WhenTwoDecksAreDifferent_ThenTheyHaveDifferentHashcode()] replaced int return with 0 for com/takenoko/asset/ImprovementDeck::hashCode → KILLED
|
| 56 |
|
1.1 Location : peek Killed by : none replaced return value with null for com/takenoko/asset/ImprovementDeck::peek → TIMED_OUT
|
| 61 |
|
1.1 Location : toString Killed by : none replaced return value with "" for com/takenoko/asset/ImprovementDeck::toString → NO_COVERAGE
|
| 63 |
|
1.1 Location : lambda$toString$0 Killed by : none replaced return value with "" for com/takenoko/asset/ImprovementDeck::lambda$toString$0 → NO_COVERAGE
|