import SimpleDate;
import SimpleMailMessage;
import SimpleOutput;

/**
 * A simple test of the SimpleMailMessage class.
 * 
 * @author Samuel A. Rebelsky
 * @version 1.0 of September 1999
 */
public class TestSMM {
  public static void main(String[] args) {
    // Prepare for output.
    SimpleOutput out = new SimpleOutput();

    // Can we create a message by specifying all the fields?
    SimpleMailMessage messageOne = 
      new SimpleMailMessage(
        "Sam Rebelsky", "rebelsky@grinnell.edu",
        "Clif Flynt", "clif@cflynt.com",
        new SimpleDate(1999, 9, 15),
        "Thanks!",
        "Thanks for doing such a good job of preparing the\n" +
          "students in 151.  It's making my job in 152 much easier.\n" +
          "-- SamR\n");
    out.println("First message: ");
    out.println(messageOne.toString());
    out.println("-----------");
    out.println();

    // Make a reply
    SimpleMailMessage replyOne = messageOne.makeReply();
    out.println("The reply: ");
    out.println(replyOne.toString());
    out.println("-----------");
    out.println();

    // Set the body.
    replyOne.setBody("Glad to help.\n");
    out.println("The reply with updated body: ");
    out.println(replyOne.toString());
    out.println("-----------");
    out.println();

    // Can we change the recipient?
    messageOne.setRecipient("Henry Walker", "walker@math.grin.edu");
    out.println("Returning to original message ...");
    out.println("After changing recipient: ");
    out.println(messageOne.toString());
    out.println("-----------");
    out.println();

    // What happens when we drop the subject?  Note that we use ""
    // rather than null because SimpleMailMessage tells us to do so.
    messageOne.setSubject("");
    out.println("After dropping subject: ");
    out.println(messageOne.toString());
    out.println("-----------");
    out.println();
   
    // Can we change the subject?
    messageOne.setSubject("Thanks for preparing 151 students");
    out.println("After changing subject: ");
    out.println(messageOne.toString());
    out.println("-----------");
    out.println();

    // Can we drop the body?
    messageOne.setBody("");
    out.println("After dropping body: ");
    out.println(messageOne.toString());
    out.println("-----------");
    out.println();

    // What happens when we create an empty message?
    SimpleMailMessage messageTwo = new SimpleMailMessage();
    out.println("Empty message:");
    out.println(messageTwo.toString());
    out.println("-----------");
    out.println();

    // Start filling in the blanks
    messageTwo.setSender("Sam Rebelsky", "rebelsky@grinnell.edu");
    messageTwo.setRecipient("John Stone", "stone@math.grin.edu");
    messageTwo.setBody("Don't forget to send me your comments.\n");
    out.println("With some details:");
    out.println(messageTwo.toString());
    out.println("-----------");
    out.println();
     
    // Generate a reply   
    SimpleMailMessage replyTwo = messageTwo.makeReply();
    out.println("The reply:");
    out.println(replyTwo.toString());
    out.println("-----------");
    out.println();
 
    // Fill in the body
    replyTwo.setBody("Of course.\n");
    out.println("The updated reply:");
    out.println(replyTwo.toString());
    out.println("-----------");
    out.println();
 
  } // main(String[])

} // class TestSMM

