Email.java

1
package fr.sii.ogham.email.message;
2
3
import java.util.ArrayList;
4
import java.util.Arrays;
5
import java.util.List;
6
7
import fr.sii.ogham.core.message.Message;
8
import fr.sii.ogham.core.message.capability.HasContentFluent;
9
import fr.sii.ogham.core.message.capability.HasRecipients;
10
import fr.sii.ogham.core.message.capability.HasRecipientsFluent;
11
import fr.sii.ogham.core.message.capability.HasSubject;
12
import fr.sii.ogham.core.message.capability.HasSubjectFluent;
13
import fr.sii.ogham.core.message.capability.HasToFluent;
14
import fr.sii.ogham.core.message.content.Content;
15
import fr.sii.ogham.core.message.content.MultiContent;
16
import fr.sii.ogham.core.message.content.StringContent;
17
import fr.sii.ogham.core.message.fluent.SingleContentBuilder;
18
import fr.sii.ogham.core.util.Loggable;
19
import fr.sii.ogham.core.util.EqualsBuilder;
20
import fr.sii.ogham.core.util.HashCodeBuilder;
21
import fr.sii.ogham.core.util.StringUtils;
22
import fr.sii.ogham.email.attachment.Attachment;
23
import fr.sii.ogham.email.attachment.ContentDisposition;
24
import fr.sii.ogham.email.message.fluent.AttachBuilder;
25
import fr.sii.ogham.email.message.fluent.BodyBuilder;
26
import fr.sii.ogham.email.message.fluent.EmbedBuilder;
27
28
/**
29
 * Email message that contains the following information:
30
 * <ul>
31
 * <li>The subject of the mail</li>
32
 * <li>The body of the mail (see {@link Content} and sub classes for more
33
 * information)</li>
34
 * <li>The sender address</li>
35
 * <li>The list of recipient addresses with the type (to, cc, bcc)</li>
36
 * <li>The list of attachments to join to the mail</li>
37
 * </ul>
38
 * 
39
 * @author Aurélien Baudet
40
 *
41
 */
42
public class Email implements Message, HasContentFluent<Email>, HasSubject, HasSubjectFluent<Email>, HasRecipients<Recipient>, HasRecipientsFluent<Email, Recipient>, HasToFluent<Email>, Loggable {
43
	/**
44
	 * The subject
45
	 */
46
	private String subject;
47
48
	/**
49
	 * The email body content
50
	 */
51
	private Content content;
52
53
	/**
54
	 * The sender address
55
	 */
56
	private EmailAddress from;
57
58
	/**
59
	 * The list of recipient addresses with the associated type (to, cc, bcc)
60
	 */
61
	private List<Recipient> recipients;
62
63
	/**
64
	 * The list of attachments to send with the email
65
	 */
66
	private List<Attachment> attachments;
67
68
	private final SingleContentBuilder<Email> htmlBuilder;
69
	private final SingleContentBuilder<Email> textBuilder;
70
	private final BodyBuilder bodyBuilder;
71
	private final AttachBuilder attachBuilder;
72
	private final EmbedBuilder embedBuilder;
73
74
	/**
75
	 * Instantiates an empty email
76
	 */
77
	public Email() {
78
		super();
79
		recipients = new ArrayList<>();
80
		attachments = new ArrayList<>();
81
		htmlBuilder = new SingleContentBuilder<>(this);
82
		textBuilder = new SingleContentBuilder<>(this);
83
		bodyBuilder = new BodyBuilder(this);
84
		attachBuilder = new AttachBuilder(this);
85
		embedBuilder = new EmbedBuilder(this);
86
	}
87
88
	// ----------------------- Getter/Setters -----------------------//
89
90
	@Override
91
	public Content getContent() {
92 5 1. getContent : negated conditional → NO_COVERAGE
2. getContent : negated conditional → TIMED_OUT
3. getContent : negated conditional → KILLED
4. getContent : negated conditional → KILLED
5. getContent : negated conditional → KILLED
		if (content != null) {
93 5 1. getContent : replaced return value with null for fr/sii/ogham/email/message/Email::getContent → NO_COVERAGE
2. getContent : replaced return value with null for fr/sii/ogham/email/message/Email::getContent → TIMED_OUT
3. getContent : replaced return value with null for fr/sii/ogham/email/message/Email::getContent → KILLED
4. getContent : replaced return value with null for fr/sii/ogham/email/message/Email::getContent → KILLED
5. getContent : replaced return value with null for fr/sii/ogham/email/message/Email::getContent → KILLED
			return content;
94
		}
95 4 1. getContent : replaced return value with null for fr/sii/ogham/email/message/Email::getContent → SURVIVED
2. getContent : replaced return value with null for fr/sii/ogham/email/message/Email::getContent → NO_COVERAGE
3. getContent : replaced return value with null for fr/sii/ogham/email/message/Email::getContent → KILLED
4. getContent : replaced return value with null for fr/sii/ogham/email/message/Email::getContent → KILLED
		return buildContent();
96
	}
97
98
	@Override
99
	public void setContent(Content content) {
100
		this.content = content;
101
	}
102
103
	/**
104
	 * Get the sender address
105
	 * 
106
	 * @return the sender address
107
	 */
108
	public EmailAddress getFrom() {
109 5 1. getFrom : replaced return value with null for fr/sii/ogham/email/message/Email::getFrom → NO_COVERAGE
2. getFrom : replaced return value with null for fr/sii/ogham/email/message/Email::getFrom → TIMED_OUT
3. getFrom : replaced return value with null for fr/sii/ogham/email/message/Email::getFrom → KILLED
4. getFrom : replaced return value with null for fr/sii/ogham/email/message/Email::getFrom → KILLED
5. getFrom : replaced return value with null for fr/sii/ogham/email/message/Email::getFrom → KILLED
		return from;
110
	}
111
112
	/**
113
	 * Set the sender address.
114
	 * 
115
	 * @param from
116
	 *            the sender address
117
	 */
118
	public void setFrom(EmailAddress from) {
119
		this.from = from;
120
	}
121
122
	/**
123
	 * Set the sender address as string (typical address syntax is of the form
124
	 * "user@host.domain" or "Personal Name &lt;user@host.domain&gt;").
125
	 * 
126
	 * @param from
127
	 *            the sender address string (typical address syntax is of the
128
	 *            form "user@host.domain" or "Personal Name
129
	 *            &lt;user@host.domain&gt;").
130
	 */
131
	public void setFrom(String from) {
132 4 1. setFrom : removed call to fr/sii/ogham/email/message/Email::setFrom → NO_COVERAGE
2. setFrom : removed call to fr/sii/ogham/email/message/Email::setFrom → TIMED_OUT
3. setFrom : removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED
4. setFrom : removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED
		setFrom(new EmailAddress(from));
133
	}
134
135
	/**
136
	 * Get the list of recipients of the mail.
137
	 * 
138
	 * @return the list of recipients
139
	 */
140
	@Override
141
	public List<Recipient> getRecipients() {
142 5 1. getRecipients : replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getRecipients → NO_COVERAGE
2. getRecipients : replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getRecipients → TIMED_OUT
3. getRecipients : replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getRecipients → KILLED
4. getRecipients : replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getRecipients → KILLED
5. getRecipients : replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getRecipients → KILLED
		return recipients;
143
	}
144
145
	/**
146
	 * Set the whole list of recipients.
147
	 * 
148
	 * @param recipients
149
	 *            the list of recipients
150
	 */
151
	@Override
152
	public void setRecipients(List<Recipient> recipients) {
153
		this.recipients = recipients;
154
	}
155
156
	/**
157
	 * Get the subject of the mail.
158
	 * 
159
	 * @return the subject of the mail
160
	 */
161
	public String getSubject() {
162 5 1. getSubject : replaced return value with "" for fr/sii/ogham/email/message/Email::getSubject → NO_COVERAGE
2. getSubject : replaced return value with "" for fr/sii/ogham/email/message/Email::getSubject → TIMED_OUT
3. getSubject : replaced return value with "" for fr/sii/ogham/email/message/Email::getSubject → KILLED
4. getSubject : replaced return value with "" for fr/sii/ogham/email/message/Email::getSubject → KILLED
5. getSubject : replaced return value with "" for fr/sii/ogham/email/message/Email::getSubject → KILLED
		return subject;
163
	}
164
165
	/**
166
	 * Set the subject of the mail.
167
	 * 
168
	 * @param subject
169
	 *            the subject of the mail
170
	 */
171
	public void setSubject(String subject) {
172
		this.subject = subject;
173
	}
174
175
	/**
176
	 * Get the list of attachments.
177
	 * 
178
	 * @return the list of attachments
179
	 */
180
	public List<Attachment> getAttachments() {
181
		List<Attachment> merged = new ArrayList<>();
182
		// NOTE: normally it can't be null but EqualsVerifier uses reflection to
183
		// set it to null
184 5 1. getAttachments : negated conditional → NO_COVERAGE
2. getAttachments : negated conditional → TIMED_OUT
3. getAttachments : negated conditional → KILLED
4. getAttachments : negated conditional → KILLED
5. getAttachments : negated conditional → KILLED
		if (attachments != null) {
185
			merged.addAll(attachments);
186
		}
187
		// NOTE: normally it can't be null but EqualsVerifier uses reflection to
188
		// set it to null
189 5 1. getAttachments : negated conditional → NO_COVERAGE
2. getAttachments : negated conditional → TIMED_OUT
3. getAttachments : negated conditional → KILLED
4. getAttachments : negated conditional → KILLED
5. getAttachments : negated conditional → KILLED
		if (attachBuilder != null) {
190
			merged.addAll(attachBuilder.build());
191
		}
192
		// NOTE: normally it can't be null but EqualsVerifier uses reflection to
193
		// set it to null
194 5 1. getAttachments : negated conditional → NO_COVERAGE
2. getAttachments : negated conditional → TIMED_OUT
3. getAttachments : negated conditional → KILLED
4. getAttachments : negated conditional → KILLED
5. getAttachments : negated conditional → KILLED
		if (embedBuilder != null) {
195
			merged.addAll(embedBuilder.build());
196
		}
197 5 1. getAttachments : replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getAttachments → NO_COVERAGE
2. getAttachments : replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getAttachments → TIMED_OUT
3. getAttachments : replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getAttachments → KILLED
4. getAttachments : replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getAttachments → KILLED
5. getAttachments : replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getAttachments → KILLED
		return merged;
198
	}
199
200
	/**
201
	 * Set the whole list of attachments.
202
	 * 
203
	 * @param attachments
204
	 *            the list of attachments
205
	 */
206
	public void setAttachments(List<Attachment> attachments) {
207
		this.attachments = attachments;
208
	}
209
210
	// ----------------------- Fluent API -----------------------//
211
212
	/**
213
	 * Set the subject of the mail.
214
	 * 
215
	 * @param subject
216
	 *            the subject of the mail
217
	 * @return this instance for fluent chaining
218
	 */
219
	public Email subject(String subject) {
220 5 1. subject : removed call to fr/sii/ogham/email/message/Email::setSubject → NO_COVERAGE
2. subject : removed call to fr/sii/ogham/email/message/Email::setSubject → SURVIVED
3. subject : removed call to fr/sii/ogham/email/message/Email::setSubject → TIMED_OUT
4. subject : removed call to fr/sii/ogham/email/message/Email::setSubject → KILLED
5. subject : removed call to fr/sii/ogham/email/message/Email::setSubject → KILLED
		setSubject(subject);
221 5 1. subject : replaced return value with null for fr/sii/ogham/email/message/Email::subject → NO_COVERAGE
2. subject : replaced return value with null for fr/sii/ogham/email/message/Email::subject → TIMED_OUT
3. subject : replaced return value with null for fr/sii/ogham/email/message/Email::subject → KILLED
4. subject : replaced return value with null for fr/sii/ogham/email/message/Email::subject → KILLED
5. subject : replaced return value with null for fr/sii/ogham/email/message/Email::subject → KILLED
		return this;
222
	}
223
224
	/**
225
	 * Set the content (body) of the message.
226
	 * 
227
	 * <p>
228
	 * You can use this method to explicitly set a particular {@link Content}
229
	 * instance. For example:
230
	 * 
231
	 * <pre>
232
	 * {@code
233
	 * .content(new TemplateContent("path/to/template", obj));
234
	 * }
235
	 * </pre>
236
	 * 
237
	 * <p>
238
	 * If you prefer, you can instead use the fluent API to set the email
239
	 * content (body):
240
	 * 
241
	 * <pre>
242
	 * {@code
243
	 * .body().template("path/to/template", obj)
244
	 * }
245
	 * </pre>
246
	 * 
247
	 * @param content
248
	 *            the content of the message
249
	 * @return this instance for fluent chaining
250
	 * @see #body()
251
	 * @see #html()
252
	 * @see #text()
253
	 */
254
	public Email content(Content content) {
255 5 1. content : removed call to fr/sii/ogham/email/message/Email::setContent → NO_COVERAGE
2. content : removed call to fr/sii/ogham/email/message/Email::setContent → TIMED_OUT
3. content : removed call to fr/sii/ogham/email/message/Email::setContent → KILLED
4. content : removed call to fr/sii/ogham/email/message/Email::setContent → KILLED
5. content : removed call to fr/sii/ogham/email/message/Email::setContent → KILLED
		setContent(content);
256 5 1. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → NO_COVERAGE
2. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → TIMED_OUT
3. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED
4. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED
5. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED
		return this;
257
	}
258
259
	/**
260
	 * Set the content (body) of the message. This is a shortcut to
261
	 * 
262
	 * <pre>
263
	 * {@code .content(new StringContent(content))}
264
	 * </pre>
265
	 * 
266
	 * <p>
267
	 * If you prefer, you can instead use the fluent API to set the email
268
	 * content (body):
269
	 * 
270
	 * <pre>
271
	 * {@code
272
	 * .body().string(content)
273
	 * }
274
	 * </pre>
275
	 * 
276
	 * 
277
	 * @param content
278
	 *            the content of the message
279
	 * @return this instance for fluent chaining
280
	 * @see #body()
281
	 * @see #html()
282
	 * @see #text()
283
	 */
284
	public Email content(String content) {
285 6 1. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → NO_COVERAGE
2. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → TIMED_OUT
3. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED
4. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED
5. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED
6. content : replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED
		return content(new StringContent(content));
286
	}
287
288
	/**
289
	 * Set the content (body) of the message (HTML part).
290
	 * 
291
	 * <p>
292
	 * You can use this method in addition to {@link #text()} to provide both a
293
	 * main body and an alternative textual body (that is used when HTML format
294
	 * is not supported by the email client).
295
	 * 
296
	 * <p>
297
	 * This method provides fluent chaining to guide developer. It has the same
298
	 * effect has using {@link #content(Content)}.
299
	 * 
300
	 * <p>
301
	 * If you also call either {@link #content(Content)},
302
	 * {@link #content(String)} or {@link #setContent(Content)} then this method
303
	 * has no effect.
304
	 * 
305
	 * @return the builder for building HTML part
306
	 * @since 3.0.0
307
	 */
308
	public SingleContentBuilder<Email> html() {
309 3 1. html : replaced return value with null for fr/sii/ogham/email/message/Email::html → NO_COVERAGE
2. html : replaced return value with null for fr/sii/ogham/email/message/Email::html → KILLED
3. html : replaced return value with null for fr/sii/ogham/email/message/Email::html → KILLED
		return htmlBuilder;
310
	}
311
312
	/**
313
	 * Set the content (body) of the message (text part).
314
	 * 
315
	 * <p>
316
	 * You can use this method in addition to {@link #html()} to provide both a
317
	 * main body and an alternative textual body (that is used when HTML format
318
	 * is not supported by the email client). If you only call {@link #text()},
319
	 * then the textual content is used as the main body.
320
	 * 
321
	 * <p>
322
	 * This method provides fluent chaining to guide developer. It has the same
323
	 * effect has using {@link #content(Content)}.
324
	 * 
325
	 * <p>
326
	 * If you also call either {@link #content(Content)},
327
	 * {@link #content(String)} or {@link #setContent(Content)} then this method
328
	 * has no effect.
329
	 * 
330
	 * @return the builder for building text part
331
	 * @since 3.0.0
332
	 */
333
	public SingleContentBuilder<Email> text() {
334 3 1. text : replaced return value with null for fr/sii/ogham/email/message/Email::text → NO_COVERAGE
2. text : replaced return value with null for fr/sii/ogham/email/message/Email::text → KILLED
3. text : replaced return value with null for fr/sii/ogham/email/message/Email::text → KILLED
		return textBuilder;
335
	}
336
337
	/**
338
	 * Set the content (body) of the message.
339
	 * 
340
	 * <p>
341
	 * This is the method that you can use in main circumstances to set the
342
	 * body:
343
	 * <ul>
344
	 * <li>When you want to set a single textual body (no alternative):
345
	 * 
346
	 * <pre>
347
	 * {@code .body().string("text")}
348
	 * </pre>
349
	 * 
350
	 * </li>
351
	 * <li>When you want to set a single HTML body (no alternative):
352
	 * 
353
	 * <pre>
354
	 * {@code .body().string("<html><body>Hello world</body></html>")}
355
	 * </pre>
356
	 * 
357
	 * </li>
358
	 * <li>When you want to set a single text body (no alternative) based on a
359
	 * template (extension depends on template parser):
360
	 * 
361
	 * <pre>
362
	 * {@code .body().template("path/to/text/template.txt", obj)}
363
	 * </pre>
364
	 * 
365
	 * </li>
366
	 * <li>When you want to set a single HTML body (no alternative) based on a
367
	 * template (extension depends on template parser):
368
	 * 
369
	 * <pre>
370
	 * {@code .body().template("path/to/text/template.html", obj)}
371
	 * </pre>
372
	 * 
373
	 * </li>
374
	 * <li>When you want to set both HTML and textual alternative based on two
375
	 * different templates (same path but without extension):
376
	 * 
377
	 * <pre>
378
	 * {@code .body().template("path/to/text/template", obj)}
379
	 * </pre>
380
	 * 
381
	 * </li>
382
	 * </ul>
383
	 * 
384
	 * <p>
385
	 * This method provides fluent chaining to guide developer. It has the same
386
	 * effect has using {@link #content(Content)}.
387
	 * 
388
	 * <p>
389
	 * If you also call either {@link #content(Content)},
390
	 * {@link #content(String)}, {@link #setContent(Content)}, {@link #html()}
391
	 * or {@link #text()} then this method has no effect because they are more
392
	 * specific.
393
	 * 
394
	 * @return the builder for building the body
395
	 * @since 3.0.0
396
	 */
397
	public BodyBuilder body() {
398 3 1. body : replaced return value with null for fr/sii/ogham/email/message/Email::body → NO_COVERAGE
2. body : replaced return value with null for fr/sii/ogham/email/message/Email::body → KILLED
3. body : replaced return value with null for fr/sii/ogham/email/message/Email::body → KILLED
		return bodyBuilder;
399
	}
400
401
	/**
402
	 * Attach a file to the email. The attachment must have a name.
403
	 * 
404
	 * <p>
405
	 * The file is attached with the {@link ContentDisposition#ATTACHMENT}
406
	 * disposition.
407
	 * 
408
	 * <p>
409
	 * This method provides fluent chaining to guide the developer. This method
410
	 * has the same effect has using {@link #attach(Attachment)},
411
	 * {@link #attach(Attachment...)} or {@link #attach(List)}.
412
	 * 
413
	 * @return the builder for building the attachments
414
	 * @since 3.0.0
415
	 */
416
	public AttachBuilder attach() {
417 3 1. attach : replaced return value with null for fr/sii/ogham/email/message/Email::attach → NO_COVERAGE
2. attach : replaced return value with null for fr/sii/ogham/email/message/Email::attach → KILLED
3. attach : replaced return value with null for fr/sii/ogham/email/message/Email::attach → KILLED
		return attachBuilder;
418
	}
419
420
	/**
421
	 * Embed a file in the email. This is mainly used for images. The embedded
422
	 * file must be referenced in the body of the email using a
423
	 * <a href="https://tools.ietf.org/html/rfc4021#section-2.2.2">Content-ID
424
	 * (or CID)</a>.
425
	 * 
426
	 * <p>
427
	 * The file is attached {@link ContentDisposition#INLINE} disposition.
428
	 * 
429
	 * <p>
430
	 * This method provides fluent chaining to guide the developer. This method
431
	 * has the same effect has using {@link #attach(Attachment)},
432
	 * {@link #attach(Attachment...)} or {@link #attach(List)}.
433
	 * 
434
	 * @return the builder for building the attachments
435
	 * @since 3.0.0
436
	 */
437
	public EmbedBuilder embed() {
438 3 1. embed : replaced return value with null for fr/sii/ogham/email/message/Email::embed → NO_COVERAGE
2. embed : replaced return value with null for fr/sii/ogham/email/message/Email::embed → KILLED
3. embed : replaced return value with null for fr/sii/ogham/email/message/Email::embed → KILLED
		return embedBuilder;
439
	}
440
441
	/**
442
	 * Set the sender address. It supports both "user@domain.host" and "Personal
443
	 * Name &lt;user@host.domain&gt;" formats.
444
	 * 
445
	 * @param from
446
	 *            the sender address
447
	 * @return this instance for fluent chaining
448
	 */
449
	public Email from(EmailAddress from) {
450 3 1. from : removed call to fr/sii/ogham/email/message/Email::setFrom → NO_COVERAGE
2. from : removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED
3. from : removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED
		setFrom(from);
451 3 1. from : replaced return value with null for fr/sii/ogham/email/message/Email::from → NO_COVERAGE
2. from : replaced return value with null for fr/sii/ogham/email/message/Email::from → KILLED
3. from : replaced return value with null for fr/sii/ogham/email/message/Email::from → KILLED
		return this;
452
	}
453
454
	/**
455
	 * Set the sender address as string (typical address syntax is of the form
456
	 * "user@host.domain" or "Personal Name &lt;user@host.domain&gt;").
457
	 * 
458
	 * @param from
459
	 *            the sender address string (typical address syntax is of the
460
	 *            form "user@host.domain" or "Personal Name
461
	 *            &lt;user@host.domain&gt;").
462
	 * @return this instance for fluent chaining
463
	 */
464
	public Email from(String from) {
465 4 1. from : removed call to fr/sii/ogham/email/message/Email::setFrom → NO_COVERAGE
2. from : removed call to fr/sii/ogham/email/message/Email::setFrom → TIMED_OUT
3. from : removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED
4. from : removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED
		setFrom(from);
466 4 1. from : replaced return value with null for fr/sii/ogham/email/message/Email::from → NO_COVERAGE
2. from : replaced return value with null for fr/sii/ogham/email/message/Email::from → TIMED_OUT
3. from : replaced return value with null for fr/sii/ogham/email/message/Email::from → KILLED
4. from : replaced return value with null for fr/sii/ogham/email/message/Email::from → KILLED
		return this;
467
	}
468
469
	/**
470
	 * Set the whole list of recipients.
471
	 * 
472
	 * @param recipients
473
	 *            the list of recipients
474
	 * @return this instance for fluent chaining
475
	 */
476
	@Override
477
	public Email recipients(List<Recipient> recipients) {
478 1 1. recipients : removed call to fr/sii/ogham/email/message/Email::setRecipients → NO_COVERAGE
		setRecipients(recipients);
479 1 1. recipients : replaced return value with null for fr/sii/ogham/email/message/Email::recipients → NO_COVERAGE
		return this;
480
	}
481
482
	/**
483
	 * Set the whole list of attachments.
484
	 * 
485
	 * @param attachments
486
	 *            the list of attachments
487
	 * @return this instance for fluent chaining
488
	 */
489
	public Email attach(List<Attachment> attachments) {
490 1 1. attach : removed call to fr/sii/ogham/email/message/Email::setAttachments → NO_COVERAGE
		setAttachments(attachments);
491 1 1. attach : replaced return value with null for fr/sii/ogham/email/message/Email::attach → NO_COVERAGE
		return this;
492
	}
493
494
	/**
495
	 * Set the whole list of attachments.
496
	 * 
497
	 * @param attachments
498
	 *            the list of attachments
499
	 * @return this instance for fluent chaining
500
	 */
501
	public Email attach(Attachment... attachments) {
502
		for (Attachment attachment : attachments) {
503
			attach(attachment);
504
		}
505 1 1. attach : replaced return value with null for fr/sii/ogham/email/message/Email::attach → NO_COVERAGE
		return this;
506
	}
507
508
	/**
509
	 * Add an attachment to join to the mail.
510
	 * 
511
	 * @param attachment
512
	 *            the attachment to add
513
	 * @return this instance for fluent chaining
514
	 */
515
	public Email attach(Attachment attachment) {
516
		attachments.add(attachment);
517 3 1. attach : replaced return value with null for fr/sii/ogham/email/message/Email::attach → NO_COVERAGE
2. attach : replaced return value with null for fr/sii/ogham/email/message/Email::attach → KILLED
3. attach : replaced return value with null for fr/sii/ogham/email/message/Email::attach → KILLED
		return this;
518
	}
519
520
	/**
521
	 * Add a recipient of the mail.
522
	 * 
523
	 * @param recipients
524
	 *            one or several recipient to add
525
	 * @return this instance for fluent chaining
526
	 */
527
	@Override
528
	public Email recipient(Recipient... recipients) {
529
		this.recipients.addAll(Arrays.asList(recipients));
530 3 1. recipient : replaced return value with null for fr/sii/ogham/email/message/Email::recipient → SURVIVED
2. recipient : replaced return value with null for fr/sii/ogham/email/message/Email::recipient → NO_COVERAGE
3. recipient : replaced return value with null for fr/sii/ogham/email/message/Email::recipient → TIMED_OUT
		return this;
531
	}
532
533
	/**
534
	 * Add a "to" recipient address. It supports both "user@domain.host" and
535
	 * "Personal Name &lt;user@host.domain&gt;" formats.
536
	 * 
537
	 * @param to
538
	 *            one or several recipient addresses
539
	 * @return this instance for fluent chaining
540
	 */
541
	public Email to(String... to) {
542
		for (String t : to) {
543
			to(new EmailAddress(t));
544
		}
545 4 1. to : replaced return value with null for fr/sii/ogham/email/message/Email::to → NO_COVERAGE
2. to : replaced return value with null for fr/sii/ogham/email/message/Email::to → TIMED_OUT
3. to : replaced return value with null for fr/sii/ogham/email/message/Email::to → KILLED
4. to : replaced return value with null for fr/sii/ogham/email/message/Email::to → KILLED
		return this;
546
	}
547
548
	/**
549
	 * Add a "to" recipient address.
550
	 * 
551
	 * @param to
552
	 *            one or several recipient addresses
553
	 * @return this instance for fluent chaining
554
	 */
555
	public Email to(EmailAddress... to) {
556
		for (EmailAddress t : to) {
557
			recipient(t, RecipientType.TO);
558
		}
559 3 1. to : replaced return value with null for fr/sii/ogham/email/message/Email::to → NO_COVERAGE
2. to : replaced return value with null for fr/sii/ogham/email/message/Email::to → SURVIVED
3. to : replaced return value with null for fr/sii/ogham/email/message/Email::to → TIMED_OUT
		return this;
560
	}
561
562
	/**
563
	 * Add a "cc" recipient address. It supports both "user@domain.host" and
564
	 * "Personal Name &lt;user@host.domain&gt;" formats.
565
	 * 
566
	 * @param cc
567
	 *            one or several recipient addresses
568
	 * @return this instance for fluent chaining
569
	 */
570
	public Email cc(String... cc) {
571
		for (String c : cc) {
572
			cc(new EmailAddress(c));
573
		}
574 2 1. cc : replaced return value with null for fr/sii/ogham/email/message/Email::cc → SURVIVED
2. cc : replaced return value with null for fr/sii/ogham/email/message/Email::cc → NO_COVERAGE
		return this;
575
	}
576
577
	/**
578
	 * Add a "cc" recipient address.
579
	 * 
580
	 * @param cc
581
	 *            one or several recipient addresses
582
	 * @return this instance for fluent chaining
583
	 */
584
	public Email cc(EmailAddress... cc) {
585
		for (EmailAddress c : cc) {
586
			recipient(c, RecipientType.CC);
587
		}
588 2 1. cc : replaced return value with null for fr/sii/ogham/email/message/Email::cc → SURVIVED
2. cc : replaced return value with null for fr/sii/ogham/email/message/Email::cc → NO_COVERAGE
		return this;
589
	}
590
591
	/**
592
	 * Add a "bcc" recipient address. It supports both "user@domain.host" and
593
	 * "Personal Name &lt;user@host.domain&gt;" formats.
594
	 * 
595
	 * @param bcc
596
	 *            one or several recipient addresses
597
	 * @return this instance for fluent chaining
598
	 */
599
	public Email bcc(String... bcc) {
600
		for (String b : bcc) {
601
			bcc(new EmailAddress(b));
602
		}
603 2 1. bcc : replaced return value with null for fr/sii/ogham/email/message/Email::bcc → SURVIVED
2. bcc : replaced return value with null for fr/sii/ogham/email/message/Email::bcc → NO_COVERAGE
		return this;
604
	}
605
606
	/**
607
	 * Add a "bcc" recipient address.
608
	 * 
609
	 * @param bcc
610
	 *            one or several recipient addresses
611
	 * @return this instance for fluent chaining
612
	 */
613
	public Email bcc(EmailAddress... bcc) {
614
		for (EmailAddress b : bcc) {
615
			recipient(b, RecipientType.BCC);
616
		}
617 2 1. bcc : replaced return value with null for fr/sii/ogham/email/message/Email::bcc → SURVIVED
2. bcc : replaced return value with null for fr/sii/ogham/email/message/Email::bcc → NO_COVERAGE
		return this;
618
	}
619
620
	/**
621
	 * Add a recipient specifying its address and the type (to, cc, bcc).
622
	 * 
623
	 * @param recipient
624
	 *            the recipient address
625
	 * @param type
626
	 *            the type (to, cc, bcc)
627
	 * @return this instance for fluent chaining
628
	 */
629
	public Email recipient(EmailAddress recipient, RecipientType type) {
630
		recipient(new Recipient(recipient, type));
631 3 1. recipient : replaced return value with null for fr/sii/ogham/email/message/Email::recipient → NO_COVERAGE
2. recipient : replaced return value with null for fr/sii/ogham/email/message/Email::recipient → SURVIVED
3. recipient : replaced return value with null for fr/sii/ogham/email/message/Email::recipient → TIMED_OUT
		return this;
632
	}
633
634
	// ----------------------- Utilities -----------------------//
635
636
	/**
637
	 * Converts a list of string to a list of recipients. Each recipient will
638
	 * have the type {@link RecipientType#TO}.
639
	 * 
640
	 * @param to
641
	 *            the list of addresses to convert (typical address syntax is of
642
	 *            the form "user@host.domain" or "Personal Name
643
	 *            &lt;user@host.domain&gt;")
644
	 * @return the list of recipients
645
	 */
646
	public static Recipient[] toRecipient(List<String> to) {
647
		Recipient[] addresses = new Recipient[to.size()];
648
		int i = 0;
649
		for (String t : to) {
650
			addresses[i] = new Recipient(t);
651 1 1. toRecipient : Changed increment from 1 to -1 → NO_COVERAGE
			i++;
652
		}
653 1 1. toRecipient : replaced return value with null for fr/sii/ogham/email/message/Email::toRecipient → NO_COVERAGE
		return addresses;
654
	}
655
656
	/**
657
	 * Converts a list of {@link EmailAddress} to a list of recipients. Each
658
	 * recipient will have the type {@link RecipientType#TO}.
659
	 * 
660
	 * @param to
661
	 *            the list of addresses to convert
662
	 * @return the list of recipients
663
	 */
664
	public static Recipient[] toRecipient(EmailAddress[] to) {
665
		Recipient[] addresses = new Recipient[to.length];
666
		int i = 0;
667
		for (EmailAddress t : to) {
668
			addresses[i] = new Recipient(t);
669 1 1. toRecipient : Changed increment from 1 to -1 → NO_COVERAGE
			i++;
670
		}
671 1 1. toRecipient : replaced return value with null for fr/sii/ogham/email/message/Email::toRecipient → NO_COVERAGE
		return addresses;
672
	}
673
674
	/**
675
	 * Converts a list of string to a list of recipients. Each recipient will
676
	 * have the type {@link RecipientType#TO}.
677
	 * 
678
	 * @param to
679
	 *            the list of addresses to convert (typical address syntax is of
680
	 *            the form "user@host.domain" or "Personal Name
681
	 *            &lt;user@host.domain&gt;")
682
	 * @return the list of recipients
683
	 */
684
	public static Recipient[] toRecipient(String[] to) {
685
		Recipient[] addresses = new Recipient[to.length];
686
		int i = 0;
687
		for (String t : to) {
688
			addresses[i] = new Recipient(t);
689 1 1. toRecipient : Changed increment from 1 to -1 → NO_COVERAGE
			i++;
690
		}
691 1 1. toRecipient : replaced return value with null for fr/sii/ogham/email/message/Email::toRecipient → NO_COVERAGE
		return addresses;
692
	}
693
694
	@Override
695
	public String toString() {
696 3 1. toString : replaced return value with "" for fr/sii/ogham/email/message/Email::toString → NO_COVERAGE
2. toString : replaced return value with "" for fr/sii/ogham/email/message/Email::toString → SURVIVED
3. toString : replaced return value with "" for fr/sii/ogham/email/message/Email::toString → TIMED_OUT
		return toString(false);
697
	}
698
699
	@Override
700
	public String toLogString() {
701 1 1. toLogString : replaced return value with "" for fr/sii/ogham/email/message/Email::toLogString → NO_COVERAGE
		return toString(true);
702
	}
703
704
	@Override
705
	public int hashCode() {
706 2 1. hashCode : replaced int return with 0 for fr/sii/ogham/email/message/Email::hashCode → NO_COVERAGE
2. hashCode : replaced int return with 0 for fr/sii/ogham/email/message/Email::hashCode → KILLED
		return new HashCodeBuilder().append(subject, getContent(), from, recipients, getAttachments()).hashCode();
707
	}
708
709
	@Override
710
	public boolean equals(Object obj) {
711 6 1. equals : replaced boolean return with false for fr/sii/ogham/email/message/Email::equals → NO_COVERAGE
2. equals : replaced boolean return with true for fr/sii/ogham/email/message/Email::equals → NO_COVERAGE
3. equals : replaced boolean return with true for fr/sii/ogham/email/message/Email::equals → SURVIVED
4. equals : replaced boolean return with false for fr/sii/ogham/email/message/Email::equals → KILLED
5. equals : replaced boolean return with false for fr/sii/ogham/email/message/Email::equals → KILLED
6. equals : replaced boolean return with true for fr/sii/ogham/email/message/Email::equals → KILLED
		return new EqualsBuilder(this, obj).appendFields("subject", "content", "from", "recipients", "attachments").isEqual();
712
	}
713
714
	private String toString(boolean includeContent) {
715
		StringBuilder builder = new StringBuilder();
716
		builder.append("Email message\r\nFrom: ").append(from);
717
		for (RecipientType type : RecipientType.values()) {
718
			List<EmailAddress> addresses = new ArrayList<>();
719
			for (Recipient recipient : recipients) {
720 3 1. toString : negated conditional → SURVIVED
2. toString : negated conditional → NO_COVERAGE
3. toString : negated conditional → TIMED_OUT
				if (type == recipient.getType()) {
721
					addresses.add(recipient.getAddress());
722
				}
723
			}
724 3 1. toString : negated conditional → NO_COVERAGE
2. toString : negated conditional → SURVIVED
3. toString : negated conditional → TIMED_OUT
			if (!addresses.isEmpty()) {
725
				builder.append("\r\n");
726
				builder.append(type).append(": ");
727
				builder.append(StringUtils.join(addresses, ", "));
728
			}
729
		}
730
		builder.append("\r\nSubject: ").append(subject);
731 3 1. toString : negated conditional → NO_COVERAGE
2. toString : negated conditional → SURVIVED
3. toString : negated conditional → TIMED_OUT
		builder.append("\r\n----------------------------------\r\n").append(includeContent ? getContent() : "<Content skipped>");
732 6 1. toString : negated conditional → NO_COVERAGE
2. toString : negated conditional → SURVIVED
3. toString : negated conditional → NO_COVERAGE
4. toString : negated conditional → SURVIVED
5. toString : negated conditional → TIMED_OUT
6. toString : negated conditional → TIMED_OUT
		if (attachments != null && !attachments.isEmpty()) {
733
			builder.append("\r\n----------------------------------").append("\r\nAttachments: ").append(getAttachments());
734
		}
735
		builder.append("\r\n==================================\r\n");
736 3 1. toString : replaced return value with "" for fr/sii/ogham/email/message/Email::toString → NO_COVERAGE
2. toString : replaced return value with "" for fr/sii/ogham/email/message/Email::toString → SURVIVED
3. toString : replaced return value with "" for fr/sii/ogham/email/message/Email::toString → TIMED_OUT
		return builder.toString();
737
	}
738
739
	private Content buildContent() {
740
		// NOTE: normally it can't be null but EqualsVerifier uses reflection to
741
		// set it to null
742 4 1. buildContent : negated conditional → NO_COVERAGE
2. buildContent : negated conditional → KILLED
3. buildContent : negated conditional → KILLED
4. buildContent : negated conditional → KILLED
		Content html = htmlBuilder == null ? null : htmlBuilder.build();
743
		// NOTE: normally it can't be null but EqualsVerifier uses reflection to
744
		// set it to null
745 4 1. buildContent : negated conditional → NO_COVERAGE
2. buildContent : negated conditional → KILLED
3. buildContent : negated conditional → KILLED
4. buildContent : negated conditional → KILLED
		Content text = textBuilder == null ? null : textBuilder.build();
746 7 1. buildContent : negated conditional → SURVIVED
2. buildContent : negated conditional → NO_COVERAGE
3. buildContent : negated conditional → NO_COVERAGE
4. buildContent : negated conditional → KILLED
5. buildContent : negated conditional → KILLED
6. buildContent : negated conditional → KILLED
7. buildContent : negated conditional → KILLED
		if (html != null && text != null) {
747 3 1. buildContent : replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → NO_COVERAGE
2. buildContent : replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED
3. buildContent : replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED
			return new MultiContent(text, html);
748
		}
749 4 1. buildContent : negated conditional → NO_COVERAGE
2. buildContent : negated conditional → SURVIVED
3. buildContent : negated conditional → KILLED
4. buildContent : negated conditional → KILLED
		if (html != null) {
750 2 1. buildContent : replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → NO_COVERAGE
2. buildContent : replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED
			return html;
751
		}
752 4 1. buildContent : negated conditional → SURVIVED
2. buildContent : negated conditional → NO_COVERAGE
3. buildContent : negated conditional → KILLED
4. buildContent : negated conditional → KILLED
		if (text != null) {
753 2 1. buildContent : replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → NO_COVERAGE
2. buildContent : replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED
			return text;
754
		}
755
		// NOTE: normally it can't be null but EqualsVerifier uses reflection to
756
		// set it to null
757 4 1. buildContent : negated conditional → NO_COVERAGE
2. buildContent : negated conditional → KILLED
3. buildContent : negated conditional → KILLED
4. buildContent : negated conditional → KILLED
		Content body = bodyBuilder == null ? null : bodyBuilder.build();
758 4 1. buildContent : negated conditional → NO_COVERAGE
2. buildContent : negated conditional → SURVIVED
3. buildContent : negated conditional → KILLED
4. buildContent : negated conditional → KILLED
		if (body != null) {
759 3 1. buildContent : replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → NO_COVERAGE
2. buildContent : replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED
3. buildContent : replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED
			return body;
760
		}
761
		return null;
762
	}
763
764
}

Mutations

92

1.1
Location : getContent
Killed by : oghamcore.ut.email.subject.provider.TextPrefixSubjectProviderTest.noPrefix(oghamcore.ut.email.subject.provider.TextPrefixSubjectProviderTest)
negated conditional → KILLED

2.2
Location : getContent
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

3.3
Location : getContent
Killed by : none
negated conditional → TIMED_OUT

4.4
Location : getContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

5.5
Location : getContent
Killed by : none
negated conditional → NO_COVERAGE

93

1.1
Location : getContent
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::getContent → TIMED_OUT

2.2
Location : getContent
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::getContent → NO_COVERAGE

3.3
Location : getContent
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::getContent → KILLED

4.4
Location : getContent
Killed by : oghamjavamail.it.JavaMailSmtpTest.simple(oghamjavamail.it.JavaMailSmtpTest)
replaced return value with null for fr/sii/ogham/email/message/Email::getContent → KILLED

5.5
Location : getContent
Killed by : oghamcore.ut.email.subject.provider.TextPrefixSubjectProviderTest.noPrefix(oghamcore.ut.email.subject.provider.TextPrefixSubjectProviderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::getContent → KILLED

95

1.1
Location : getContent
Killed by : oghamall.it.email.FluentEmailTest.invalidTemplate(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/message/Email::getContent → KILLED

2.2
Location : getContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::getContent → KILLED

3.3
Location : getContent
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::getContent → SURVIVED

4.4
Location : getContent
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::getContent → NO_COVERAGE

109

1.1
Location : getFrom
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::getFrom → TIMED_OUT

2.2
Location : getFrom
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::getFrom → NO_COVERAGE

3.3
Location : getFrom
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::getFrom → KILLED

4.4
Location : getFrom
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
replaced return value with null for fr/sii/ogham/email/message/Email::getFrom → KILLED

5.5
Location : getFrom
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::getFrom → KILLED

132

1.1
Location : setFrom
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setFrom → NO_COVERAGE

2.2
Location : setFrom
Killed by : oghamjavamail.it.builder.JavaMailCustomConfigurationTest.oghamPropertyShouldOverride(oghamjavamail.it.builder.JavaMailCustomConfigurationTest)
removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED

3.3
Location : setFrom
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setFrom → TIMED_OUT

4.4
Location : setFrom
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED

142

1.1
Location : getRecipients
Killed by : none
replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getRecipients → NO_COVERAGE

2.2
Location : getRecipients
Killed by : none
replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getRecipients → TIMED_OUT

3.3
Location : getRecipients
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getRecipients → KILLED

4.4
Location : getRecipients
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getRecipients → KILLED

5.5
Location : getRecipients
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getRecipients → KILLED

162

1.1
Location : getSubject
Killed by : oghamjavamail.it.JavaMailSmtpTest.simple(oghamjavamail.it.JavaMailSmtpTest)
replaced return value with "" for fr/sii/ogham/email/message/Email::getSubject → KILLED

2.2
Location : getSubject
Killed by : none
replaced return value with "" for fr/sii/ogham/email/message/Email::getSubject → TIMED_OUT

3.3
Location : getSubject
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with "" for fr/sii/ogham/email/message/Email::getSubject → KILLED

4.4
Location : getSubject
Killed by : none
replaced return value with "" for fr/sii/ogham/email/message/Email::getSubject → NO_COVERAGE

5.5
Location : getSubject
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
replaced return value with "" for fr/sii/ogham/email/message/Email::getSubject → KILLED

184

1.1
Location : getAttachments
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredResourceResolutionCantAttachFilesFromPath(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

2.2
Location : getAttachments
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
negated conditional → KILLED

3.3
Location : getAttachments
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : getAttachments
Killed by : none
negated conditional → TIMED_OUT

5.5
Location : getAttachments
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
negated conditional → KILLED

189

1.1
Location : getAttachments
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

2.2
Location : getAttachments
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
negated conditional → KILLED

3.3
Location : getAttachments
Killed by : none
negated conditional → TIMED_OUT

4.4
Location : getAttachments
Killed by : oghamall.it.email.FluentEmailTest.attachFile(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

5.5
Location : getAttachments
Killed by : none
negated conditional → NO_COVERAGE

194

1.1
Location : getAttachments
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

2.2
Location : getAttachments
Killed by : none
negated conditional → TIMED_OUT

3.3
Location : getAttachments
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : getAttachments
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

5.5
Location : getAttachments
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
negated conditional → KILLED

197

1.1
Location : getAttachments
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredResourceResolutionCantAttachFilesFromPath(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getAttachments → KILLED

2.2
Location : getAttachments
Killed by : none
replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getAttachments → NO_COVERAGE

3.3
Location : getAttachments
Killed by : none
replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getAttachments → TIMED_OUT

4.4
Location : getAttachments
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getAttachments → KILLED

5.5
Location : getAttachments
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
replaced return value with Collections.emptyList for fr/sii/ogham/email/message/Email::getAttachments → KILLED

220

1.1
Location : subject
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setSubject → NO_COVERAGE

2.2
Location : subject
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
removed call to fr/sii/ogham/email/message/Email::setSubject → KILLED

3.3
Location : subject
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setSubject → TIMED_OUT

4.4
Location : subject
Killed by : oghamjavamail.it.JavaMailSmtpTest.simple(oghamjavamail.it.JavaMailSmtpTest)
removed call to fr/sii/ogham/email/message/Email::setSubject → KILLED

5.5
Location : subject
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setSubject → SURVIVED

221

1.1
Location : subject
Killed by : oghamjavamail.it.JavaMailSmtpTest.missingRecipientIsInvalid(oghamjavamail.it.JavaMailSmtpTest)
replaced return value with null for fr/sii/ogham/email/message/Email::subject → KILLED

2.2
Location : subject
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::subject → NO_COVERAGE

3.3
Location : subject
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::subject → TIMED_OUT

4.4
Location : subject
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1SendGridAutoConfigurationTests.oghamWithSendGridAutoConfigShouldUseSpringSendGridClient(oghamspringbootv1autoconfigure.it.OghamSpringBoot1SendGridAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/message/Email::subject → KILLED

5.5
Location : subject
Killed by : oghamall.it.configuration.EmptyBuilderTest.unconfiguredServiceCantSendEmail(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::subject → KILLED

255

1.1
Location : content
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setContent → NO_COVERAGE

2.2
Location : content
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
removed call to fr/sii/ogham/email/message/Email::setContent → KILLED

3.3
Location : content
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setContent → TIMED_OUT

4.4
Location : content
Killed by : oghamcore.ut.email.subject.provider.TextPrefixSubjectProviderTest.noPrefix(oghamcore.ut.email.subject.provider.TextPrefixSubjectProviderTest)
removed call to fr/sii/ogham/email/message/Email::setContent → KILLED

5.5
Location : content
Killed by : oghamjavamail.it.JavaMailSmtpTest.simple(oghamjavamail.it.JavaMailSmtpTest)
removed call to fr/sii/ogham/email/message/Email::setContent → KILLED

256

1.1
Location : content
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::content → TIMED_OUT

2.2
Location : content
Killed by : oghamcore.ut.email.subject.provider.TextPrefixSubjectProviderTest.noPrefix(oghamcore.ut.email.subject.provider.TextPrefixSubjectProviderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED

3.3
Location : content
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::content → NO_COVERAGE

4.4
Location : content
Killed by : oghamjavamail.it.JavaMailSmtpTest.missingRecipientIsInvalid(oghamjavamail.it.JavaMailSmtpTest)
replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED

5.5
Location : content
Killed by : oghamall.it.configuration.EmptyBuilderTest.unconfiguredServiceCantSendEmail(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED

285

1.1
Location : content
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::content → TIMED_OUT

2.2
Location : content
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1SendGridAutoConfigurationTests.oghamWithSendGridAutoConfigShouldUseSpringSendGridClient(oghamspringbootv1autoconfigure.it.OghamSpringBoot1SendGridAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED

3.3
Location : content
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::content → NO_COVERAGE

4.4
Location : content
Killed by : oghamjavamail.it.JavaMailSmtpTest.missingRecipientIsInvalid(oghamjavamail.it.JavaMailSmtpTest)
replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED

5.5
Location : content
Killed by : oghamcore.ut.email.subject.provider.TextPrefixSubjectProviderTest.noPrefix(oghamcore.ut.email.subject.provider.TextPrefixSubjectProviderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED

6.6
Location : content
Killed by : oghamall.it.configuration.EmptyBuilderTest.unconfiguredServiceCantSendEmail(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::content → KILLED

309

1.1
Location : html
Killed by : oghamall.it.email.FluentEmailTest.htmlTemplateOnly(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/message/Email::html → KILLED

2.2
Location : html
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlAndTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::html → KILLED

3.3
Location : html
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::html → NO_COVERAGE

334

1.1
Location : text
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::text → NO_COVERAGE

2.2
Location : text
Killed by : oghamall.it.email.FluentEmailTest.textTemplateOnly(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/message/Email::text → KILLED

3.3
Location : text
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlAndTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::text → KILLED

398

1.1
Location : body
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::body → KILLED

2.2
Location : body
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::body → NO_COVERAGE

3.3
Location : body
Killed by : oghamall.it.email.FluentEmailTest.invalidTemplate(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/message/Email::body → KILLED

417

1.1
Location : attach
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::attach → KILLED

2.2
Location : attach
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::attach → NO_COVERAGE

3.3
Location : attach
Killed by : oghamall.it.email.FluentEmailTest.attachFile(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/message/Email::attach → KILLED

438

1.1
Location : embed
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::embed → NO_COVERAGE

2.2
Location : embed
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/message/Email::embed → KILLED

3.3
Location : embed
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::embed → KILLED

450

1.1
Location : from
Killed by : oghamall.it.email.EmailCustomImplTest.simple(oghamall.it.email.EmailCustomImplTest)
removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED

2.2
Location : from
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setFrom → NO_COVERAGE

3.3
Location : from
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED

451

1.1
Location : from
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::from → NO_COVERAGE

2.2
Location : from
Killed by : oghamall.it.email.EmailCustomImplTest.simple(oghamall.it.email.EmailCustomImplTest)
replaced return value with null for fr/sii/ogham/email/message/Email::from → KILLED

3.3
Location : from
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::from → KILLED

465

1.1
Location : from
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setFrom → NO_COVERAGE

2.2
Location : from
Killed by : oghamjavamail.it.builder.JavaMailCustomConfigurationTest.oghamPropertyShouldOverride(oghamjavamail.it.builder.JavaMailCustomConfigurationTest)
removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED

3.3
Location : from
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
removed call to fr/sii/ogham/email/message/Email::setFrom → KILLED

4.4
Location : from
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setFrom → TIMED_OUT

466

1.1
Location : from
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::from → NO_COVERAGE

2.2
Location : from
Killed by : oghamjavamail.it.builder.JavaMailCustomConfigurationTest.noHostDefinedShouldFail(oghamjavamail.it.builder.JavaMailCustomConfigurationTest)
replaced return value with null for fr/sii/ogham/email/message/Email::from → KILLED

3.3
Location : from
Killed by : oghamall.it.configuration.EmptyBuilderTest.unconfiguredServiceCantSendEmail(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::from → KILLED

4.4
Location : from
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::from → TIMED_OUT

478

1.1
Location : recipients
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setRecipients → NO_COVERAGE

479

1.1
Location : recipients
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::recipients → NO_COVERAGE

490

1.1
Location : attach
Killed by : none
removed call to fr/sii/ogham/email/message/Email::setAttachments → NO_COVERAGE

491

1.1
Location : attach
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::attach → NO_COVERAGE

505

1.1
Location : attach
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::attach → NO_COVERAGE

517

1.1
Location : attach
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
replaced return value with null for fr/sii/ogham/email/message/Email::attach → KILLED

2.2
Location : attach
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::attach → NO_COVERAGE

3.3
Location : attach
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredResourceResolutionCantAttachFilesFromPath(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::attach → KILLED

530

1.1
Location : recipient
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::recipient → SURVIVED

2.2
Location : recipient
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::recipient → NO_COVERAGE

3.3
Location : recipient
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::recipient → TIMED_OUT

545

1.1
Location : to
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::to → KILLED

2.2
Location : to
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::to → TIMED_OUT

3.3
Location : to
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::to → NO_COVERAGE

4.4
Location : to
Killed by : oghamall.it.configuration.EmptyBuilderTest.unconfiguredServiceCantSendEmail(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/message/Email::to → KILLED

559

1.1
Location : to
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::to → NO_COVERAGE

2.2
Location : to
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::to → TIMED_OUT

3.3
Location : to
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::to → SURVIVED

574

1.1
Location : cc
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::cc → SURVIVED

2.2
Location : cc
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::cc → NO_COVERAGE

588

1.1
Location : cc
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::cc → SURVIVED

2.2
Location : cc
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::cc → NO_COVERAGE

603

1.1
Location : bcc
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::bcc → SURVIVED

2.2
Location : bcc
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::bcc → NO_COVERAGE

617

1.1
Location : bcc
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::bcc → SURVIVED

2.2
Location : bcc
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::bcc → NO_COVERAGE

631

1.1
Location : recipient
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::recipient → NO_COVERAGE

2.2
Location : recipient
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::recipient → TIMED_OUT

3.3
Location : recipient
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::recipient → SURVIVED

651

1.1
Location : toRecipient
Killed by : none
Changed increment from 1 to -1 → NO_COVERAGE

653

1.1
Location : toRecipient
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::toRecipient → NO_COVERAGE

669

1.1
Location : toRecipient
Killed by : none
Changed increment from 1 to -1 → NO_COVERAGE

671

1.1
Location : toRecipient
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::toRecipient → NO_COVERAGE

689

1.1
Location : toRecipient
Killed by : none
Changed increment from 1 to -1 → NO_COVERAGE

691

1.1
Location : toRecipient
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::toRecipient → NO_COVERAGE

696

1.1
Location : toString
Killed by : none
replaced return value with "" for fr/sii/ogham/email/message/Email::toString → TIMED_OUT

2.2
Location : toString
Killed by : none
replaced return value with "" for fr/sii/ogham/email/message/Email::toString → NO_COVERAGE

3.3
Location : toString
Killed by : none
replaced return value with "" for fr/sii/ogham/email/message/Email::toString → SURVIVED

701

1.1
Location : toLogString
Killed by : none
replaced return value with "" for fr/sii/ogham/email/message/Email::toLogString → NO_COVERAGE

706

1.1
Location : hashCode
Killed by : none
replaced int return with 0 for fr/sii/ogham/email/message/Email::hashCode → NO_COVERAGE

2.2
Location : hashCode
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
replaced int return with 0 for fr/sii/ogham/email/message/Email::hashCode → KILLED

711

1.1
Location : equals
Killed by : oghamcore.ut.email.subject.provider.MultiContentSubjectProviderTest.noneAndEmpty(oghamcore.ut.email.subject.provider.MultiContentSubjectProviderTest)
replaced boolean return with false for fr/sii/ogham/email/message/Email::equals → KILLED

2.2
Location : equals
Killed by : oghamall.it.configuration.EmptyBuilderTest.unconfiguredServiceCantSendEmail(oghamall.it.configuration.EmptyBuilderTest)
replaced boolean return with false for fr/sii/ogham/email/message/Email::equals → KILLED

3.3
Location : equals
Killed by : none
replaced boolean return with false for fr/sii/ogham/email/message/Email::equals → NO_COVERAGE

4.4
Location : equals
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/message/Email::equals → NO_COVERAGE

5.5
Location : equals
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/message/Email::equals → SURVIVED

6.6
Location : equals
Killed by : oghamcore.ut.email.subject.provider.MultiContentSubjectProviderTest.noneAndNone(oghamcore.ut.email.subject.provider.MultiContentSubjectProviderTest)
replaced boolean return with true for fr/sii/ogham/email/message/Email::equals → KILLED

720

1.1
Location : toString
Killed by : none
negated conditional → SURVIVED

2.2
Location : toString
Killed by : none
negated conditional → TIMED_OUT

3.3
Location : toString
Killed by : none
negated conditional → NO_COVERAGE

724

1.1
Location : toString
Killed by : none
negated conditional → TIMED_OUT

2.2
Location : toString
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : toString
Killed by : none
negated conditional → SURVIVED

731

1.1
Location : toString
Killed by : none
negated conditional → TIMED_OUT

2.2
Location : toString
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : toString
Killed by : none
negated conditional → SURVIVED

732

1.1
Location : toString
Killed by : none
negated conditional → TIMED_OUT

2.2
Location : toString
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : toString
Killed by : none
negated conditional → SURVIVED

4.4
Location : toString
Killed by : none
negated conditional → TIMED_OUT

5.5
Location : toString
Killed by : none
negated conditional → NO_COVERAGE

6.6
Location : toString
Killed by : none
negated conditional → SURVIVED

736

1.1
Location : toString
Killed by : none
replaced return value with "" for fr/sii/ogham/email/message/Email::toString → TIMED_OUT

2.2
Location : toString
Killed by : none
replaced return value with "" for fr/sii/ogham/email/message/Email::toString → NO_COVERAGE

3.3
Location : toString
Killed by : none
replaced return value with "" for fr/sii/ogham/email/message/Email::toString → SURVIVED

742

1.1
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.htmlTemplateOnly(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

2.2
Location : buildContent
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlAndTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

3.3
Location : buildContent
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : buildContent
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
negated conditional → KILLED

745

1.1
Location : buildContent
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlAndTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

2.2
Location : buildContent
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.textTemplateOnly(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

4.4
Location : buildContent
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
negated conditional → KILLED

746

1.1
Location : buildContent
Killed by : none
negated conditional → SURVIVED

2.2
Location : buildContent
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.htmlAndText(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

4.4
Location : buildContent
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlAndTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

5.5
Location : buildContent
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlAndTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

6.6
Location : buildContent
Killed by : none
negated conditional → NO_COVERAGE

7.7
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.htmlAndText(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

747

1.1
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.htmlAndText(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED

2.2
Location : buildContent
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → NO_COVERAGE

3.3
Location : buildContent
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlAndTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED

749

1.1
Location : buildContent
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.invalidTemplate(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

3.3
Location : buildContent
Killed by : none
negated conditional → SURVIVED

4.4
Location : buildContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

750

1.1
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.htmlTemplateOnly(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED

2.2
Location : buildContent
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → NO_COVERAGE

752

1.1
Location : buildContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

2.2
Location : buildContent
Killed by : none
negated conditional → SURVIVED

3.3
Location : buildContent
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.invalidTemplate(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

753

1.1
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.textTemplateOnly(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED

2.2
Location : buildContent
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → NO_COVERAGE

757

1.1
Location : buildContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

2.2
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.invalidTemplate(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

3.3
Location : buildContent
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : buildContent
Killed by : oghamcore.ut.email.EqualsTest.email(oghamcore.ut.email.EqualsTest)
negated conditional → KILLED

758

1.1
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.invalidTemplate(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

2.2
Location : buildContent
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : buildContent
Killed by : none
negated conditional → SURVIVED

4.4
Location : buildContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

759

1.1
Location : buildContent
Killed by : none
replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → NO_COVERAGE

2.2
Location : buildContent
Killed by : oghamall.it.email.FluentEmailTest.invalidTemplate(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED

3.3
Location : buildContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/message/Email::buildContent → KILLED

Active mutators

Tests examined


Report generated by PIT OGHAM