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

ljacqu / wordeval / 14552398690

19 Apr 2025 07:59PM UTC coverage: 52.924% (+2.3%) from 50.591%
14552398690

push

github

ljacqu
Write sanitizer tests that don't require the dictionary file

268 of 576 branches covered (46.53%)

1 of 2 new or added lines in 1 file covered. (50.0%)

36 existing lines in 9 files now uncovered.

724 of 1368 relevant lines covered (52.92%)

3.06 hits per line

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

32.26
/src/main/java/ch/jalu/wordeval/evaluators/impl/DiacriticHomonyms.java
1
package ch.jalu.wordeval.evaluators.impl;
2

3
import ch.jalu.wordeval.dictionary.Word;
4
import ch.jalu.wordeval.evaluators.AllWordsEvaluator;
5
import ch.jalu.wordeval.evaluators.export.EvaluatorExportUtil;
6
import ch.jalu.wordeval.evaluators.result.WordGroupWithKey;
7
import com.google.common.collect.HashMultimap;
8
import com.google.common.collect.ListMultimap;
9
import com.google.common.collect.Multimaps;
10
import com.google.common.collect.SetMultimap;
11
import lombok.Getter;
12

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

20
/**
21
 * Groups words which only differ in diacritics which are not considered
22
 * distinct letters in the language, such as {des, dés, dès} in French or
23
 * {schon, schön} in German.
24
 */
25
public class DiacriticHomonyms implements AllWordsEvaluator {
2✔
26

27
  @Getter
6✔
28
  private final List<WordGroupWithKey> results = new ArrayList<>();
29

30
  @Override
31
  public void evaluate(Collection<Word> words) {
32
    SetMultimap<String, Word> wordsByNoAccentRep = words.stream()
5✔
33
      .collect(Multimaps.toMultimap(
4✔
34
        Word::getWithoutAccents,
35
        word -> word,
2✔
36
        HashMultimap::create));
37

38
    Multimaps.asMap(wordsByNoAccentRep).forEach((wordRep, wordsInGroup) -> {
5✔
39
      if (wordsInGroup.size() > 1) {
4✔
40
        results.add(new WordGroupWithKey(wordsInGroup, wordRep));
9✔
41
      }
42
    });
1✔
43
  }
1✔
44

45
  @Override
46
  public String getId() {
47
    return "group.homonymsByDiacritic";
×
48
  }
49

50
  @Override
51
  public ListMultimap<Object, Object> getTopResults(int topScores, int maxLimit) {
52
    Comparator<WordGroupWithKey> comparator = Comparator.comparingInt((WordGroupWithKey group) -> group.getWords().size())
×
53
        .thenComparing(group -> group.getKey().length())
×
UNCOV
54
        .reversed(); // todo: unit test
×
55

56
    List<WordGroupWithKey> sortedResult = results.stream()
×
57
        .sorted(comparator)
×
58
        .toList();
×
59

60
    Set<Integer> uniqueValues = new HashSet<>();
×
UNCOV
61
    ListMultimap<Object, Object> filteredResults = EvaluatorExportUtil.newListMultimap();
×
62
    for (WordGroupWithKey wordGroup : sortedResult) {
×
63
      int score = wordGroup.getWords().size();
×
64
      if (uniqueValues.add(score) && uniqueValues.size() > topScores) {
×
65
        break;
×
66
      }
67
      List<String> wordList = wordGroup.getWords().stream()
×
UNCOV
68
          .map(Word::getRaw)
×
69
          .toList();
×
UNCOV
70
      filteredResults.put(score, wordList);
×
71
      if (filteredResults.size() >= maxLimit) {
×
UNCOV
72
        break;
×
73
      }
UNCOV
74
    }
×
75

UNCOV
76
    return filteredResults;
×
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