Skip to content

Commit 39014bb

Browse files
committed
Work on testsuite
1 parent af85a91 commit 39014bb

File tree

5 files changed

+123
-26
lines changed

5 files changed

+123
-26
lines changed

_helpers/tester.js

Lines changed: 98 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,112 @@
1-
function comparer(result, should){
1+
function comparer(result, should) {
2+
var valid = true;
23

3-
var valid = [1, 'OK'];
4-
5-
if( result === null || result === false || result === undefined ){
4+
if( result === null || result === false || result === undefined ) {
65
if(result != should){
7-
return [-3, 'Got nothing'];
6+
return false;
87
}
9-
} else if( result.constructor === Array || result.constructor === Object ){
8+
} else if( result.constructor === Array || result.constructor === Object ) {
109
for (key in result){
11-
// recurse
10+
// Recurse
1211
subres = comparer(result[key], should[key]);
1312
if(subres[0] < 1){
14-
return [subres[0], subres[1]];
13+
return subres;
1514
}
1615
}
17-
} else{
16+
} else {
1817
if(should != result){
19-
return [-99, 'General mismatch'];
18+
return false;
2019
}
2120
}
2221

2322
return valid;
23+
}
24+
25+
function trim( str, charlist ) {
26+
// http://kevin.vanzonneveld.net
27+
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
28+
// + improved by: mdsjack (http://www.mdsjack.bo.it)
29+
// + improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
30+
// + input by: Erkekjetter
31+
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
32+
// + input by: DxGx
33+
// + improved by: Steven Levithan (http://blog.stevenlevithan.com)
34+
// * example 1: trim(' Kevin van Zonneveld ');
35+
// * returns 1: 'Kevin van Zonneveld'
36+
// * example 2: trim('Hello World', 'Hdle');
37+
// * returns 2: 'o Wor'
38+
39+
var whitespace;
40+
41+
if(!charlist){
42+
whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
43+
} else{
44+
whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
45+
}
46+
47+
for (var i = 0; i < str.length; i++) {
48+
if (whitespace.indexOf(str.charAt(i)) === -1) {
49+
str = str.substring(i);
50+
break;
51+
}
52+
}
53+
for (i = str.length - 1; i >= 0; i--) {
54+
if (whitespace.indexOf(str.charAt(i)) === -1) {
55+
str = str.substring(0, i + 1);
56+
break;
57+
}
58+
}
59+
return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
60+
}
61+
62+
function print_r( array, return_val ) {
63+
// http://kevin.vanzonneveld.net
64+
// + original by: Michael White (http://crestidg.com)
65+
// + improved by: Ben Bryan
66+
// * example 1: print_r(1, true);
67+
// * returns 1: 1
68+
69+
var output = "", pad_char = " ", pad_val = 4;
70+
71+
var formatArray = function (obj, cur_depth, pad_val, pad_char) {
72+
if (cur_depth > 0) {
73+
cur_depth++;
74+
}
75+
76+
var base_pad = repeat_char(pad_val*cur_depth, pad_char);
77+
var thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char);
78+
var str = "";
79+
80+
if (obj instanceof Array || obj instanceof Object) {
81+
str += "Array\n" + base_pad + "(\n";
82+
for (var key in obj) {
83+
if (obj[key] instanceof Array) {
84+
str += thick_pad + "["+key+"] => "+formatArray(obj[key], cur_depth+1, pad_val, pad_char);
85+
} else {
86+
str += thick_pad + "["+key+"] => " + obj[key] + "\n";
87+
}
88+
}
89+
str += base_pad + ")\n";
90+
} else {
91+
str = obj.toString();
92+
}
93+
94+
return str;
95+
};
96+
97+
var repeat_char = function (len, pad_char) {
98+
var str = "";
99+
for(var i=0; i < len; i++) {
100+
str += pad_char;
101+
};
102+
return str;
103+
};
104+
output = formatArray(array, 0, pad_val, pad_char);
105+
106+
if (return_val !== true) {
107+
document.write("<pre>" + output + "</pre>");
108+
return true;
109+
} else {
110+
return output;
111+
}
24112
}

_helpers/tester.php

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,17 @@
2121
*/
2222

2323
function find_files($dir, $file=false) {
24-
2524
if (!is_dir($dir)) {
2625
die("Dir: $dir does not exist");
2726
}
2827

29-
3028
if ($file) {
31-
$cmd = "find $dir -type f -name *.js |grep $file.js";
29+
$cmd = "find ".$dir." -type f -name '*.js' |grep '".$file.".js'";
3230
} else {
33-
$cmd = "find $dir -type f -name *.js |sort";
31+
$cmd = "find ".$dir." -type f -name '*.js' |sort";
3432
}
3533

34+
echo $cmd."\n";
3635
exec($cmd, $o, $r);
3736
if ($r) {
3837
die("Command: $cmd failed");
@@ -65,6 +64,7 @@ function compile_tester_source($file, $example_set, $includes = false) {
6564
$tester = "";
6665

6766
// Load Includes
67+
$tester .= "// Load Includes"."\n";
6868
if (is_array($includes)) {
6969
foreach ($includes as $include) {
7070
$tester .= "load('$include');\n";
@@ -73,21 +73,34 @@ function compile_tester_source($file, $example_set, $includes = false) {
7373

7474
// Load actual function source
7575
$tester .= "load('$file');\n";
76+
$tester .= ""."\n";
7677

7778
// Execute Example Code
79+
$tester .= "// Execute Example Code"."\n";
7880
foreach($example_lines as $i=>$example_line) {
7981
if (($i+1) == $example_lines_count) {
80-
$tester .= "result = $example_line;";
82+
$tester .= "returns = ".trim($example_line).";";
8183
} else {
8284
$tester .= "$example_line;";
8385
}
8486
$tester .= "\n";
8587
}
88+
$tester .= ""."\n";
8689

8790
// Compare return value
88-
91+
$tester .= "// Compare return value"."\n";
92+
$tester .= "success = comparer(returns, ".$example_set["returns"].");"."\n";
93+
$tester .= "print(success, returns);"."\n";
94+
$tester .= ""."\n";
8995

9096
// Compare results
97+
$prt = explode(" == ", $example_set["results"]);
98+
$key = array_shift($prt);
99+
$val = implode(" == ", $prt);
100+
101+
$tester .= "// Compare results"."\n";
102+
$tester .= "success = comparer($key, $val);"."\n";
103+
$tester .= "print(success, trim(print_r(data, true)));"."\n";
91104

92105
//$example_set["returns"];
93106

@@ -114,9 +127,7 @@ function test_file($file) {
114127
echo "Testing $func\n\n";
115128

116129
foreach ($info["examples"] as $i=>$example_set) {
117-
118-
119-
130+
print_r($example_set);
120131
$tester = compile_tester_source($file, $example_set, $includes);
121132

122133
echo $tester;
@@ -132,8 +143,8 @@ function test_file($file) {
132143
if ($r) {
133144
die("Command: $cmd failed\n");
134145
}
135-
136146
print_r($o);
147+
137148
}
138149

139150
echo "\n";
@@ -204,8 +215,6 @@ function parse_comments($comments, $mapping) {
204215
/**
205216
* Run
206217
*/
207-
208-
209218
$file = (!isset($argv[1]) ? false : $argv[1]);
210219
$files = find_files($config["dir_functions"], $file);
211220
test_files($files);

functions/array/array_map.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ function array_map( callback ) {
22
// http://kevin.vanzonneveld.net
33
// + original by: Andrea Giammarchi (http://webreflection.blogspot.com)
44
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
5-
// * example 1: array_map( function(a){return (a * a * a);}, [1, 2, 3, 4, 5] );
5+
// * example 1: array_map( function(a){return (a * a * a)}, [1, 2, 3, 4, 5] );
66
// * returns 1: [ 1, 8, 27, 64, 125 ]
77

88

functions/array/array_unique.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ function array_unique( array ) {
33
// + original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com)
44
// + input by: duncan
55
// + bufixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
6-
// * example 1: array_unique(['Kevin','Kevin','van','Zonneveld']);
6+
// * example 1: array_unique(['Kevin','Kevin','van','Zonneveld','Kevin']);
77
// * returns 1: ['Kevin','van','Zonneveld']
88

99
var p, i, j, tmp_arr = array;

functions/array/ksort.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ function ksort(array, sort_flags) {
22
// http://kevin.vanzonneveld.net
33
// + original by: GeekFG (http://geekfg.blogspot.com)
44
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
5-
// * example 1: var in = {2: 'van', 3: 'Zonneveld', 1: 'Kevin'}; ksort(in);
5+
// * example 1: data = {2: 'van', 3: 'Zonneveld', 1: 'Kevin'}; ksort(data);
66
// * returns 1: true
7-
// * results 1: in == {1: 'Kevin', 2: 'van', 3: 'Zonneveld'}
7+
// * results 1: data == {1: 'Kevin', 2: 'van', 3: 'Zonneveld'}
88

99
var tmp_arr = {}, values = array, keys = [], key_num = 0, key = '', i = 0;
1010
var sorter = false, array = false;

0 commit comments

Comments
 (0)