30 |
}; |
}; |
31 |
*/ |
*/ |
32 |
|
|
33 |
function get_div(name) { |
function get_el(name) { |
34 |
var div = document.getElementById(name); |
var div = document.getElementById(name); |
35 |
if (! div) alert("can't find div "+name); |
if (! div) alert("can't find div "+name); |
36 |
return div; |
return div; |
37 |
} |
} |
38 |
|
|
|
var good_div = null; |
|
|
var bad_div = null; |
|
39 |
var test_div = null; |
var test_div = null; |
40 |
|
|
41 |
|
|
42 |
var results_output = ''; |
var passed_tests = 0; |
43 |
var debug_output = ''; |
var failed_tests = 0; |
|
var test_ok = 0; |
|
|
var test_error = 0; |
|
44 |
var test_failed = false; |
var test_failed = false; |
45 |
|
|
46 |
var word_nr = -1; // first emement is word_nr++ |
var word_nr = -1; // first emement is word_nr++ |
47 |
var words = Array(); |
var words = Array(); |
48 |
|
var total_words = null; |
49 |
|
|
50 |
function msg_debug(msg) { |
function msg_debug(msg) { |
51 |
debug_output += msg+"<br/>\n"; |
var e = document.createElement("span"); |
52 |
test_div.appendChild(document.createTextNode("DEBUG: "+msg)); |
e.setAttribute('style', 'color: black;'); |
53 |
|
e.appendChild(document.createTextNode(msg)); |
54 |
|
test_div.appendChild(e); |
55 |
test_div.appendChild(document.createElement("br")); |
test_div.appendChild(document.createElement("br")); |
56 |
return; |
return; |
57 |
} |
} |
58 |
|
|
59 |
function msg_error(msg) { |
function msg_error(msg) { |
60 |
var e = document.createElement("span"); |
var e = document.createElement("span"); |
61 |
// e.style.color = 'red'; |
e.setAttribute('style', 'color: red;'); |
62 |
e.appendChild(document.createTextNode(msg)); |
e.appendChild(document.createTextNode(msg)); |
|
bad_div.appendChild(e); |
|
|
bad_div.appendChild(document.createElement("br")); |
|
63 |
|
|
64 |
test_div.appendChild(e); |
test_div.appendChild(e); |
65 |
test_div.appendChild(document.createElement("br")); |
test_div.appendChild(document.createElement("br")); |
66 |
|
|
67 |
test_error++; |
failed_tests++; |
68 |
test_failed = true; |
test_failed = true; |
69 |
return true; |
return true; |
70 |
} |
} |
71 |
|
|
72 |
function msg_ok(msg) { |
function msg_ok(msg) { |
73 |
var e = document.createElement("span"); |
var e = document.createElement("span"); |
74 |
e.style.color = 'green'; |
e.setAttribute('style', 'color: green;'); |
75 |
e.appendChild(document.createTextNode(msg)); |
e.appendChild(document.createTextNode(msg)); |
|
good_div.appendChild(e); |
|
|
good_div.appendChild(document.createElement("br")); |
|
76 |
|
|
77 |
test_div.appendChild(e); |
test_div.appendChild(e); |
78 |
test_div.appendChild(document.createElement("br")); |
test_div.appendChild(document.createElement("br")); |
79 |
|
|
80 |
test_ok++; |
passed_tests++; |
81 |
return true; |
return true; |
82 |
} |
} |
83 |
|
|
86 |
msg_error("no results for word "+words[word_nr]); |
msg_error("no results for word "+words[word_nr]); |
87 |
} |
} |
88 |
|
|
89 |
|
var i; |
90 |
|
|
91 |
var word = words[word_nr]; |
var word = words[word_nr]; |
92 |
var len = 0; |
var len = 0; |
93 |
for (var i in result) len++; |
for (i in result) len++; |
94 |
result.length = len; |
result.length = len; |
95 |
for (var i in test_data[word]) len++; |
len = 0; |
96 |
|
for (i in test_data[word]) len++; |
97 |
|
|
98 |
if (result.length == len) { |
if (result.length == len) { |
99 |
msg_ok("found "+result.lengh+" results"); |
msg_ok("found "+result.length+" results"); |
100 |
} else if ( result.length > len ) |
} else if ( result.length > len ) |
101 |
msg_error("too much results "+result.length+" > "+len) |
msg_error("too much results "+result.length+" > "+len) |
102 |
else msg_error("too fiew results "+result.length+" < "+len); |
else msg_error("too fiew results "+result.length+" < "+len); |
103 |
|
|
104 |
for(var i=result.length-1; i>=0; i--) { |
for(i=result.length-1; i>=0; i--) { |
105 |
var test_hit = i+": '"+ |
var test_hit = i+": '"+ |
106 |
result[i].title+"' link: "+ |
result[i].title+"' link: "+ |
107 |
result[i].link+" frequency: "+ |
result[i].link+" frequency: "+ |
108 |
result[i].frequency; |
result[i].frequency; |
109 |
|
|
110 |
if ( test_data[ words[word_nr] ][ result[i].link ] != result[i].frequency ) { |
if ( test_data[ words[word_nr] ][ result[i].link ] != result[i].frequency ) { |
111 |
msg_error("error in frequency for word: '"+words[word_nr]+"' [hit "+i+"] "+test_data[ words[word_nr] ][ result[i].link ]+" != "+result[i].frequency); |
msg_error("error in frequency "+i+": '"+words[word_nr]+"' "+test_data[ words[word_nr] ][ result[i].link ]+" != "+result[i].frequency); |
112 |
msg_error("HIT "+test_hit); |
msg_error("HIT "+test_hit); |
113 |
|
|
|
results_output += test_hit; |
|
114 |
} else { |
} else { |
115 |
msg_debug("OK: "+words[word_nr]+" "+i+" "+result[i].frequency); |
msg_ok("OK frequency "+i+": '"+words[word_nr]+"' ["+result[i].frequency+"]"); |
116 |
} |
} |
117 |
|
|
118 |
} |
} |
119 |
|
|
120 |
|
if (test_failed) { |
121 |
|
get_el('debug').appendChild(test_div); |
122 |
|
get_el('debug').appendChild(debug_div); |
123 |
|
} else { |
124 |
|
// uncomment this to show also passed tests |
125 |
|
//get_el('debug').appendChild(test_div); |
126 |
|
} |
127 |
|
|
128 |
|
get_el('nr_words').value = word_nr; |
129 |
|
get_el('nr_tests').value = passed_tests + test_failed; |
130 |
|
get_el('nr_passed').value = passed_tests; |
131 |
|
get_el('nr_failed').value = failed_tests; |
132 |
|
get_el('completed').value = (word_nr * 100 / total_words).toPrecision(4); |
133 |
|
|
134 |
// try next search |
// try next search |
135 |
if (word_nr < words.length) do_search(); |
if (word_nr < words.length) do_search(); |
136 |
|
|
139 |
|
|
140 |
function do_test() { |
function do_test() { |
141 |
|
|
142 |
good_div = get_div('good'); |
test_div = document.createElement("div"); |
143 |
bad_div = get_div('bad'); |
debug_div = document.createElement("div"); |
|
test_div = get_div('debug'); |
|
144 |
|
|
145 |
var test_words = 0; |
total_words = 0; |
146 |
|
|
147 |
for (word in test_data) { |
for (word in test_data) { |
148 |
words[test_words] = word; |
words[total_words] = word; |
149 |
msg_debug("word "+test_words+" is "+words[test_words]); |
msg_debug("word "+total_words+": "+words[total_words]); |
150 |
test_words++; |
total_words++; |
151 |
} |
} |
152 |
|
|
153 |
|
get_el('debug').appendChild(test_div); |
154 |
|
get_el('debug').appendChild(debug_div); |
155 |
do_search(); |
do_search(); |
156 |
} |
} |
157 |
|
|
160 |
|
|
161 |
word_nr++; |
word_nr++; |
162 |
|
|
163 |
|
test_div = document.createElement("div"); |
164 |
|
debug_div = document.createElement("div"); |
165 |
|
|
166 |
if (word_nr < words.length && words[word_nr] != 'undefined') { |
if (word_nr < words.length && words[word_nr] != 'undefined') { |
167 |
|
|
|
results_output = ''; |
|
|
debug_output = ''; |
|
168 |
test_failed = false; |
test_failed = false; |
169 |
|
|
170 |
msg_debug("search for "+words[word_nr]+" ["+word_nr+"]"); |
msg_debug(""); |
171 |
|
msg_debug("search "+word_nr+": "+words[word_nr]); |
172 |
|
|
173 |
results = null; |
results = null; |
174 |
doSearch('homer', words[word_nr], got_result); |
doSearch('homer', words[word_nr], got_result); |
175 |
|
|
|
|
|
|
if (1 || test_failed) { |
|
|
if (test_div) test_div.innerHTML += debug_output + results_output; |
|
|
} else { |
|
|
if (test_div) test_div.innerHTML += debug_output; |
|
|
} |
|
|
|
|
176 |
} else { |
} else { |
177 |
msg_debug("tested "+word_nr+" words, "+test_ok+" test passed, "+test_error+" test failed."); |
msg_debug(""); |
178 |
|
msg_debug("tested "+word_nr+" words, "+passed_tests+" test passed, "+failed_tests+" test failed."); |
179 |
|
get_el('debug').appendChild(test_div); |
180 |
|
get_el('debug').appendChild(debug_div); |
181 |
} |
} |
182 |
} |
} |
183 |
|
|
187 |
<body onLoad="do_test();"> |
<body onLoad="do_test();"> |
188 |
|
|
189 |
<div style="color: blue;"> |
<div style="color: blue;"> |
190 |
This is test html for jsFind -- it might take a long time on slower |
This is test html for jsFind -- it might take a long time on slower |
191 |
computers and/or browsers, so please be patient! |
computers and/or browsers, so please be patient! |
192 |
</div> |
</div> |
193 |
|
|
194 |
<div id="good" style="border: 1px solid green; width: 30%; float: left;"> |
<form> |
195 |
</div> |
Words:<input type="text" id="nr_words" size="4" value="0" /> |
196 |
|
Tests:<input type="text" id="nr_tests" size="4" value="0" /> |
197 |
<div id="bad" style="border: 1px solid red; width: 30%; float: right;"> |
Passed:<input type="text" id="nr_passed" size="4" value="0" /> |
198 |
</div> |
Failed:<input type="text" id="nr_failed" size="4" value="0" /> |
199 |
|
Completed:<input type="text" id="completed" size="4" value="0" />% |
200 |
|
</form> |
201 |
|
|
202 |
<div id="debug" style="color: gray;"> |
<div id="debug" style="color: gray;"> |
203 |
</div> |
</div> |