UCSBAPIQuarterService.java

1
package edu.ucsb.cs156.courses.services;
2
3
import com.fasterxml.jackson.core.type.TypeReference;
4
import com.fasterxml.jackson.databind.ObjectMapper;
5
import edu.ucsb.cs156.courses.entities.UCSBAPIQuarter;
6
import edu.ucsb.cs156.courses.models.Quarter;
7
import edu.ucsb.cs156.courses.repositories.UCSBAPIQuarterRepository;
8
import java.time.LocalDateTime;
9
import java.util.ArrayList;
10
import java.util.Arrays;
11
import java.util.List;
12
import lombok.extern.slf4j.Slf4j;
13
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.beans.factory.annotation.Value;
15
import org.springframework.boot.web.client.RestTemplateBuilder;
16
import org.springframework.http.HttpEntity;
17
import org.springframework.http.HttpHeaders;
18
import org.springframework.http.HttpMethod;
19
import org.springframework.http.HttpStatus;
20
import org.springframework.http.MediaType;
21
import org.springframework.http.ResponseEntity;
22
import org.springframework.stereotype.Service;
23
import org.springframework.web.client.RestTemplate;
24
25
/** Service object that wraps the UCSB Academic Curriculum API */
26
@Service
27
@Slf4j
28
public class UCSBAPIQuarterService {
29
30
  @Value("${app.startQtrYYYYQ:20221}")
31
  private String startQtrYYYYQ;
32
33
  private String endQtrYYYYQ;
34
35
  @Autowired private ObjectMapper objectMapper;
36
37
  @Autowired UCSBAPIQuarterRepository ucsbApiQuarterRepository;
38
39
  @Value("${app.ucsb.api.consumer_key}")
40
  private String apiKey;
41
42
  private RestTemplate restTemplate = new RestTemplate();
43
44
  public UCSBAPIQuarterService(RestTemplateBuilder restTemplateBuilder) throws Exception {
45
    restTemplate = restTemplateBuilder.build();
46
  }
47
48
  public static final String CURRENT_QUARTER_ENDPOINT =
49
      "https://api.ucsb.edu/academics/quartercalendar/v1/quarters/current";
50
51
  public static final String ALL_QUARTERS_ENDPOINT =
52
      "https://api.ucsb.edu/academics/quartercalendar/v1/quarters";
53
54
  public static final String END_QUARTER_ENDPOINT =
55
      "https://api.ucsb.edu/academics/quartercalendar/v1/quarters/end";
56
57
  public String getStartQtrYYYYQ() {
58 1 1. getStartQtrYYYYQ : replaced return value with "" for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getStartQtrYYYYQ → KILLED
    return startQtrYYYYQ;
59
  }
60
61
  public String getEndQtrYYYYQ(String currentQuarter) {
62
    Quarter quarter = new Quarter(currentQuarter);
63
    quarter.increment();
64
65 1 1. getEndQtrYYYYQ : negated conditional → KILLED
    if (quarter.getQ().equals("M")) {
66
      quarter.increment();
67
    }
68 1 1. getEndQtrYYYYQ : replaced return value with "" for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getEndQtrYYYYQ → KILLED
    return quarter.getYYYYQ();
69
  }
70
71
  public String getEndQtrYYYYQ() {
72
    try {
73 1 1. getEndQtrYYYYQ : replaced return value with "" for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getEndQtrYYYYQ → KILLED
      return getEndQtrYYYYQ(getCurrentQuarterYYYYQ());
74
    } catch (Exception e) {
75
      throw new RuntimeException("Unable to determine end quarter", e);
76
    }
77
  }
78
79
  public String getCurrentQuarterYYYYQ() throws Exception {
80
    UCSBAPIQuarter quarter = getCurrentQuarter();
81 1 1. getCurrentQuarterYYYYQ : replaced return value with "" for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getCurrentQuarterYYYYQ → KILLED
    return quarter.getQuarter();
82
  }
83
84
  public List<String> getActiveQuarterList() throws Exception {
85
    String start = getCurrentQuarterYYYYQ();
86
    String end = getEndQtrYYYYQ();
87
88
    List<Quarter> quartersInOrder = Quarter.quarterList(start, end);
89
    List<String> result = new ArrayList<String>();
90
91
    for (Quarter quarter : quartersInOrder) {
92
      result.add(quarter.getYYYYQ());
93
    }
94
95 1 1. getActiveQuarterList : replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getActiveQuarterList → KILLED
    return result;
96
  }
97
98
  public UCSBAPIQuarter getCurrentQuarter() throws Exception {
99
    HttpHeaders headers = new HttpHeaders();
100 1 1. getCurrentQuarter : removed call to org/springframework/http/HttpHeaders::setAccept → KILLED
    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
101 1 1. getCurrentQuarter : removed call to org/springframework/http/HttpHeaders::setContentType → KILLED
    headers.setContentType(MediaType.APPLICATION_JSON);
102 1 1. getCurrentQuarter : removed call to org/springframework/http/HttpHeaders::set → KILLED
    headers.set("ucsb-api-version", "1.0");
103 1 1. getCurrentQuarter : removed call to org/springframework/http/HttpHeaders::set → KILLED
    headers.set("ucsb-api-key", this.apiKey);
104
105
    HttpEntity<String> entity = new HttpEntity<>("body", headers);
106
107
    String url = CURRENT_QUARTER_ENDPOINT;
108
109
    log.info("url=" + url);
110
111
    String retVal = "";
112
    MediaType contentType = null;
113
    HttpStatus statusCode = null;
114
115
    ResponseEntity<String> re = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
116
    contentType = re.getHeaders().getContentType();
117
    statusCode = (HttpStatus) re.getStatusCode();
118
    retVal = re.getBody();
119
120
    log.info("contentType: {} statusCode: {} entity: {}", contentType, statusCode, entity);
121
    log.trace("json: {}", retVal);
122
    UCSBAPIQuarter quarter = null;
123
    quarter = objectMapper.readValue(retVal, UCSBAPIQuarter.class);
124 1 1. getCurrentQuarter : replaced return value with null for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getCurrentQuarter → KILLED
    return quarter;
125
  }
126
127
  public List<UCSBAPIQuarter> getAllQuarters() throws Exception {
128
    List<UCSBAPIQuarter> quarters = ucsbApiQuarterRepository.findAll();
129 1 1. getAllQuarters : negated conditional → KILLED
    if (quarters.isEmpty()) {
130
      quarters = this.loadAllQuarters();
131
    }
132 1 1. getAllQuarters : replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getAllQuarters → KILLED
    return quarters;
133
  }
134
135
  public List<UCSBAPIQuarter> getAllQuartersFromAPI() throws Exception {
136
    HttpHeaders headers = new HttpHeaders();
137 1 1. getAllQuartersFromAPI : removed call to org/springframework/http/HttpHeaders::setAccept → KILLED
    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
138 1 1. getAllQuartersFromAPI : removed call to org/springframework/http/HttpHeaders::setContentType → KILLED
    headers.setContentType(MediaType.APPLICATION_JSON);
139 1 1. getAllQuartersFromAPI : removed call to org/springframework/http/HttpHeaders::set → KILLED
    headers.set("ucsb-api-version", "1.0");
140 1 1. getAllQuartersFromAPI : removed call to org/springframework/http/HttpHeaders::set → KILLED
    headers.set("ucsb-api-key", this.apiKey);
141
142
    HttpEntity<String> entity = new HttpEntity<>("body", headers);
143
144
    String url = ALL_QUARTERS_ENDPOINT;
145
146
    log.info("url=" + url);
147
148
    String retVal = "";
149
    MediaType contentType = null;
150
    HttpStatus statusCode = null;
151
152
    ResponseEntity<String> re = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
153
    contentType = re.getHeaders().getContentType();
154
    statusCode = (HttpStatus) re.getStatusCode();
155
    retVal = re.getBody();
156
157
    log.info(
158
        "json: {} contentType: {} statusCode: {} entity: {}",
159
        retVal,
160
        contentType,
161
        statusCode,
162
        entity);
163
    List<UCSBAPIQuarter> quarters = null;
164
    quarters = objectMapper.readValue(retVal, new TypeReference<List<UCSBAPIQuarter>>() {});
165 1 1. getAllQuartersFromAPI : replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getAllQuartersFromAPI → KILLED
    return quarters;
166
  }
167
168
  public boolean quarterYYYYQInRange(String quarterYYYYQ) throws Exception {
169
    String endQtrYYYYQ = getEndQtrYYYYQ();
170 2 1. quarterYYYYQInRange : changed conditional boundary → KILLED
2. quarterYYYYQInRange : negated conditional → KILLED
    boolean dateGEStart = quarterYYYYQ.compareTo(startQtrYYYYQ) >= 0;
171 2 1. quarterYYYYQInRange : negated conditional → KILLED
2. quarterYYYYQInRange : changed conditional boundary → KILLED
    boolean dateLEEnd = quarterYYYYQ.compareTo(endQtrYYYYQ) <= 0;
172 3 1. quarterYYYYQInRange : negated conditional → KILLED
2. quarterYYYYQInRange : replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::quarterYYYYQInRange → KILLED
3. quarterYYYYQInRange : negated conditional → KILLED
    return (dateGEStart && dateLEEnd);
173
  }
174
175
  public List<UCSBAPIQuarter> loadAllQuarters() throws Exception {
176
    List<UCSBAPIQuarter> quarters = this.getAllQuartersFromAPI();
177
    List<UCSBAPIQuarter> savedQuarters = new ArrayList<UCSBAPIQuarter>();
178
    for (UCSBAPIQuarter quarter : quarters) {
179 1 1. loadAllQuarters : negated conditional → KILLED
      if (quarterYYYYQInRange(quarter.getQuarter())) {
180
        ucsbApiQuarterRepository.save(quarter);
181
        savedQuarters.add(quarter);
182
      }
183
    }
184
    log.info("savedQuarters.size={}", savedQuarters.size());
185 1 1. loadAllQuarters : replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::loadAllQuarters → KILLED
    return savedQuarters;
186
  }
187
188
  public List<String> getActiveQuarters() throws Exception {
189
    String currQtr = getCurrentQuarterYYYYQ();
190
    String endQtr = getEndQtrYYYYQ();
191
192 1 1. getActiveQuarters : replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getActiveQuarters → KILLED
    return getActiveQuarters(currQtr, endQtr);
193
  }
194
195
  public List<String> getActiveQuarters(String currQtr, String endQtr) {
196
    List<String> activeQuarters = new ArrayList<>();
197
198 2 1. getActiveQuarters : negated conditional → KILLED
2. getActiveQuarters : changed conditional boundary → KILLED
    if (currQtr.compareTo(endQtr) <= 0) {
199
      Quarter.quarterList(currQtr, endQtr)
200 1 1. getActiveQuarters : removed call to java/util/List::forEach → KILLED
          .forEach(quarter -> activeQuarters.add(quarter.getYYYYQ()));
201
    }
202
203 1 1. getActiveQuarters : replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getActiveQuarters → KILLED
    return activeQuarters;
204
  }
205
206
  public LocalDateTime lastDayToRegister(UCSBAPIQuarter ucsbApiQuarter) {
207 1 1. lastDayToRegister : negated conditional → KILLED
    if (ucsbApiQuarter == null) {
208
      return null;
209
    }
210
211
    LocalDateTime lastDayToAddUndergrad = ucsbApiQuarter.getLastDayToAddUnderGrad();
212
    LocalDateTime lastDayToAddGrad = ucsbApiQuarter.getLastDayToAddGrad();
213
214 2 1. lastDayToRegister : negated conditional → KILLED
2. lastDayToRegister : negated conditional → KILLED
    if (lastDayToAddUndergrad == null || lastDayToAddGrad == null) {
215
      return null;
216
    }
217
218 2 1. lastDayToRegister : replaced return value with null for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::lastDayToRegister → KILLED
2. lastDayToRegister : negated conditional → KILLED
    return lastDayToAddUndergrad.isAfter(lastDayToAddGrad)
219
        ? lastDayToAddUndergrad
220
        : lastDayToAddGrad;
221
  }
222
223
  public boolean isQuarterInRegistrationPass(String quarterYYYYQ) {
224
    UCSBAPIQuarter quarter = ucsbApiQuarterRepository.findById(quarterYYYYQ).orElse(null);
225
    LocalDateTime lastDay = lastDayToRegister(quarter);
226
227 1 1. isQuarterInRegistrationPass : negated conditional → KILLED
    if (quarter == null) {
228 1 1. isQuarterInRegistrationPass : replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::isQuarterInRegistrationPass → KILLED
      return false;
229
    }
230
231 1 1. isQuarterInRegistrationPass : negated conditional → KILLED
    if (lastDay == null) {
232 1 1. isQuarterInRegistrationPass : replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::isQuarterInRegistrationPass → KILLED
      return false;
233
    }
234
235
    LocalDateTime pass1Begin = quarter.getPass1Begin();
236
237 1 1. isQuarterInRegistrationPass : negated conditional → KILLED
    if (pass1Begin == null) {
238 1 1. isQuarterInRegistrationPass : replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::isQuarterInRegistrationPass → KILLED
      return false;
239
    }
240
241
    LocalDateTime currentDate = LocalDateTime.now();
242 3 1. isQuarterInRegistrationPass : negated conditional → KILLED
2. isQuarterInRegistrationPass : negated conditional → KILLED
3. isQuarterInRegistrationPass : replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::isQuarterInRegistrationPass → KILLED
    return currentDate.isAfter(pass1Begin) && currentDate.isBefore(lastDay);
243
  }
244
245
  public List<String> getActiveRegistrationQuarters() throws Exception {
246
247
    List<String> activeQuarters = getActiveQuarters();
248
249
    List<String> registrationQuarters =
250 2 1. lambda$getActiveRegistrationQuarters$1 : replaced boolean return with false for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::lambda$getActiveRegistrationQuarters$1 → KILLED
2. lambda$getActiveRegistrationQuarters$1 : replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::lambda$getActiveRegistrationQuarters$1 → KILLED
        activeQuarters.stream().filter(yyyyq -> isQuarterInRegistrationPass(yyyyq)).toList();
251 1 1. getActiveRegistrationQuarters : replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getActiveRegistrationQuarters → KILLED
    return registrationQuarters;
252
  }
253
}

Mutations

58

1.1
Location : getStartQtrYYYYQ
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getStartQtrYYYYQ()]
replaced return value with "" for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getStartQtrYYYYQ → KILLED

65

1.1
Location : getEndQtrYYYYQ
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getEndQtrYYYYQ_given_winter()]
negated conditional → KILLED

68

1.1
Location : getEndQtrYYYYQ
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getEndQtrYYYYQ_given_winter()]
replaced return value with "" for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getEndQtrYYYYQ → KILLED

73

1.1
Location : getEndQtrYYYYQ
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getEndQtrYYYYQ()]
replaced return value with "" for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getEndQtrYYYYQ → KILLED

81

1.1
Location : getCurrentQuarterYYYYQ
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getCurrentQuarterYYYYQ()]
replaced return value with "" for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getCurrentQuarterYYYYQ → KILLED

95

1.1
Location : getActiveQuarterList
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getActiveQuarterList()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getActiveQuarterList → KILLED

100

1.1
Location : getCurrentQuarter
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getCurrentQuarterYYYYQ()]
removed call to org/springframework/http/HttpHeaders::setAccept → KILLED

101

1.1
Location : getCurrentQuarter
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getCurrentQuarterYYYYQ()]
removed call to org/springframework/http/HttpHeaders::setContentType → KILLED

102

1.1
Location : getCurrentQuarter
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getCurrentQuarterYYYYQ()]
removed call to org/springframework/http/HttpHeaders::set → KILLED

103

1.1
Location : getCurrentQuarter
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getCurrentQuarterYYYYQ()]
removed call to org/springframework/http/HttpHeaders::set → KILLED

124

1.1
Location : getCurrentQuarter
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getCurrentQuarterYYYYQ()]
replaced return value with null for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getCurrentQuarter → KILLED

129

1.1
Location : getAllQuarters
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getAllQuarters_preloaded()]
negated conditional → KILLED

132

1.1
Location : getAllQuarters
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getAllQuarters_preloaded()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getAllQuarters → KILLED

137

1.1
Location : getAllQuartersFromAPI
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getAllQuartersFromAPI()]
removed call to org/springframework/http/HttpHeaders::setAccept → KILLED

138

1.1
Location : getAllQuartersFromAPI
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getAllQuartersFromAPI()]
removed call to org/springframework/http/HttpHeaders::setContentType → KILLED

139

1.1
Location : getAllQuartersFromAPI
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getAllQuartersFromAPI()]
removed call to org/springframework/http/HttpHeaders::set → KILLED

140

1.1
Location : getAllQuartersFromAPI
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getAllQuartersFromAPI()]
removed call to org/springframework/http/HttpHeaders::set → KILLED

165

1.1
Location : getAllQuartersFromAPI
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getAllQuartersFromAPI()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getAllQuartersFromAPI → KILLED

170

1.1
Location : quarterYYYYQInRange
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_quarterYYYYQInRange_20211_true()]
changed conditional boundary → KILLED

2.2
Location : quarterYYYYQInRange
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_quarterYYYYQInRange_20204_false()]
negated conditional → KILLED

171

1.1
Location : quarterYYYYQInRange
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_quarterYYYYQInRange_20231_false()]
negated conditional → KILLED

2.2
Location : quarterYYYYQInRange
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_quarterYYYYQInRange_20224_true()]
changed conditional boundary → KILLED

172

1.1
Location : quarterYYYYQInRange
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_quarterYYYYQInRange_20204_false()]
negated conditional → KILLED

2.2
Location : quarterYYYYQInRange
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_quarterYYYYQInRange_20204_false()]
replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::quarterYYYYQInRange → KILLED

3.3
Location : quarterYYYYQInRange
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_quarterYYYYQInRange_20231_false()]
negated conditional → KILLED

179

1.1
Location : loadAllQuarters
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getAllQuarters_empty()]
negated conditional → KILLED

185

1.1
Location : loadAllQuarters
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getAllQuarters_empty()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::loadAllQuarters → KILLED

192

1.1
Location : getActiveQuarters
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getActiveQuarters_returns_no_past_quarters()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getActiveQuarters → KILLED

198

1.1
Location : getActiveQuarters
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getActiveQuarters_returns_empty_when_current_after_end()]
negated conditional → KILLED

2.2
Location : getActiveQuarters
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getActiveQuarters_with_params_returns_one_quarter_when_current_equals_end()]
changed conditional boundary → KILLED

200

1.1
Location : getActiveQuarters
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getActiveQuarters_with_params_returns_list_when_current_before_end()]
removed call to java/util/List::forEach → KILLED

203

1.1
Location : getActiveQuarters
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getActiveQuarters_with_params_returns_list_when_current_before_end()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getActiveQuarters → KILLED

207

1.1
Location : lastDayToRegister
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_lastDayToRegister_null()]
negated conditional → KILLED

214

1.1
Location : lastDayToRegister
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_lastDayToRegister_Grad_Later()]
negated conditional → KILLED

2.2
Location : lastDayToRegister
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_lastDayToRegister_lastDayToAddGrad_null()]
negated conditional → KILLED

218

1.1
Location : lastDayToRegister
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_lastDayToRegister_Grad_Later()]
replaced return value with null for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::lastDayToRegister → KILLED

2.2
Location : lastDayToRegister
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_lastDayToRegister_Grad_Later()]
negated conditional → KILLED

227

1.1
Location : isQuarterInRegistrationPass
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_isQuarterRegistrationPass_20211_findById_returns_object_with_good_values_and_date_is_in_range()]
negated conditional → KILLED

228

1.1
Location : isQuarterInRegistrationPass
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_isQuarterRegistrationPass_findById_returns_null_then_false()]
replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::isQuarterInRegistrationPass → KILLED

231

1.1
Location : isQuarterInRegistrationPass
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_isQuarterRegistrationPass_20211_findById_returns_object_with_good_values_and_date_is_in_range()]
negated conditional → KILLED

232

1.1
Location : isQuarterInRegistrationPass
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_isQuarterRegistrationPass_findById_returns_quarter_with_null_values_then_false()]
replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::isQuarterInRegistrationPass → KILLED

237

1.1
Location : isQuarterInRegistrationPass
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_isQuarterRegistrationPass_findById_returns_quarter_with_pass1_null_returns_false()]
negated conditional → KILLED

238

1.1
Location : isQuarterInRegistrationPass
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_isQuarterRegistrationPass_findById_returns_quarter_with_pass1_null_returns_false()]
replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::isQuarterInRegistrationPass → KILLED

242

1.1
Location : isQuarterInRegistrationPass
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_isQuarterRegistrationPass_20211_findById_returns_object_with_good_values_but_date_after_last_day()]
negated conditional → KILLED

2.2
Location : isQuarterInRegistrationPass
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_isQuarterRegistrationPass_20211_findById_returns_object_with_good_values_but_date_before_pass1()]
negated conditional → KILLED

3.3
Location : isQuarterInRegistrationPass
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_isQuarterRegistrationPass_20211_findById_returns_object_with_good_values_but_date_before_pass1()]
replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::isQuarterInRegistrationPass → KILLED

250

1.1
Location : lambda$getActiveRegistrationQuarters$1
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getActiveRegistrationQuarters()]
replaced boolean return with false for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::lambda$getActiveRegistrationQuarters$1 → KILLED

2.2
Location : lambda$getActiveRegistrationQuarters$1
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getActiveRegistrationQuarters()]
replaced boolean return with true for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::lambda$getActiveRegistrationQuarters$1 → KILLED

251

1.1
Location : getActiveRegistrationQuarters
Killed by : edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests.[engine:junit-jupiter]/[class:edu.ucsb.cs156.courses.services.UCSBAPIQuarterServiceTests]/[method:test_getActiveRegistrationQuarters()]
replaced return value with Collections.emptyList for edu/ucsb/cs156/courses/services/UCSBAPIQuarterService::getActiveRegistrationQuarters → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.0