• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ljacqu / wordeval / 14562498097

20 Apr 2025 07:08PM UTC coverage: 54.64% (-0.6%) from 55.233%
14562498097

push

github

ljacqu
Create tests for appData, prevent AppData from being initialized directly

270 of 570 branches covered (47.37%)

8 of 9 new or added lines in 3 files covered. (88.89%)

26 existing lines in 5 files now uncovered.

736 of 1347 relevant lines covered (54.64%)

3.24 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/ch/jalu/wordeval/evaluators/impl/SingleVowel.java
1
package ch.jalu.wordeval.evaluators.impl;
2

3
import ch.jalu.wordeval.evaluators.PostEvaluator;
4
import ch.jalu.wordeval.evaluators.export.EvaluatorExportUtil;
5
import ch.jalu.wordeval.evaluators.processing.EvaluatorCollection;
6
import ch.jalu.wordeval.evaluators.result.WordWithKey;
7
import ch.jalu.wordeval.evaluators.result.WordWithScore;
8
import ch.jalu.wordeval.language.LetterType;
9
import com.google.common.collect.ListMultimap;
10
import lombok.AllArgsConstructor;
11
import lombok.Getter;
12
import lombok.ToString;
13

14
import java.util.ArrayList;
15
import java.util.Comparator;
16
import java.util.HashSet;
17
import java.util.List;
18
import java.util.Set;
19

20
/**
21
 * Evaluator collecting words which only have one distinct vowel or consonant,
22
 * such as "abracadabra," which only uses the vowel 'a'.
23
 */
24
@AllArgsConstructor
25
@ToString(of = "letterType")
26
public class SingleVowel implements PostEvaluator {
27

28
  @Getter
29
  private final LetterType letterType;
30
  private final List<WordWithScore> results = new ArrayList<>();
31

32
  @Override
33
  public void evaluate(EvaluatorCollection evaluators) {
UNCOV
34
    VowelCount vowelCountEvaluator = evaluators.getWordEvaluatorOrThrow(VowelCount.class,
×
35
        vowelCount -> vowelCount.getLetterType() == letterType);
×
36

37
    List<WordWithKey> vowelCountResults = vowelCountEvaluator.getResults();
×
38

39
    int min = vowelCountResults.stream()
×
40
        .mapToInt(e -> e.key().length())
×
41
        .filter(len -> len > 0)
×
UNCOV
42
        .min()
×
43
        .orElseThrow(() -> new IllegalStateException("Could not get minimum - no words with letter type?"));
×
44

45
    vowelCountResults.stream()
×
46
        .filter(e -> e.key().length() == min)
×
UNCOV
47
        .forEach(e -> this.results.add(new WordWithScore(e.word(), e.word().getLowercase().length())));
×
UNCOV
48
  }
×
49

50
  @Override
51
  public ListMultimap<Object, Object> getTopResults(int topScores, int maxLimit) {
52
    List<WordWithScore> sortedResult = results.stream()
×
UNCOV
53
        .sorted(Comparator.comparing(WordWithScore::score).reversed())
×
54
        .toList();
×
55

56
    Set<Double> uniqueValues = new HashSet<>();
×
57
    ListMultimap<Object, Object> filteredResults = EvaluatorExportUtil.newListMultimap();
×
58
    for (WordWithScore wordWithScore : sortedResult) {
×
UNCOV
59
      if (uniqueValues.add(wordWithScore.score()) && uniqueValues.size() > topScores) {
×
60
        break;
×
61
      }
62
      filteredResults.put((int) wordWithScore.score(), wordWithScore.word().getRaw());
×
UNCOV
63
      if (filteredResults.size() >= maxLimit) {
×
64
        break;
×
65
      }
66
    }
×
67

UNCOV
68
    return filteredResults;
×
69
  }
70

71
  @Override
72
  public String getId() {
73
    return switch (letterType) {
×
UNCOV
74
      case VOWELS -> "vowels.single";
×
UNCOV
75
      case CONSONANTS -> "consonants.single";
×
76
    };
77
  }
78
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc