Validating Email Address Parsing Implementation in ZXing
This test suite validates email address parsing functionality in the ZXing barcode processing library. It thoroughly tests the EmailAddressParsedResult class which handles various email address formats, mailto: URIs, and different email-related barcode formats.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
zxing/zxing
core/src/test/java/com/google/zxing/client/result/EmailAddressParsedResultTestCase.java
/*
* Copyright 2007 ZXing authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.zxing.client.result;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.Result;
import org.junit.Assert;
import org.junit.Test;
/**
* Tests {@link EmailAddressParsedResult}.
*
* @author Sean Owen
*/
public final class EmailAddressParsedResultTestCase extends Assert {
@Test
public void testEmailAddresses() {
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress(null));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress(""));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123.365.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("abc.def.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("[email protected]"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@abcd"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@ab,cd.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@ab#cd.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@ab!#cd.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@ab_cd.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("[email protected]"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("[email protected]"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("[email protected]"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("[email protected]"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("[email protected]"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("[email protected]"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("[email protected]"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("建設省[email protected]"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("[email protected]"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("建設省[email protected]"));
}
@Test
public void testEmailAddress() {
doTest("[email protected]", "[email protected]", null, null);
doTest("mailto:[email protected]", "[email protected]", null, null);
}
@Test
public void testTos() {
doTest("mailto:[email protected],[email protected]",
new String[] {"[email protected]", "[email protected]"},
null, null, null, null);
doTest("mailto:[email protected],[email protected]",
new String[] {"[email protected]", "[email protected]"},
null, null, null, null);
}
@Test
public void testCCs() {
doTest("mailto:[email protected]",
null,
new String[] {"[email protected]"},
null, null, null);
doTest("mailto:[email protected],[email protected]",
null,
new String[] {"[email protected]", "[email protected]"},
null, null, null);
}
@Test
public void testBCCs() {
doTest("mailto:[email protected]",
null, null,
new String[] {"[email protected]"},
null, null);
doTest("mailto:[email protected],[email protected]",
null, null,
new String[] {"[email protected]", "[email protected]"},
null, null);
}
@Test
public void testAll() {
doTest("mailto:[email protected][email protected]&[email protected]&subject=baz&body=buzz",
new String[] {"[email protected]"},
new String[] {"[email protected]"},
new String[] {"[email protected]"},
"baz",
"buzz");
}
@Test
public void testEmailDocomo() {
doTest("MATMSG:TO:[email protected];;", "[email protected]", null, null);
doTest("MATMSG:TO:[email protected];SUB:Stuff;;", "[email protected]", "Stuff", null);
doTest("MATMSG:TO:[email protected];SUB:Stuff;BODY:This is some text;;", "[email protected]",
"Stuff", "This is some text");
}
@Test
public void testSMTP() {
doTest("smtp:[email protected]", "[email protected]", null, null);
doTest("SMTP:[email protected]", "[email protected]", null, null);
doTest("smtp:[email protected]:foo", "[email protected]", "foo", null);
doTest("smtp:[email protected]:foo:bar", "[email protected]", "foo", "bar");
}
private static void doTest(String contents,
String to,
String subject,
String body) {
doTest(contents, new String[] {to}, null, null, subject, body);
}
private static void doTest(String contents,
String[] tos,
String[] ccs,
String[] bccs,
String subject,
String body) {
Result fakeResult = new Result(contents, null, null, BarcodeFormat.QR_CODE);
ParsedResult result = ResultParser.parseResult(fakeResult);
assertSame(ParsedResultType.EMAIL_ADDRESS, result.getType());
EmailAddressParsedResult emailResult = (EmailAddressParsedResult) result;
assertArrayEquals(tos, emailResult.getTos());
assertArrayEquals(ccs, emailResult.getCCs());
assertArrayEquals(bccs, emailResult.getBCCs());
assertEquals(subject, emailResult.getSubject());
assertEquals(body, emailResult.getBody());
}
}