aboutsummaryrefslogtreecommitdiffstats
path: root/build/test/js/test.js
blob: e4da77b36294da255c1c216bdd6bdf4360e49121 (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
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
function runTests(files) {
	runTest( files, 0 );
}

function runTest( files, num ) {
	$.get(files[num],function(js){
		js = js.replace(/&lt;/g, "<").replace(/&gt;/g, ">");

		try {
			eval(js);
		} catch(e) {
			Test.push( [ false, "Died on test #" + Test.length + ": " + e ] );
		}

		var good = 0, bad = 0;
		var ol = document.createElement("ol");

		var li = "", state = "pass";
		for ( var i = 0; i < Test.length; i++ ) {
			var li = document.createElement("li");
			li.className = Test[i][0] ? "pass" : "fail";
			li.innerHTML = Test[i][1];
			ol.appendChild( li );

			if ( !Test[i][0] ) {
				state = "fail";
				bad++;
			} else good++;
		}

		var li = document.createElement("li");
		li.className = state;

		var b = document.createElement("b");
		b.innerHTML = files[num] + " <b style='color:black;'>(<b class='fail'>" + bad + "</b>, <b class='pass'>" + good + "</b>, " + Test.length + ")</b>";
		b.onclick = function(){
			var n = this.nextSibling;
			if ( jQuery.css( n, "display" ) == "none" )
				n.style.display = "block";
			else
				n.style.display = "none";
		};
		li.appendChild( b );

		li.appendChild( ol );

		document.getElementById("tests").appendChild( li );

		Test = [];
		if ( ++num < files.length ) runTest( files, num );
	});
}

var Test = [];

function ok(a, msg) {
	Test.push( [ !!a, msg ] );
}

function cmpOK( a, c, b, msg ) {
	var res;
	eval( "res = (a " + c + " b)" );
	Test.push( [ res, msg ] );
}

function isSet(a, b, msg) {
	var ret = true;

	if ( a && b && a.length == b.length ) {
		for ( var i in a )
			if ( a[i] != b[i] )
				ret = false;
	} else
		ret = false;

	if ( !ret && console )
		console.log( msg, a, b );

	Test.push( [ ret, msg ] );
}

function q() {
	var r = [];

	for ( var i = 0; i < arguments.length; i++ )
		r.push( document.getElementById( arguments[i] ) );

	return r;
}

function t(a,b,c) {
	var f = jQuery.find(b);

	var s = "";
	for ( var i = 0; i < f.length; i++ )
		s += (s && ",") + '"' + f[i].id + '"';

	isSet(f, q.apply(q,c), a + " (" + b + ")");
}

function o(a) {
	var li = document.createElement("li");
	li.innerHTML = a;
	if ( a.indexOf("#") == 0 )
		li.className = "comment";
	else if ( a.indexOf("TODO") >= 0 )
		li.className = "todo";
	else if ( a.indexOf("not ok") == 0 )
		li.classname = "fail";
	else
		li.className = "pass";
	document.getElementById("test").appendChild(li);
}

//plan({noPlan: true});