logo

abstract class

sys::Test

sys::Obj
  sys::Test
//
// Copyright (c) 2006, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
//   4 Jan 06  Brian Frank  Creation
//

**
** Test is the base for Fan unit tests.
**
abstract class Test
{

//////////////////////////////////////////////////////////////////////////
// Constructor
//////////////////////////////////////////////////////////////////////////

  **
  ** Protected constructor.
  **
  protected new make()

//////////////////////////////////////////////////////////////////////////
// Lifecycle
//////////////////////////////////////////////////////////////////////////

  **
  ** Get a unique id for this run of the test method.  This id is
  ** guaranteed to be unique for the life of the VM.
  **
  Str id()

  **
  ** Setup is called before running each test method.
  **
  virtual Void setup()

  **
  ** Teardown is called after running every test method.
  **
  virtual Void teardown()

//////////////////////////////////////////////////////////////////////////
// Verify
//////////////////////////////////////////////////////////////////////////

  **
  ** Verify that cond is true, otherwise throw a test
  ** failure exception.  If msg is non-null, include it
  ** in a failure exception.
  **
  Void verify(Bool cond, Str msg := null)

  **
  ** Verify that cond is false, otherwise throw a test
  ** failure exception.  If msg is non-null, include it
  ** in a failure exception.
  **
  Void verifyFalse(Bool cond, Str msg := null)

  **
  ** Verify that a == b, otherwise throw a test failure exception.
  ** If both a and b are nonnull, then this method also ensures
  ** that a.hash == b.hash, because any two objects which return
  ** true for equals() must also return the same hash code.  If
  ** msg is non-null, include it in failure exception.
  **
  Void verifyEq(Obj a, Obj b, Str msg := null)

  **
  ** Verify that a != b, otherwise throw a test failure exception.
  ** If msg is non-null, include it in failure exception.
  **
  Void verifyNotEq(Obj a, Obj b, Str msg := null)

  **
  ** Verify that a === b, otherwise throw a test failure exception.
  ** If msg is non-null, include it in failure exception.
  **
  Void verifySame(Obj a, Obj b, Str msg := null)

  **
  ** Verify that a !== b, otherwise throw a test* failure exception.
  ** If msg is non-null, include it in failure exception.
  **
  Void verifyNotSame(Obj a, Obj b, Str msg := null)

  **
  ** Verify that the function throws an Err of the
  ** exact same type as err (compare using === operator).
  **
  ** Examples:
  **   verifyErr(ParseErr#) |,| { Int.fromStr("@#!") }
  **
  Void verifyErr(Type errType, |->Void| c)

  **
  ** Throw a test failure exception.  If msg is non-null, include
  ** it in the failure exception.
  **
  Void fail(Str msg := null)

//////////////////////////////////////////////////////////////////////////
// Utils
//////////////////////////////////////////////////////////////////////////

  **
  ** Return a temporary test directory which may used as a scratch
  ** directory.  This directory is guaranteed to be created and empty
  ** the first time this method is called for a given test run.  This
  ** directory is also the same as the `Sys.appDir`.
  **
  File tempDir()

}

**************************************************************************
** TestErr
**************************************************************************

internal const class TestErr : Err
{
  new make(Str msg := null, Err cause := null)
}