MailJDTourDownloadDocsQualityTestsCoverage

Which source lines and branches the tests execute. Lines 91.5 %, branches 75.0 % (minimum 85 % and 72 %). main @ 399ffe3d · 21 October 2026 · pipeline 7238.

GCC Code Coverage Report


Directory: src/
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 88.9% 48 / 0 / 54
Functions: 100.0% 10 / 0 / 10
Branches: 68.2% 150 / 0 / 220

data/MessageLanguageText.cpp
Line Branch Exec Source
1 #include "MessageLanguageText.h"
2
3
1/1
✓ Branch 3 → 4 taken 192 times.
192 MessageLanguageText::MessageLanguageText(const QString &language) {
4
3/3
✓ Branch 7 → 8 taken 192 times.
✓ Branch 11 → 12 taken 192 times.
✓ Branch 12 → 13 taken 192 times.
384 const QString base = language.section(QLatin1Char('_'), 0, 0).section(QLatin1Char('-'), 0, 0).toLower();
5
6/6
✓ Branch 17 → 18 taken 27 times.
✓ Branch 17 → 21 taken 165 times.
✓ Branch 26 → 27 taken 165 times.
✓ Branch 26 → 28 taken 27 times.
✓ Branch 28 → 29 taken 27 times.
✓ Branch 28 → 30 taken 165 times.
384 m_language = base == QLatin1String("de") ? QStringLiteral("de") : QStringLiteral("en");
6
4/4
✓ Branch 31 → 32 taken 27 times.
✓ Branch 31 → 33 taken 165 times.
✓ Branch 32 → 34 taken 27 times.
✓ Branch 33 → 34 taken 165 times.
192 m_locale = german() ? QLocale(QLocale::German, QLocale::Germany) : QLocale(QLocale::English, QLocale::UnitedStates);
7 192 }
8
9 2 QString MessageLanguageText::messageLanguage(const QString &spellLanguage, const QString &uiLanguage) {
10
2/2
✓ Branch 3 → 4 taken 1 time.
✓ Branch 3 → 5 taken 1 time.
2 return spellLanguage.isEmpty() ? uiLanguage : spellLanguage;
11 }
12
13 19 QString MessageLanguageText::label(Label label) const {
14
5/11
✗ Branch 2 → 3 not taken.
✗ Branch 2 → 17 not taken.
✗ Branch 2 → 31 not taken.
✗ Branch 2 → 45 not taken.
✗ Branch 2 → 59 not taken.
✓ Branch 2 → 73 taken 4 times.
✓ Branch 2 → 87 taken 4 times.
✓ Branch 2 → 101 taken 4 times.
✓ Branch 2 → 115 taken 4 times.
✓ Branch 2 → 129 taken 3 times.
✗ Branch 2 → 143 not taken.
19 switch (label) {
15 ✗ case Label::When: return german() ? QStringLiteral("Wann") : QStringLiteral("When");
16 ✗ case Label::Where: return german() ? QStringLiteral("Wo") : QStringLiteral("Where");
17 ✗ case Label::Join: return german() ? QStringLiteral("Teilnehmen") : QStringLiteral("Join");
18 ✗ case Label::Organizer: return german() ? QStringLiteral("Organisator") : QStringLiteral("Organizer");
19 ✗ case Label::Attendees: return german() ? QStringLiteral("Teilnehmende") : QStringLiteral("Attendees");
20 4 case Label::ForwardedMessage:
21
6/6
✓ Branch 74 → 75 taken 1 time.
✓ Branch 74 → 78 taken 3 times.
✓ Branch 82 → 83 taken 3 times.
✓ Branch 82 → 84 taken 1 time.
✓ Branch 84 → 85 taken 1 time.
✓ Branch 84 → 86 taken 3 times.
8 return german() ? QStringLiteral("Weitergeleitete Nachricht") : QStringLiteral("Forwarded message");
22
6/6
✓ Branch 88 → 89 taken 1 time.
✓ Branch 88 → 92 taken 3 times.
✓ Branch 96 → 97 taken 3 times.
✓ Branch 96 → 98 taken 1 time.
✓ Branch 98 → 99 taken 1 time.
✓ Branch 98 → 100 taken 3 times.
8 case Label::From: return german() ? QStringLiteral("Von") : QStringLiteral("From");
23
6/6
✓ Branch 102 → 103 taken 1 time.
✓ Branch 102 → 106 taken 3 times.
✓ Branch 110 → 111 taken 3 times.
✓ Branch 110 → 112 taken 1 time.
✓ Branch 112 → 113 taken 1 time.
✓ Branch 112 → 114 taken 3 times.
8 case Label::Date: return german() ? QStringLiteral("Datum") : QStringLiteral("Date");
24
6/6
✓ Branch 116 → 117 taken 1 time.
✓ Branch 116 → 120 taken 3 times.
✓ Branch 124 → 125 taken 3 times.
✓ Branch 124 → 126 taken 1 time.
✓ Branch 126 → 127 taken 1 time.
✓ Branch 126 → 128 taken 3 times.
8 case Label::Subject: return german() ? QStringLiteral("Betreff") : QStringLiteral("Subject");
25
3/6
✗ Branch 130 → 131 not taken.
✓ Branch 130 → 134 taken 3 times.
✓ Branch 138 → 139 taken 3 times.
✗ Branch 138 → 140 not taken.
✗ Branch 140 → 141 not taken.
✓ Branch 140 → 142 taken 3 times.
6 case Label::To: return german() ? QStringLiteral("An") : QStringLiteral("To");
26 }
27 ✗ return {};
28 }
29
30 36 QString MessageLanguageText::dateTime(const QDateTime &when) const {
31
1/1
✓ Branch 2 → 3 taken 36 times.
36 const QDateTime local = when.toLocalTime();
32
2/6
✓ Branch 20 → 21 taken 6 times.
✓ Branch 20 → 22 taken 30 times.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 35 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 39 not taken.
78 return german() ? m_locale.toString(local, QStringLiteral("dd.MM.yyyy 'um' HH:mm"))
33
10/14
✓ Branch 4 → 5 taken 6 times.
✓ Branch 4 → 9 taken 30 times.
✓ Branch 8 → 13 taken 6 times.
✓ Branch 12 → 13 taken 30 times.
✓ Branch 14 → 15 taken 30 times.
✓ Branch 14 → 16 taken 6 times.
✓ Branch 16 → 17 taken 30 times.
✓ Branch 16 → 18 taken 6 times.
✓ Branch 18 → 19 taken 6 times.
✓ Branch 18 → 20 taken 30 times.
✗ Branch 25 → 26 not taken.
✗ Branch 25 → 27 not taken.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 31 not taken.
144 : m_locale.toString(local, QStringLiteral("ddd, d MMM yyyy 'at' HH:mm"));
34 36 }
35
36 32 QString MessageLanguageText::attribution(const QDateTime &when, const QString &author) const {
37
4/10
✓ Branch 23 → 24 taken 5 times.
✓ Branch 23 → 25 taken 27 times.
✓ Branch 25 → 26 taken 5 times.
✓ Branch 25 → 27 taken 27 times.
✗ Branch 41 → 42 not taken.
✗ Branch 41 → 43 not taken.
✗ Branch 45 → 46 not taken.
✗ Branch 45 → 47 not taken.
✗ Branch 49 → 50 not taken.
✗ Branch 49 → 51 not taken.
69 return german() ? QStringLiteral("Am %1 schrieb %2:").arg(dateTime(when), author)
38
14/20
✓ Branch 3 → 4 taken 5 times.
✓ Branch 3 → 9 taken 27 times.
✓ Branch 7 → 8 taken 5 times.
✓ Branch 8 → 14 taken 5 times.
✓ Branch 12 → 13 taken 27 times.
✓ Branch 13 → 14 taken 27 times.
✓ Branch 15 → 16 taken 27 times.
✓ Branch 15 → 17 taken 5 times.
✓ Branch 17 → 18 taken 27 times.
✓ Branch 17 → 19 taken 5 times.
✓ Branch 19 → 20 taken 27 times.
✓ Branch 19 → 21 taken 5 times.
✓ Branch 21 → 22 taken 5 times.
✓ Branch 21 → 23 taken 27 times.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 31 not taken.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 35 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 39 not taken.
128 : QStringLiteral("On %1, %2 wrote:").arg(dateTime(when), author);
39 }
40
41 4 QString MessageLanguageText::forwardHeader(const QString &from, const QDateTime &when, const QString &subject,
42 const QString &to) const {
43 4 QStringList lines;
44
3/3
✓ Branch 6 → 7 taken 4 times.
✓ Branch 7 → 8 taken 4 times.
✓ Branch 8 → 9 taken 4 times.
8 lines.append(QStringLiteral("---------- %1 ----------").arg(label(Label::ForwardedMessage)));
45
4/4
✓ Branch 16 → 17 taken 4 times.
✓ Branch 17 → 18 taken 4 times.
✓ Branch 18 → 19 taken 4 times.
✓ Branch 19 → 20 taken 4 times.
4 lines.append(label(Label::From) + QStringLiteral(": ") + from);
46
5/5
✓ Branch 25 → 26 taken 4 times.
✓ Branch 29 → 30 taken 4 times.
✓ Branch 30 → 31 taken 4 times.
✓ Branch 31 → 32 taken 4 times.
✓ Branch 32 → 33 taken 4 times.
8 lines.append(label(Label::Date) + QStringLiteral(": ") + dateTime(when));
47
4/4
✓ Branch 42 → 43 taken 4 times.
✓ Branch 43 → 44 taken 4 times.
✓ Branch 44 → 45 taken 4 times.
✓ Branch 45 → 46 taken 4 times.
4 lines.append(label(Label::Subject) + QStringLiteral(": ") + subject);
48
6/6
✓ Branch 52 → 53 taken 3 times.
✓ Branch 52 → 66 taken 1 time.
✓ Branch 56 → 57 taken 3 times.
✓ Branch 57 → 58 taken 3 times.
✓ Branch 58 → 59 taken 3 times.
✓ Branch 59 → 60 taken 3 times.
7 if (!to.isEmpty()) lines.append(label(Label::To) + QStringLiteral(": ") + to);
49
1/1
✓ Branch 68 → 69 taken 4 times.
8 return lines.join(QLatin1Char('\n'));
50 4 }
51
52 48 QString MessageLanguageText::imageMarker() const {
53
6/6
✓ Branch 3 → 4 taken 8 times.
✓ Branch 3 → 7 taken 40 times.
✓ Branch 11 → 12 taken 40 times.
✓ Branch 11 → 13 taken 8 times.
✓ Branch 13 → 14 taken 8 times.
✓ Branch 13 → 15 taken 40 times.
96 return german() ? QStringLiteral("[Bild: %1]") : QStringLiteral("[image: %1]");
54 }
55
56 2 QString MessageLanguageText::suggestTimesIntro() const {
57
3/6
✗ Branch 3 → 4 not taken.
✓ Branch 3 → 7 taken 2 times.
✓ Branch 11 → 12 taken 2 times.
✗ Branch 11 → 13 not taken.
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 2 times.
4 return german() ? QStringLiteral("Passt einer dieser Termine?") : QStringLiteral("Would one of these suit you?");
58 }
59
60 8 QString MessageLanguageText::timeSlot(const QDateTime &start, const QDateTime &end) const {
61
6/6
✓ Branch 3 → 4 taken 1 time.
✓ Branch 3 → 7 taken 7 times.
✓ Branch 10 → 11 taken 7 times.
✓ Branch 10 → 12 taken 1 time.
✓ Branch 12 → 13 taken 1 time.
✓ Branch 12 → 14 taken 7 times.
16 const QString dayFormat = german() ? QStringLiteral("ddd d. MMM") : QStringLiteral("ddd d MMM");
62 8 const QString time = QStringLiteral("HH:mm");
63
4/4
✓ Branch 18 → 19 taken 8 times.
✓ Branch 22 → 23 taken 8 times.
✓ Branch 23 → 24 taken 8 times.
✓ Branch 24 → 25 taken 8 times.
16 const QString first = m_locale.toString(start, dayFormat) + QStringLiteral(", ") + m_locale.toString(start, time);
64
7/7
✓ Branch 30 → 31 taken 8 times.
✓ Branch 31 → 32 taken 8 times.
✓ Branch 33 → 34 taken 7 times.
✓ Branch 33 → 42 taken 1 time.
✓ Branch 34 → 35 taken 7 times.
✓ Branch 36 → 37 taken 7 times.
✓ Branch 37 → 38 taken 7 times.
8 if (start.date() == end.date()) return first + QChar(0x2013) + m_locale.toString(end, time);
65
5/5
✓ Branch 46 → 47 taken 1 time.
✓ Branch 54 → 55 taken 1 time.
✓ Branch 55 → 56 taken 1 time.
✓ Branch 56 → 57 taken 1 time.
✓ Branch 57 → 58 taken 1 time.
4 return first + QStringLiteral(" ") + QChar(0x2013) + QStringLiteral(" ") + m_locale.toString(end, dayFormat) +
66
3/3
✓ Branch 42 → 43 taken 1 time.
✓ Branch 58 → 59 taken 1 time.
✓ Branch 59 → 60 taken 1 time.
4 QStringLiteral(", ") + m_locale.toString(end, time);
67 8 }
68
69 3 QString MessageLanguageText::timeZoneNote(const QTimeZone &zone) const {
70
2/2
✓ Branch 2 → 3 taken 3 times.
✓ Branch 3 → 4 taken 3 times.
3 const QString id = QString::fromUtf8(zone.id());
71
12/20
✓ Branch 6 → 7 taken 1 time.
✓ Branch 6 → 12 taken 2 times.
✓ Branch 11 → 17 taken 1 time.
✓ Branch 16 → 17 taken 2 times.
✓ Branch 17 → 18 taken 2 times.
✓ Branch 17 → 19 taken 1 time.
✓ Branch 19 → 20 taken 2 times.
✓ Branch 19 → 21 taken 1 time.
✓ Branch 21 → 22 taken 1 time.
✓ Branch 21 → 23 taken 2 times.
✓ Branch 23 → 24 taken 1 time.
✓ Branch 23 → 25 taken 2 times.
✗ Branch 32 → 33 not taken.
✗ Branch 32 → 34 not taken.
✗ Branch 36 → 37 not taken.
✗ Branch 36 → 38 not taken.
✗ Branch 41 → 42 not taken.
✗ Branch 41 → 43 not taken.
✗ Branch 45 → 46 not taken.
✗ Branch 45 → 47 not taken.
9 return german() ? QStringLiteral("Zeiten in %1").arg(id) : QStringLiteral("Times in %1").arg(id);
72 3 }
73