/test-case {                    % <str> test-case
    print (\n) print
} def

/should {                       % <str> should
    pop
} def

/assert-equal {                 % <str> <any> <any> assert-equal
    pop pop pop
} def

/test-summary {	                % test-summary
    (.F\n) print
    (--------------------------------------------------\n) print
    (2 tests, 1 failed\n) print
    (\n) print
    (return-two\n) print
    (  should return 2\n) print
    (    expected: 2\n) print
    (    actual:   1\n) print
} def

/test-case {                    % <str> test-case mark
    print (\n) print

    % (*) mark the beginning of messages for the summary
    mark
} def

/should {                       % <str> should
    pop
} def

/assert-equal {                 % <str> <any> <any> assert-equal
    pop pop pop
} def

/test-summary {	                % test-summary
    (.F\n) print
    (--------------------------------------------------\n) print
    (2 tests, 1 failed\n) print
    (\n) print

    (return-two)
    (  should return 2)
    (    expected: 2)
    (    actual:   1)

    % release accumulated messages to stdout
    ] % (*) wrap up the array started in test-case
    {
        print (\n) print
    } forall
} def
