1b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook/* 2b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * Copyright (C) 2010 The Android Open Source Project 3b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * 4b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * Licensed under the Apache License, Version 2.0 (the "License"); 5b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * you may not use this file except in compliance with the License. 6b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * You may obtain a copy of the License at 7b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * 8b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * http://www.apache.org/licenses/LICENSE-2.0 9b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * 10b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * Unless required by applicable law or agreed to in writing, software 11b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * distributed under the License is distributed on an "AS IS" BASIS, 12b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * See the License for the specific language governing permissions and 14b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook * limitations under the License. 15b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook */ 16b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 17b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrookpackage com.android.common; 18b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 19b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrookimport android.test.suitebuilder.annotation.SmallTest; 20b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 21b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrookimport java.util.HashMap; 22b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrookimport java.util.Map; 23b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 24b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrookimport junit.framework.TestCase; 25b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 26b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrookpublic class Rfc822ValidatorTest extends TestCase { 27b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 28b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook @SmallTest 29b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook public void testEmailValidator() { 30b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook Rfc822Validator validator = new Rfc822Validator("gmail.com"); 31b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook String[] validEmails = new String[] { 32b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook "a@b.com", "a@b.fr", "a+b@c.com", "a@b.info", "john@example.com", "john@example.fr", 33b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook "john@corp.example.com", 34b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook }; 35b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 36b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook for (String email : validEmails) { 37b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook assertTrue(email + " should be a valid email address", validator.isValid(email)); 38b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook } 39b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 40b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook String[] invalidEmails = new String[] { 41b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook "a", "a@b", "a b", "a@b.12", "john@example..com", "johnexample.com", "john.example.com" 42b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook }; 43b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 44b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook for (String email : invalidEmails) { 45b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook assertFalse(email + " should not be a valid email address", validator.isValid(email)); 46b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook } 47b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 48b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook Map<String, String> fixes = new HashMap<String, String>(); 49b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook fixes.put("a", "<a@gmail.com>"); 50b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook fixes.put("a b", "<ab@gmail.com>"); 51b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook fixes.put("a@b", "<a@b>"); 52490556a764a879cd0eaff358e90705cc1335c92eErik fixes.put("()~><@not.work", ""); 53490556a764a879cd0eaff358e90705cc1335c92eErik 54490556a764a879cd0eaff358e90705cc1335c92eErik for (Map.Entry<String, String> e : fixes.entrySet()) { 55490556a764a879cd0eaff358e90705cc1335c92eErik assertEquals(e.getValue(), validator.fixText(e.getKey()).toString()); 56490556a764a879cd0eaff358e90705cc1335c92eErik } 57490556a764a879cd0eaff358e90705cc1335c92eErik } 58490556a764a879cd0eaff358e90705cc1335c92eErik 59490556a764a879cd0eaff358e90705cc1335c92eErik @SmallTest 60490556a764a879cd0eaff358e90705cc1335c92eErik public void testEmailValidatorNullDomain() { 61490556a764a879cd0eaff358e90705cc1335c92eErik Rfc822Validator validator = new Rfc822Validator(null); 62490556a764a879cd0eaff358e90705cc1335c92eErik 63490556a764a879cd0eaff358e90705cc1335c92eErik Map<String, String> fixes = new HashMap<String, String>(); 64490556a764a879cd0eaff358e90705cc1335c92eErik fixes.put("a", "<a>"); 65490556a764a879cd0eaff358e90705cc1335c92eErik fixes.put("a b", "<a b>"); 66490556a764a879cd0eaff358e90705cc1335c92eErik fixes.put("a@b", "<a@b>"); 67490556a764a879cd0eaff358e90705cc1335c92eErik fixes.put("a@b.com", "<a@b.com>"); // this one is correct 68490556a764a879cd0eaff358e90705cc1335c92eErik 69490556a764a879cd0eaff358e90705cc1335c92eErik for (Map.Entry<String, String> e : fixes.entrySet()) { 70490556a764a879cd0eaff358e90705cc1335c92eErik assertEquals(e.getValue(), validator.fixText(e.getKey()).toString()); 71490556a764a879cd0eaff358e90705cc1335c92eErik } 72490556a764a879cd0eaff358e90705cc1335c92eErik } 73490556a764a879cd0eaff358e90705cc1335c92eErik 74490556a764a879cd0eaff358e90705cc1335c92eErik @SmallTest 75490556a764a879cd0eaff358e90705cc1335c92eErik public void testEmailValidatorRemoveInvalid() { 76490556a764a879cd0eaff358e90705cc1335c92eErik Rfc822Validator validator = new Rfc822Validator("google.com"); 77490556a764a879cd0eaff358e90705cc1335c92eErik validator.setRemoveInvalid(true); 78490556a764a879cd0eaff358e90705cc1335c92eErik 79490556a764a879cd0eaff358e90705cc1335c92eErik Map<String, String> fixes = new HashMap<String, String>(); 80490556a764a879cd0eaff358e90705cc1335c92eErik fixes.put("a", ""); 81490556a764a879cd0eaff358e90705cc1335c92eErik fixes.put("a b", ""); 82490556a764a879cd0eaff358e90705cc1335c92eErik fixes.put("a@b", ""); 83490556a764a879cd0eaff358e90705cc1335c92eErik fixes.put("a@b.com", "<a@b.com>"); // this one is correct 84b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook 85b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook for (Map.Entry<String, String> e : fixes.entrySet()) { 86b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook assertEquals(e.getValue(), validator.fixText(e.getKey()).toString()); 87b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook } 88b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook } 89b4f5e0e5755938f2be9a2f1a1a6609b018c530adPaul Westbrook} 90