up previous next contents index
Next: Online Resources Up: junit_dd Previous: Integrating JUnit into JBuilder   Contents   Index

Sample Code

Here is the code for a Validator class:

package com.devdaily.opensource.web.util;

import javax.mail.internet.InternetAddress;
import javax.mail.internet.AddressException;
import java.util.StringTokenizer;

public class Validator
{

  public static boolean isValidEmailAddress(String emailAddress)
  {
    // a null string is invalid
    if ( emailAddress == null ) return false;

    // a string without an @ symbol is an invalid email address
    if ( emailAddress.indexOf("@") < 0 ) return false;

    // a string without an @ symbol is an invalid email address
    if ( emailAddress.indexOf(".") < 0 ) return false;

    if ( lastEmailFieldTwoCharsOrMore(emailAddress) == false ) return false;

    try
    {
      InternetAddress internetAddress = new InternetAddress(emailAddress);
      System.err.println( "Address is GOOD: " + emailAddress );
      return true;
    }
    catch (AddressException ae)
    {
      System.err.println( "Address is BAD: " + emailAddress );
      return false;
    }
}

/**
 * Returns true if the last email field (i.e., the country code, or something
 * like .com, .biz, .cc, etc.) is two chars or more in length, which it really
 * must be to be legal.
 */
private static boolean lastEmailFieldTwoCharsOrMore(String emailAddress)
{
  StringTokenizer st = new StringTokenizer(emailAddress,".");
  String lastToken = null;
  while ( st.hasMoreTokens() )
  {
    lastToken = st.nextToken();
  }

  if ( lastToken.length() >= 2 )
  {
    return true;
  }
  else
  {
    return false;
  }
}

}

Here is the code for the EmailAddressValidatorTests class:

package com.devdaily.opensource.web.utilTest;

import junit.framework.*;
import com.devdaily.opensource.web.util.Validator;

public class EmailAddressValidatorTests extends TestCase
{

/**
 * Set up work to be done before test cases.
 */
protected void setUp()
{
}

/**
 * do a tear down after each test
 */
protected void tearDown()
{
}



public void testAla()
{
  String address = "ala@missiondata.com";
  boolean expectedResult = true;
  boolean actualResult = Validator.isValidEmailAddress(address);
  assert( "\ntestAla, EXPECTED: " + expectedResult + ", GOT: " + actualResult,
    (expectedResult==actualResult) );
}


public void testBlank()
{
  String address = "";
  boolean expectedResult = false;
  boolean actualResult = Validator.isValidEmailAddress(address);
  assert( "\ntestBlank, EXPECTED: " + expectedResult + ", GOT: " + actualResult,
    (expectedResult==actualResult) );
}


public void testNull()
{
  String address = null;
  boolean expectedResult = false;
  boolean actualResult = Validator.isValidEmailAddress(address);
  assert( "\ntestBlank, EXPECTED: " + expectedResult + ", GOT: " + actualResult,
    (expectedResult==actualResult) );
}


public void testAtSymbols()
{
  assert( "\ntestAtSymbols1", !Validator.isValidEmailAddress("@") );
  assert( "\ntestAtSymbols2", !Validator.isValidEmailAddress("@devdaily") );
  assert( "\ntestAtSymbols3", !Validator.isValidEmailAddress("@devdaily.com") );
  assert( "\ntestAtSymbols4", !Validator.isValidEmailAddress(" @devdaily.com") );
  assert( "\ntestAtSymbols5", !Validator.isValidEmailAddress("al @devdaily.com") );
  assert( "\ntestAtSymbols6", !Validator.isValidEmailAddress("@devdaily .com") );
  assert( "\ntestAtSymbols7", !Validator.isValidEmailAddress("@devdaily. com") );
  assert( "\ntestAtSymbols8", !Validator.isValidEmailAddress("al@devdaily") );
  assert( "\ntestAtSymbols9", !Validator.isValidEmailAddress("al@ devdaily") );
}


public void testSingleName()
{
  assert( "\ntestSingleName1", !Validator.isValidEmailAddress("al") );
  assert( "\ntestSingleName2", !Validator.isValidEmailAddress("frankenstein") );
}


public void testlongBlank()
{
  assert( "\ntestlongBlank1", !Validator.isValidEmailAddress(" ") );
  assert( "\ntestlongBlank2", !Validator.isValidEmailAddress(" ") );
  assert( "\ntestlongBlank3", !Validator.isValidEmailAddress(" ") );
}


public void testCrazyStuff()
{
  assert( "\ntestCrazyStuff1", !Validator.isValidEmailAddress(".@") );
  assert( "\ntestCrazyStuff2", !Validator.isValidEmailAddress("@.") );
  assert( "\ntestCrazyStuff3", !Validator.isValidEmailAddress("@.@.@.@.") );
  assert( "\ntestCrazyStuff4", !Validator.isValidEmailAddress("a@b.c") );
  assert( "\ntestCrazyStuff5",    !Validator.isValidEmailAddress("alvinjalexander@yahoo.c") );
  assert( "\ntestCrazyStuff6", !Validator.isValidEmailAddress("@@@.cc") );
  assert( "\ntestCrazyStuff7", !Validator.isValidEmailAddress("ala@orange@missiondata.com") );
}


public void testIpAddresses()
{
  //assert( "\ntestIpAddresses", Validator.isValidEmailAddress("chriss@127.0.0.1") );
}


public static void main(String args[])
{
  junit.textui.TestRunner.run(EmailAddressValidatorTests.class);
}

public EmailAddressValidatorTests(String name)
{
  super(name);
}

/**
 * add one line here for each test in the suite
 */
public static Test suite()
{
  TestSuite suite = new TestSuite();

  // run tests manually
  //suite.addTest( new ValidatorTests("testNumericAddress1") );
  //return suite;

  // or, run tests dynamically
  return new TestSuite(EmailAddressValidatorTests.class);
}

}


up previous next contents index
Next: Online Resources Up: junit_dd Previous: Integrating JUnit into JBuilder   Contents   Index