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

ljacqu / wordeval / 14560448446

20 Apr 2025 02:30PM UTC coverage: 55.102% (+1.4%) from 53.745%
14560448446

push

github

ljacqu
Springify processing of evaluators

291 of 596 branches covered (48.83%)

51 of 63 new or added lines in 8 files covered. (80.95%)

57 existing lines in 6 files now uncovered.

756 of 1372 relevant lines covered (55.1%)

3.13 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

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

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

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

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

35
    List<WordWithKey> vowelCountResults = vowelCountEvaluator.getResults();
×
36

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

43
    vowelCountResults.stream()
×
44
        .filter(e -> e.getKey().length() == min)
×
45
        .forEach(e -> this.results.add(new WordWithScore(e.getWord(), e.getWord().getLowercase().length())));
×
46
  }
×
47

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

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

66
    return filteredResults;
×
67
  }
68

69
  @Override
70
  public String getId() {
71
    return switch (letterType) {
×
72
      case VOWELS -> "vowels.single";
×
73
      case CONSONANTS -> "consonants.single";
×
74
    };
75
  }
76
}
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