Nasal-Interpreter/test/md5compare.nas

114 lines
3.3 KiB
Plaintext

use test.md5_self;
use std.process_bar;
use std.file;
use std.runtime;
use std.io;
use std.math;
srand();
var compare = func() {
var ch = [
"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","+",
"_","*","/","\'","\"",".",",",";",":","<",">","!","@","#","$","%",
"^","&","*","(",")","-","=","\\","|","[","]","{","}","`"," ","\t","?"
];
return func(begin, end) {
var byte = 0;
var total = end-begin;
var timestamp = maketimestamp();
timestamp.stamp();
var bar = process_bar.high_resolution_bar(40);
for(var i = begin; i<end; i += 1) {
var s = "";
for(var j = 0; j<i; j += 1) {
s ~= ch[rand()*size(ch)];
}
byte += size(s);
var res = md5(s);
if (cmp(res, md5_self.md5(s))) {
die("error: "~str(i));
}
if (i-begin-int((i-begin)/4)*4==0) {
print(
"\e[1000D ", bar.bar((i-begin+1)/total),
" (", i-begin+1, "/", total, ")\t",
res, " byte: ", int(byte/1024), "k"
);
}
}
print(
"\e[1000D ", bar.bar((i-begin)/total),
" (", i-begin, "/", total, ")\t",
res, " byte: ", int(byte/1024), "k",
" time: ", timestamp.elapsedMSec()
);
print("\n");
};
}();
var add_all_cpp_files = func(vec, path) {
foreach(var p; file.find_all_files_with_extension(path,"cpp","h")) {
append(vec, path~"/"~p);
}
}
var filechecksum = func() {
var files = [];
foreach(var p; file.find_all_files_with_extension("./test","nas")) {
append(files, "./test/"~p);
}
foreach(var p; file.find_all_files_with_extension("./std","nas")) {
append(files, "./std/"~p);
}
foreach(var p; file.find_all_files_with_extension("./module","nas","cpp")) {
append(files, "./module/"~p);
}
foreach(var p; file.find_all_files_with_extension(".","md")) {
append(files, "./"~p);
}
add_all_cpp_files(files, "./src");
add_all_cpp_files(files, "./src/cli");
add_all_cpp_files(files, "./src/natives");
add_all_cpp_files(files, "./src/repl");
add_all_cpp_files(files, "./src/util");
foreach(var p; file.find_all_files_with_extension("./doc","md")) {
append(files, "./doc/"~p);
}
var source = [];
foreach(var f; files) {
append(source, io.readfile(f));
}
var byte = 0;
var total = size(files);
var timestamp = maketimestamp();
timestamp.stamp();
var bar = process_bar.high_resolution_bar(40);
forindex(var i; files) {
var f = source[i];
var res = md5(f);
byte += size(f);
if (cmp(res, md5_self.md5(f))) {
die("error: "~files[i]);
}
print(
"\e[1000D ", bar.bar((i+1)/total),
" (", i+1, "/", total, ")\t", res,
" byte: ", int(byte/1024), "k",
" time: ", timestamp.elapsedMSec()
);
}
print("\n");
}
var randomchecksum = func() {
for(var i = 0; i<2048; i += 256) {
compare(i, i+256);
}
}
runtime.windows.set_utf8_output();
filechecksum();
randomchecksum();