CowHealthUpdateStrategies.java

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.getEffectiveCapacity()) * 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.getEffectiveCapacity()) {
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

Active mutators

Tests examined


Report generated by PIT 1.7.3