📄 validat1_8cpp-source.html
字号:
00154 pass = <span class="keyword">false</span>;00155 }00156 cout << <span class="stringliteral">"sizeof(byte) == "</span> << <span class="keyword">sizeof</span>(byte) << endl;00157 00158 <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(word16) == 2)00159 cout << <span class="stringliteral">"passed: "</span>;00160 <span class="keywordflow">else</span>00161 {00162 cout << <span class="stringliteral">"FAILED: "</span>;00163 pass = <span class="keyword">false</span>;00164 }00165 cout << <span class="stringliteral">"sizeof(word16) == "</span> << <span class="keyword">sizeof</span>(word16) << endl;00166 00167 <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(word32) == 4)00168 cout << <span class="stringliteral">"passed: "</span>;00169 <span class="keywordflow">else</span>00170 {00171 cout << <span class="stringliteral">"FAILED: "</span>;00172 pass = <span class="keyword">false</span>;00173 }00174 cout << <span class="stringliteral">"sizeof(word32) == "</span> << <span class="keyword">sizeof</span>(word32) << endl;00175 00176 <span class="preprocessor">#ifdef WORD64_AVAILABLE</span>00177 <span class="preprocessor"></span> <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(word64) == 8)00178 cout << <span class="stringliteral">"passed: "</span>;00179 <span class="keywordflow">else</span>00180 {00181 cout << <span class="stringliteral">"FAILED: "</span>;00182 pass = <span class="keyword">false</span>;00183 }00184 cout << <span class="stringliteral">"sizeof(word64) == "</span> << <span class="keyword">sizeof</span>(word64) << endl;00185 <span class="preprocessor">#else</span>00186 <span class="preprocessor"></span> <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(dword) >= 8)00187 {00188 cout << <span class="stringliteral">"FAILED: sizeof(dword) >= 8, but WORD64_AVAILABLE not defined"</span> << endl;00189 pass = <span class="keyword">false</span>;00190 }00191 <span class="keywordflow">else</span>00192 cout << <span class="stringliteral">"passed: word64 not available"</span> << endl;00193 <span class="preprocessor">#endif</span>00194 <span class="preprocessor"></span>00195 <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(dword) == 2*<span class="keyword">sizeof</span>(word))00196 cout << <span class="stringliteral">"passed: "</span>;00197 <span class="keywordflow">else</span>00198 {00199 cout << <span class="stringliteral">"FAILED: "</span>;00200 pass = <span class="keyword">false</span>;00201 }00202 cout << <span class="stringliteral">"sizeof(word) == "</span> << <span class="keyword">sizeof</span>(word) << <span class="stringliteral">", sizeof(dword) == "</span> << <span class="keyword">sizeof</span>(dword) << endl;00203 00204 dword test = (dword(1)<<WORD_BITS) + 2;00205 <span class="keywordflow">if</span> (HIGH_WORD(test) == 1 && LOW_WORD(test) == 2)00206 cout << <span class="stringliteral">"passed: "</span>;00207 <span class="keywordflow">else</span>00208 {00209 cout << <span class="stringliteral">"FAILED: "</span>;00210 pass = <span class="keyword">false</span>;00211 }00212 cout << <span class="stringliteral">"HIGH_WORD() and LOW_WORD() macros\n"</span>;00213 00214 <span class="keywordflow">if</span> (!pass)00215 {00216 cout << <span class="stringliteral">"Some critical setting in config.h is in error. Please fix it and recompile."</span> << endl;00217 abort();00218 }00219 <span class="keywordflow">return</span> pass;00220 }00221 00222 <span class="keywordtype">bool</span> TestOS_RNG()00223 {00224 <span class="keywordtype">bool</span> pass = <span class="keyword">true</span>;00225 00226 <span class="preprocessor">#ifdef BLOCKING_RNG_AVAILABLE</span>00227 <span class="preprocessor"></span> {00228 cout << <span class="stringliteral">"\nTesting operating system provided blocking random number generator...\n\n"</span>;00229 00230 <a class="code" href="class_blocking_rng.html">BlockingRng</a> rng;00231 <a class="code" href="class_array_sink.html">ArraySink</a> *sink;00232 <a class="code" href="class_random_number_source.html">RandomNumberSource</a> test(rng, 100000, <span class="keyword">false</span>, <span class="keyword">new</span> <a class="code" href="class_deflator.html">Deflator</a>(sink=<span class="keyword">new</span> <a class="code" href="class_array_sink.html">ArraySink</a>(NULL,0)));00233 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> total=0, length=0;00234 time_t t = time(NULL), t1 = 0;00235 00236 <span class="comment">// check that it doesn't take too long to generate a reasonable amount of randomness</span>00237 <span class="keywordflow">while</span> (total < 16 && (t1 < 10 || total*8 > t1))00238 {00239 test.<a class="code" href="class_source.html#_windows_pipe_sourcea14">Pump</a>(1);00240 total += 1;00241 t1 = time(NULL) - t;00242 }00243 00244 <span class="keywordflow">if</span> (total < 16)00245 {00246 cout << <span class="stringliteral">"FAILED:"</span>;00247 pass = <span class="keyword">false</span>;00248 }00249 <span class="keywordflow">else</span>00250 cout << <span class="stringliteral">"passed:"</span>;00251 cout << <span class="stringliteral">" it took "</span> << t1 << <span class="stringliteral">" seconds to generate "</span> << total << <span class="stringliteral">" bytes"</span> << endl;00252 00253 <span class="keywordflow">if</span> (t1 < 2)00254 {00255 <span class="comment">// that was fast, are we really blocking?</span>00256 <span class="comment">// first exhaust the extropy reserve</span>00257 t = time(NULL);00258 <span class="keywordflow">while</span> (time(NULL) - t < 2)00259 {00260 test.<a class="code" href="class_source.html#_windows_pipe_sourcea14">Pump</a>(1);00261 total += 1;00262 }00263 00264 <span class="comment">// if it generates too many bytes in a certain amount of time,</span>00265 <span class="comment">// something's probably wrong</span>00266 t = time(NULL);00267 <span class="keywordflow">while</span> (time(NULL) - t < 2)00268 {00269 test.<a class="code" href="class_source.html#_windows_pipe_sourcea14">Pump</a>(1);00270 total += 1;00271 length += 1;00272 }00273 <span class="keywordflow">if</span> (length > 1024)00274 {00275 cout << <span class="stringliteral">"FAILED:"</span>;00276 pass = <span class="keyword">false</span>;00277 }00278 <span class="keywordflow">else</span>00279 cout << <span class="stringliteral">"passed:"</span>;00280 cout << <span class="stringliteral">" it generated "</span> << length << <span class="stringliteral">" bytes in "</span> << time(NULL) - t << <span class="stringliteral">" seconds"</span> << endl;00281 }00282 00283 test.<a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_7">MessageEnd</a>();00284 00285 <span class="keywordflow">if</span> (sink-><a class="code" href="class_array_sink.html#_array_xor_sinka4">TotalPutLength</a>() < total)00286 {00287 cout << <span class="stringliteral">"FAILED:"</span>;00288 pass = <span class="keyword">false</span>;00289 }00290 <span class="keywordflow">else</span>00291 cout << <span class="stringliteral">"passed:"</span>;00292 cout << <span class="stringliteral">" "</span> << total << <span class="stringliteral">" generated bytes compressed to "</span> << sink-><a class="code" href="class_array_sink.html#_array_xor_sinka4">TotalPutLength</a>() << <span class="stringliteral">" bytes by DEFLATE"</span> << endl;00293 }00294 <span class="preprocessor">#else</span>00295 <span class="preprocessor"></span> cout << <span class="stringliteral">"\nNo operating system provided blocking random number generator, skipping test."</span> << endl;00296 <span class="preprocessor">#endif</span>00297 <span class="preprocessor"></span>00298 <span class="preprocessor">#ifdef NONBLOCKING_RNG_AVAILABLE</span>00299 <span class="preprocessor"></span> {00300 cout << <span class="stringliteral">"\nTesting operating system provided nonblocking random number generator...\n\n"</span>;00301 00302 <a class="code" href="class_nonblocking_rng.html">NonblockingRng</a> rng;00303 <a class="code" href="class_array_sink.html">ArraySink</a> *sink;00304 <a class="code" href="class_random_number_source.html">RandomNumberSource</a> test(rng, 100000, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_deflator.html">Deflator</a>(sink=<span class="keyword">new</span> <a class="code" href="class_array_sink.html">ArraySink</a>(NULL, 0)));00305 00306 <span class="keywordflow">if</span> (sink-><a class="code" href="class_array_sink.html#_array_xor_sinka4">TotalPutLength</a>() < 100000)00307 {00308 cout << <span class="stringliteral">"FAILED:"</span>;00309 pass = <span class="keyword">false</span>;00310 }00311 <span class="keywordflow">else</span>00312 cout << <span class="stringliteral">"passed:"</span>;00313 cout << <span class="stringliteral">" 100000 generated bytes compressed to "</span> << sink-><a class="code" href="class_array_sink.html#_array_xor_sinka4">TotalPutLength</a>() << <span class="stringliteral">" bytes by DEFLATE"</span> << endl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -