aboutsummaryrefslogtreecommitdiffstats
path: root/website/scripts/gs.js
blob: e0768f99a6e17f562769fa85deb678a6f7a3508e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/// Copyright (c) 2012 Ecma International.  All rights reserved. 
/// This code is governed by the BSD license found in the LICENSE file.

//Global Scope Test Case Validator
var doneCalled;
function $DONE(argError) {

    var testError;
    var result, resultError;

    if (argError) {
        testError = argError.toString();
    }

    if (doneCalled) {
        // ? log called twice
        return;
    }
    doneCalled = true;

    //An exception is expected
    if (testDescrip.negative !== undefined) {
        //TODO - come up with a generic way of catching the error type
        //from this.onerror

        var negRegexp = new RegExp(testDescrip.negative, "i"),
            unkRegexp = /^UnknownError:/;
        

        if (!testError) { //no exception was thrown
            result = 'fail';
            resultError = Error('No exception was thrown; expected an error "message"' +
                                ' property matching the regular expression "' +
                                testDescrip.negative + '".');
        } else if (!negRegexp.test(testError) && 
                   !unkRegexp.test(testError)) {
            //wrong type of exception thrown
            result = 'fail';
            resultError = Error('Expected an exception with a "message"' +
                                ' property matching the regular expression "' +
                                testDescrip.negative +
                                '" to be thrown; actual was "' +
                                testError + '".');

        } else {
            result = 'pass';
            resultError = 'undefined';
        }
    } else if (testError) {
        //Exception was not expected to be thrown
        result = 'fail';
        resultError = Error('Unexpected exception, "' + testError + '" was thrown.');
    } else {
        result = 'pass';
        resultError = undefined;
    }

    testRun(testDescrip.id,
            testDescrip.path,
            testDescrip.description,
            testDescrip.code,
            result,
            resultError);

    //teardown
    testFinished();
}