from neo.constants import *

def test_eq(val1, val2, error, last=TRUE, failed={'status':FALSE}):
    """Check equality of val1 and val2.  If not equal, generate appropriate documentation."""
    try:
        assert val1 == val2, error
    except AssertionError, e:
        print "%s (%s != %s)" % (e, val1, val2)
        print "\n            "
        failed['status'] = TRUE
    else:
        if last:
            if not failed['status']:
                print "passed"

def test_ne(val1, val2, error, last=TRUE, failed={'status':FALSE}):
    """Check inequality of val1 and val2.  If equal, an error occured in testing; generate
    appropriate documentation."""
    from neo.istring import istring, CALLER
    error = istring(error, CALLER)
    try:
        assert val1 != val2, error
    except AssertionError, e:
        sys.stdout.write("%s (%s == %s)\n" % (e, val1, val2))
        failed['status'] = TRUE
    else:
        if last:
            if not failed['status']:
                sys.stdout.write("passed\n")
            failed['status'] = FALSE

def test_exc(eval_str, exception, last=TRUE, failed={'status':FALSE}):
    """Eval the string, catching the exception provided.  If the exception arises, the
    test passes, otherwise it fails."""
    import sys
    l_globals = sys._getframe(2).f_globals
    l_locals  = sys._getframe(2).f_locals
    try:
        eval(eval_str, l_globals, l_locals)
    except exception:
        if last:
            if not failed['status']:
                sys.stdout.write("passed\n")
            failed['status'] = FALSE
    else:
        sys.stdout.write("%s (%s == %s)\n" % (e, val1, val2))
        failed['status'] = TRUE

def disp(text, indent=0):
    import sys
    spaces = ' ' * (indent * 4)
    sys.stdout.write("%s%s" % (spaces, text))



syntax highlighted by Code2HTML, v. 0.9.1