1 package com.ozacc.mail.mock;
3 import jakarta.mail.internet.InternetAddress;
5 import com.ozacc.mail.Mail;
8 * メールが同値であることを調べるメソッドを提供。
10 * <strong>注:</strong> 添付ファイルは比較対象になりません。
14 * @author Tomohiro Otsuka
15 * @version $Id: EqualityCheck.java,v 1.3.2.1 2004/11/25 08:01:18 otsuka Exp $
17 public class EqualityCheck {
19 private EqualityCheck() {}
22 * expectedとsentのメール内容が同一であるかどうかを判定します。<br>
23 * MultipartMailのインスタンスも指定できます。但し、添付ファイルはチェックされません。
27 * @return expectedとsentのメール内容が同一である場合 true
29 public static boolean equals(Mail expected, Mail sent) {
30 boolean mockMode = (expected instanceof MockMail);
33 if (expected.isMultipartMail()) {
37 if ((expected.getHtmlText() == null && sent.getHtmlText() != null)
38 || (expected.getHtmlText() != null && sent.getHtmlText() == null)
39 || (!expected.getHtmlText().equals(sent.getHtmlText()))) {
42 } else if (mockMode && expected.getHtmlText() != null) {
43 if (!expected.getHtmlText().equals(sent.getHtmlText())) {
50 if (!mockMode || (mockMode && expected.getReturnPath() != null)) {
51 if (expected.getReturnPath() != null && sent.getReturnPath() != null) {
52 if (!expected.getReturnPath().equals(sent.getReturnPath())) {
55 } else if ((expected.getReturnPath() != null && sent.getReturnPath() == null)
56 || (expected.getReturnPath() == null && sent.getReturnPath() != null)) {
62 if (!mockMode || (mockMode && expected.getFrom() != null)) {
63 if (expected.getFrom() != null && sent.getFrom() != null) {
64 if (!equals(expected.getFrom(), sent.getFrom())) {
67 } else if ((expected.getFrom() != null && sent.getFrom() == null)
68 || (expected.getFrom() == null && sent.getFrom() != null)) {
74 InternetAddress[] expectedAddresses = expected.getTo();
75 InternetAddress[] sentAddresses = sent.getTo();
76 if (!mockMode || (mockMode && expectedAddresses.length > 0)) {
77 if (expectedAddresses.length != sentAddresses.length) {
80 for (int i = 0; i < expectedAddresses.length; i++) {
81 if (!equals(expectedAddresses[i], sentAddresses[i])) {
88 expectedAddresses = expected.getCc();
89 sentAddresses = sent.getCc();
90 if (!mockMode || (mockMode && expectedAddresses.length > 0)) {
91 if (expectedAddresses.length != sentAddresses.length) {
94 for (int i = 0; i < expectedAddresses.length; i++) {
95 if (!equals(expectedAddresses[i], sentAddresses[i])) {
102 expectedAddresses = expected.getBcc();
103 sentAddresses = sent.getBcc();
104 if (!mockMode || (mockMode && expectedAddresses.length > 0)) {
105 if (expectedAddresses.length != sentAddresses.length) {
108 for (int i = 0; i < expectedAddresses.length; i++) {
109 if (!equals(expectedAddresses[i], sentAddresses[i])) {
116 if (!mockMode || (mockMode && expected.getReplyTo() != null)) {
117 if (expected.getReplyTo() != null && sent.getReplyTo() != null) {
118 if (!equals(expected.getReplyTo(), sent.getReplyTo())) {
121 } else if ((expected.getReplyTo() != null && sent.getReplyTo() == null)
122 || (expected.getReplyTo() == null && sent.getReplyTo() != null)) {
128 if (!mockMode || (mockMode && expected.getSubject().length() > 0)) {
129 if (!expected.getSubject().equals(sent.getSubject())) {
135 if (!mockMode || (mockMode && expected.getText().length() > 0)) {
136 if (!expected.getText().equals(sent.getText())) {
145 * 指定された二つのInternetAddressインスタンスが等しいかどうか判定します。
147 * InternetAddress#equals()メソッドでは、メールアドレスしか検査しないため、
148 * このメソッドではInternetAddressに名前が含まれている場合、その名前も
152 * @param a 比較するInternetAddressインスタンス
153 * @param b 比較するInternetAddressインスタンス
154 * @return 二つのInternetAddressインスタンスが等しい場合 true
156 public static boolean equals(InternetAddress a, InternetAddress b) {
158 if (a.getPersonal() != null || b.getPersonal() != null) {
159 return a.getPersonal().equals(b.getPersonal());