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

ljacqu / wordeval / 14540577447

18 Apr 2025 07:23PM UTC coverage: 51.439% (-6.2%) from 57.611%
14540577447

push

github

ljacqu
Remove EvaluationResult type param from all Evaluator interfaces

239 of 546 branches covered (43.77%)

16 of 17 new or added lines in 16 files covered. (94.12%)

193 existing lines in 17 files now uncovered.

679 of 1320 relevant lines covered (51.44%)

3.0 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.processing.AllWordsEvaluatorProvider;
5
import ch.jalu.wordeval.evaluators.result.WordWithKey;
6
import ch.jalu.wordeval.evaluators.result.WordWithScore;
7
import ch.jalu.wordeval.language.LetterType;
8
import com.google.common.collect.ArrayListMultimap;
9
import com.google.common.collect.ListMultimap;
10
import lombok.AllArgsConstructor;
11

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

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

25
  private final LetterType letterType;
26
  private final List<WordWithScore> results = new ArrayList<>();
27

28
  @Override
29
  public void evaluate(AllWordsEvaluatorProvider allWordsEvaluatorProvider) {
30
    VowelCount vowelCountEvaluator = allWordsEvaluatorProvider.getEvaluator(VowelCount.class,
×
UNCOV
31
        vowelCount -> vowelCount.getLetterType() == letterType);
×
32

33
    List<WordWithKey> vowelCountResults = vowelCountEvaluator.getResults();
×
34

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

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

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

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

UNCOV
64
    return filteredResults;
×
65
  }
66

67
  @Override
68
  public String getId() {
UNCOV
69
    return switch (letterType) {
×
UNCOV
70
      case VOWELS -> "SingleVowel";
×
UNCOV
71
      case CONSONANTS -> "SingleConsonant";
×
72
    };
73
  }
74
}
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