-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathtestsuite.js
121 lines (106 loc) · 4 KB
/
testsuite.js
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/* Javascript Object Inheritance Implementation ______ ________
* (c) 2016 <[email protected]> __ / / __ \/ _/ _/
* Licensed under MIT. / // / /_/ // /_/ /
* ------------------------------------------------------ \___/\____/___/__*/
/**
* TestSuite Definition
*/
var testsuite = {
code: "./dist/joii.js",
tests: [
// PrototypeBuilder
"./test/PrototypeBuilder/DeepCopyTest.js",
"./test/PrototypeBuilder/InheritanceTest.js",
"./test/PrototypeBuilder/PropertyMetaTest.js",
"./test/PrototypeBuilder/TraitTest.js",
"./test/PrototypeBuilder/MetaTraitTest.js",
// ClassBuilder
"./test/ClassBuilder/StaticTest.js",
"./test/ClassBuilder/InstantiationTest.js",
"./test/ClassBuilder/InheritanceTest.js",
"./test/ClassBuilder/AbstractImplementationTest.js",
"./test/ClassBuilder/VisibilityTest.js",
"./test/ClassBuilder/GetterTest.js",
"./test/ClassBuilder/SetterValidationTest.js",
"./test/ClassBuilder/NullableTypeTest.js",
"./test/ClassBuilder/TypeValidationTest.js",
"./test/ClassBuilder/InstanceOfTest.js",
"./test/ClassBuilder/CallTest.js",
"./test/ClassBuilder/ConstantTest.js",
"./test/ClassBuilder/SerializeTest.js",
"./test/ClassBuilder/FunctionOverloadingTests.js",
// InterfaceBuilder,
"./test/InterfaceBuilder/InterfaceBuilderTest.js",
"./test/InterfaceBuilder/InterfaceValidationTest.js",
// EnumBuilder
"./test/EnumBuilder/EnumBuilderTest.js",
// Reflection
"./test/Reflection/ReflectionTest.js",
// GitHub Reported Issues
"./test/IssueReports/IssueReport4.js",
"./test/IssueReports/IssueReport9.js",
"./test/IssueReports/IssueReport10.js",
"./test/IssueReports/IssueReport11.js",
"./test/IssueReports/IssueReport15.js",
"./test/IssueReports/IssueReport16.js",
"./test/IssueReports/IssueReport19.js",
"./test/IssueReports/IssueReport21.js",
"./test/IssueReports/IssueReport25.js",
"./test/IssueReports/IssueReport29.js"
]
};
/**
* Platform-independent bootstrap.
*/
if (typeof (window) === 'undefined') {
// Are we running on CLI / NodeJS ?
var qunit = require("qunit");
qunit.run(testsuite);
} else {
// We're running a browser.
// change to src version
testsuite.code = [
'src/Config.js',
'src/Compatibility.js',
'src/PrototypeBuilder.js',
'src/ClassBuilder.js',
'src/InterfaceBuilder.js',
'src/EnumBuilder.js',
'src/Reflection.js',
'src/joii.js',
"https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.2/require.min.js" // need requireJS for one of the issue reports
];
// ensure that all scripts load in the right order, so that the tests have the same ordinal each time
var loaded_scripts = 0;
var total_scripts = testsuite.tests.length;
var all_scripts_to_load = [];
var array_index = 0;
if (typeof (testsuite.code) === 'object') {
total_scripts += testsuite.code.length;
all_scripts_to_load = testsuite.code.slice(0);
} else {
total_scripts++;
all_scripts_to_load.push(testsuite.code);
}
Array.prototype.push.apply(all_scripts_to_load, testsuite.tests);
var loadNextScript = function(file) {
if (array_index < all_scripts_to_load.length) {
addScript(all_scripts_to_load[array_index]);
array_index++;
}
};
var addScript = function(file) {
var s = document.createElement('script');
s.setAttribute('type', 'text/javascript');
s.setAttribute('src', file);
s.onload = function() {
loaded_scripts++;
loadNextScript();
};
document.getElementsByTagName('head')[0].appendChild(s);
};
var require = function() {
return window;
};
loadNextScript();
}