ErrorHandlingTest Class

From AgileApps Support Wiki

This class explores a variety of error-handling conditions to determine what occurs, and when.

package com.platform.acme.test;

import com.platform.api.*;

public class ErrorHandlingTest
{
  static int N = 0;
  
  /**
   * Invoke this method from a macro to run a selected test.
   */
  public void runTests(Parameters p) throws Exception
  {
     test16();
  }
  
  // Results of the tests:
  //   1. Nothing appears in the debug log unless you put it there. 
  //      The unit test framework does. But errors by themselves do not.
  //   2. Standard Java Exceptions do not produce a message.
  //      To generate one, catch standard Exceptions and call throwError().)
  //   2. Exception messages are invisible to the user unless generated using
  //      "Functions.throwError(msg)" or "throw new Exception(msg)" 
  //      Those two are equivalent--but only throwError() requires a string argument.
  //   3. With either of them, the last one called is the ONLY message the user sees.
  //   4. If neither is called, then ALL showMessage() items are seen, in a 
  //      concatenated string.
  //   5. A message is usually displayed in a popup. 
  //      (In some cases, it appears at the top of the page.)
  //   6. If an exception has no message, no popup appears: "throw new Exception()"

  public void test16() throws Exception
  {
    N = 16;
    Functions.throwError("");
    // THE USER SEES AN EMPTY DIALOG WITH THE TITLE, "Error".
  }

  public void test15() throws Exception
  {
    N = 15;
    try {
      throwStandardJavaException();
    } catch (Exception e) {
      throw e;
    } 
    // THE USER SEES NOTHING.
  }

  public void test14() throws Exception
  {
    N = 14;
    try {
      throwAnError();
    } catch (Exception e) {
      throw e;
    } 
    // THE USER SEES THE throwError() MESSAGE.
  }

  public void test13() throws Exception
  {
    N = 13;
    try {
      throwCustomException();
    } catch (Exception e) {
      Functions.throwError("Test"+N+": Replacement message");
    } 
    // THE USER SEES THE REPLACEMENT MESSAGE.
  }

  public void test12() throws Exception
  {
    N = 12;
    try {
      throwCustomException();
    } catch (Exception e) {
      throw e;
    } 
    // THE USER SEES THE ORIGINAL EXCEPTION MESSAGE.
  }

  public void test11() throws Exception
  {
    N = 11;
    try {
      throwCustomException();
    } catch (Exception e) {
      // do nothing
    } 
    // THE USER SEES NOTHING.
  }

  public void test10() throws Exception
  {
    N = 10;
    Functions.showMessage("Test "+N+" -- msg part 1<br>");
    throw new Exception("Test "+N+" -- throwError");
    // THE USER SEES A POPUP WITH THE EXCEPTION. showMessage text is NOT seen.
  }

  public void test9() throws Exception
  {
    N = 9;
    Functions.showMessage("Test "+N+" -- msg part 1<br>");
    Functions.throwError("Test "+N+" -- throwError");
    // THE USER SEES A POPUP WITH THE ERROR. showMessage text is NOT seen.
  }
  
  public void test8() throws Exception
  {
    N = 8;
    Functions.showMessage("Test "+N+" -- part 1<br>");
    showAMessage();
    // THE USER SEES A POPUP WITH BOTH MESSAGES CONCATENATED.
  }
  
  public void test7() throws Exception
  {
    N = 7;
    Functions.showMessage("Test "+N+" -- part 1<br>");
    Functions.showMessage("Test "+N+" -- part 2");
    // THE USER SEES A POPUP WITH BOTH MESSAGES CONCATENATED.
  }

  public void test6() throws Exception
  {
    N = 6;
    throwAnError();
    // THE USER SEES POPUP WITH THE MESSAGE. THE DEBUG LOG SHOWS NOTHING.
  }

  public void test5() throws Exception
  {
    N = 5;
    Functions.throwError("Test "+ N);
    // THE USER SEES POPUP WITH THE MESSAGE. THE DEBUG LOG SHOWS NOTHING.
  }

  public void test4() throws Exception
  {
    N = 4;
    throwStandardJavaException();
    // THE USER SEES NOTHING THE DEBUG LOG SHOWS NOTHING.
  }

  public void test3() throws Exception
  {
    N = 3;
    throw new ArrayIndexOutOfBoundsException();
    // THE USER SEES NOTHING THE DEBUG LOG SHOWS NOTHING.
  }

  public void test2() throws Exception
  {
    N = 2;
    throwCustomException();
    // THE USER SEES POPUP WITH CUSTOM MESSAGE. THE DEBUG LOG SHOWS NOTHING.
    // (If there is no message, the popup is not displayed.)
  }

  public void test1() throws Exception
  {
    N = 1;
    throw new Exception("Test Exception");
    // THE USER SEES POPUP WITH CUSTOM MESSAGE. THE DEBUG LOG SHOWS NOTHING.
    // (If there is no message, the popup is not displayed.)
  }

  //*************************************************************************
  // UTILITY METHODS
  public void throwCustomException() throws Exception {
    // Throw an exception with an customized message
    throw new Exception("Test "+N+": Exception");
  }
  
  public void throwStandardJavaException() throws Exception { 
    // Throw a standard Java exception
    throw new ArrayIndexOutOfBoundsException();
  }

  public void throwStandardExceptionWithMessage() throws Exception { 
    // Throw a standard Java exception that includes a message
    throw new ArrayIndexOutOfBoundsException("IO Exception");
  }

  public void throwAnError() throws Exception {
    // Call the error method
    Functions.throwError("Test "+N+": throwError");
  }
  
  public void showAMessage() throws Exception{
    // Call the error method
      Functions.showMessage("Test "+N+" -- part 2");
  }
  
}