|
1
|
|
package edu.ucsb.cs156.happiercows.strategies; |
|
2
|
|
|
|
3
|
|
import edu.ucsb.cs156.happiercows.entities.Commons; |
|
4
|
|
import edu.ucsb.cs156.happiercows.entities.UserCommons; |
|
5
|
|
import lombok.AllArgsConstructor; |
|
6
|
|
import lombok.Getter; |
|
7
|
|
|
|
8
|
|
/** |
|
9
|
|
* The CowHealthUpdateStrategies enum provides a variety of strategies for updating cow health. |
|
10
|
|
* |
|
11
|
|
* For information on Java enum's, see the Oracle Java Tutorial on <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html">Enum Types</a>, |
|
12
|
|
* which are far more powerful in Java than enums in most other languages. |
|
13
|
|
*/ |
|
14
|
|
|
|
15
|
|
@Getter |
|
16
|
|
@AllArgsConstructor |
|
17
|
|
public enum CowHealthUpdateStrategies implements CowHealthUpdateStrategy { |
|
18
|
|
|
|
19
|
|
Linear("Linear", "Cow health increases/decreases proportionally to the number of cows over/under the carrying capacity.") { |
|
20
|
|
@Override |
|
21
|
|
public double calculateNewCowHealth(Commons commons, UserCommons user, int totalCows) { |
|
22
|
4
1. calculateNewCowHealth : Replaced integer subtraction with addition → KILLED
2. calculateNewCowHealth : Replaced double multiplication with division → KILLED
3. calculateNewCowHealth : Replaced double subtraction with addition → KILLED
4. calculateNewCowHealth : replaced double return with 0.0d for edu/ucsb/cs156/happiercows/strategies/CowHealthUpdateStrategies$1::calculateNewCowHealth → KILLED
|
return user.getCowHealth() - (totalCows - commons.getCarryingCapacity()) * commons.getDegradationRate(); |
|
23
|
|
} |
|
24
|
|
}, |
|
25
|
|
Constant("Constant", "Cow health changes increases/decreases by the degradation rate, depending on if the number of cows exceeds the carrying capacity.") { |
|
26
|
|
@Override |
|
27
|
|
public double calculateNewCowHealth(Commons commons, UserCommons user, int totalCows) { |
|
28
|
2
1. calculateNewCowHealth : changed conditional boundary → KILLED
2. calculateNewCowHealth : negated conditional → KILLED
|
if (totalCows <= commons.getCarryingCapacity()) { |
|
29
|
2
1. calculateNewCowHealth : Replaced double addition with subtraction → KILLED
2. calculateNewCowHealth : replaced double return with 0.0d for edu/ucsb/cs156/happiercows/strategies/CowHealthUpdateStrategies$2::calculateNewCowHealth → KILLED
|
return user.getCowHealth() + commons.getDegradationRate(); |
|
30
|
|
} else { |
|
31
|
2
1. calculateNewCowHealth : Replaced double subtraction with addition → KILLED
2. calculateNewCowHealth : replaced double return with 0.0d for edu/ucsb/cs156/happiercows/strategies/CowHealthUpdateStrategies$2::calculateNewCowHealth → KILLED
|
return user.getCowHealth() - commons.getDegradationRate(); |
|
32
|
|
} |
|
33
|
|
} |
|
34
|
|
}, |
|
35
|
|
Noop("Do nothing", "Cow health does not change.") { |
|
36
|
|
@Override |
|
37
|
|
public double calculateNewCowHealth(Commons commons, UserCommons user, int totalCows) { |
|
38
|
1
1. calculateNewCowHealth : replaced double return with 0.0d for edu/ucsb/cs156/happiercows/strategies/CowHealthUpdateStrategies$3::calculateNewCowHealth → KILLED
|
return user.getCowHealth(); |
|
39
|
|
} |
|
40
|
|
}; |
|
41
|
|
|
|
42
|
|
private final String displayName; |
|
43
|
|
private final String description; |
|
44
|
|
|
|
45
|
|
public final static CowHealthUpdateStrategies DEFAULT_ABOVE_CAPACITY = Linear; |
|
46
|
|
public final static CowHealthUpdateStrategies DEFAULT_BELOW_CAPACITY = Constant; |
|
47
|
|
} |
| | Mutations |
| 22 |
|
1.1 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:linear_updates_health_proportional_to_num_cows_over_capacity()] Replaced integer subtraction with addition → KILLED 2.2 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:linear_updates_health_proportional_to_num_cows_over_capacity()] Replaced double multiplication with division → KILLED 3.3 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:linear_updates_health_proportional_to_num_cows_over_capacity()] Replaced double subtraction with addition → KILLED 4.4 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:linear_updates_health_proportional_to_num_cows_over_capacity()] replaced double return with 0.0d for edu/ucsb/cs156/happiercows/strategies/CowHealthUpdateStrategies$1::calculateNewCowHealth → KILLED
|
| 28 |
|
1.1 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:constant_changes_by_constant_amount()] changed conditional boundary → KILLED 2.2 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:constant_changes_by_constant_amount()] negated conditional → KILLED
|
| 29 |
|
1.1 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:constant_changes_by_constant_amount()] Replaced double addition with subtraction → KILLED 2.2 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:constant_changes_by_constant_amount()] replaced double return with 0.0d for edu/ucsb/cs156/happiercows/strategies/CowHealthUpdateStrategies$2::calculateNewCowHealth → KILLED
|
| 31 |
|
1.1 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:constant_changes_by_constant_amount()] Replaced double subtraction with addition → KILLED 2.2 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:constant_changes_by_constant_amount()] replaced double return with 0.0d for edu/ucsb/cs156/happiercows/strategies/CowHealthUpdateStrategies$2::calculateNewCowHealth → KILLED
|
| 38 |
|
1.1 Location : calculateNewCowHealth Killed by : edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.happiercows.strategies.CowHealthUpdateStrategyTests]/[method:noop_does_nothing()] replaced double return with 0.0d for edu/ucsb/cs156/happiercows/strategies/CowHealthUpdateStrategies$3::calculateNewCowHealth → KILLED
|