206 lines
5.2 KiB
JavaScript
Executable File
206 lines
5.2 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
// Preamble
|
|
function assert(condition, message) {
|
|
if (!condition) {
|
|
print("Assertion failed ", message);
|
|
throw new Error(message || "Assertion failed");
|
|
}
|
|
}
|
|
|
|
if(typeof process !== 'undefined')
|
|
{
|
|
console.log('running from nodejs');
|
|
console.log('path', process.env.NODE_PATH);
|
|
|
|
efl = require('efl');
|
|
assert(efl != null, "could not load efl node module");
|
|
|
|
// Setup output aliases
|
|
print = console.log;
|
|
print_error = function() {
|
|
if (process.argv.indexOf("--supress-errors") == -1)
|
|
console.error.apply(null, arguments);
|
|
};
|
|
print_info = function() {
|
|
if (process.argv.indexOf("--verbose") != -1)
|
|
console.info.apply(null, arguments);
|
|
};
|
|
exit = efl.Ecore.Mainloop.quit;
|
|
}
|
|
else
|
|
{
|
|
assert = function(test, message) { if (test !== true) throw message; };
|
|
print('running from libv8')
|
|
//FIXME Add levels to v8 tests
|
|
print_error = print
|
|
print_info = print
|
|
exit = function() {}
|
|
}
|
|
|
|
// Global flag for suite success //
|
|
suite_success = true;
|
|
// Global test summary
|
|
suite_ok = 0;
|
|
suite_fail = []; // Will store the name of the failures
|
|
|
|
// Basic test function //
|
|
function start_test(test_name, test_func) {
|
|
print("[ RUN ] eina_js_suite: " + test_name);
|
|
var test_result = true;
|
|
try {
|
|
test_func();
|
|
} catch (e) {
|
|
suite_success = false;
|
|
test_result = false;
|
|
print_error("Error: ", e, e.stack);
|
|
}
|
|
print("[ " + (test_result ? "PASS" : "FAIL") + " ] eina_js_suite: " + test_name);
|
|
if (test_result)
|
|
suite_ok += 1;
|
|
else
|
|
suite_fail.push(test_name);
|
|
}
|
|
// end Preamble
|
|
if (typeof process != "undefined")
|
|
{
|
|
benchmark = require('benchmark_object');
|
|
assert(benchmark != null, "could not load benchmark_object.node");
|
|
Benchmark_Object = benchmark.BenchmarkObject;
|
|
benchmark_emptyarg = benchmark.benchmark_emptyarg;
|
|
benchmark_onearg = benchmark.benchmark_onearg;
|
|
benchmark_twoarg = benchmark.benchmark_twoarg;
|
|
benchmark_tenarg = benchmark.benchmark_tenarg;
|
|
benchmark_onecomplexarg = benchmark.benchmark_onecomplexarg;
|
|
benchmark_tencomplexarg = benchmark.benchmark_tencomplexarg;
|
|
}
|
|
else
|
|
{
|
|
Benchmark_Object = suite.Benchmark_Object;
|
|
}
|
|
|
|
start_test("empty function", function(){
|
|
object = new Benchmark_Object(null);
|
|
|
|
for(i = 0; i != 10; i++)
|
|
{
|
|
object.emptyarg();
|
|
}
|
|
|
|
time = process.hrtime();
|
|
for(i = 0; i != 20000; i++)
|
|
{
|
|
object.emptyarg();
|
|
}
|
|
time = process.hrtime(time);
|
|
console.log('JS empty function %d', time[0]*1000000000 + time[1]);
|
|
benchmark_emptyarg();
|
|
});
|
|
|
|
start_test("onearg function", function(){
|
|
object = new Benchmark_Object(null);
|
|
for(i = 0; i != 10; i++)
|
|
{
|
|
object.onearg(1);
|
|
}
|
|
|
|
time = process.hrtime();
|
|
for(i = 0; i != 20000; i++)
|
|
{
|
|
object.onearg(1);
|
|
}
|
|
time = process.hrtime(time);
|
|
console.log('JS onearg function %d', time[0]*1000000000 + time[1]);
|
|
|
|
benchmark_onearg();
|
|
});
|
|
|
|
start_test("twoarg function", function(){
|
|
object = new Benchmark_Object(null);
|
|
for(i = 0; i != 10; i++)
|
|
{
|
|
object.twoarg(1, 2);
|
|
}
|
|
|
|
time = process.hrtime();
|
|
for(i = 0; i != 20000; i++)
|
|
{
|
|
object.twoarg(1, 2);
|
|
}
|
|
time = process.hrtime(time);
|
|
console.log('JS twoarg function %d', time[0]*1000000000 + time[1]);
|
|
|
|
benchmark_twoarg();
|
|
});
|
|
|
|
start_test("tenarg function", function(){
|
|
object = new Benchmark_Object(null);
|
|
for(i = 0; i != 10; i++)
|
|
{
|
|
object.tenarg(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
|
|
}
|
|
|
|
time = process.hrtime();
|
|
for(i = 0; i != 20000; i++)
|
|
{
|
|
object.tenarg(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
|
|
}
|
|
time = process.hrtime(time);
|
|
console.log('JS tenarg function %d', time[0]*1000000000 + time[1]);
|
|
benchmark_tenarg();
|
|
});
|
|
|
|
start_test("onecomplexarg function", function(){
|
|
object = new Benchmark_Object(null);
|
|
list = new efl.List('int')
|
|
for(i = 0; i != 10; i++)
|
|
{
|
|
object.onecomplexarg(list);
|
|
}
|
|
|
|
time = process.hrtime();
|
|
for(i = 0; i != 20000; i++)
|
|
{
|
|
object.onecomplexarg(list);
|
|
}
|
|
time = process.hrtime(time);
|
|
console.log('JS onecomplexarg function %d', time[0]*1000000000 + time[1]);
|
|
benchmark_onecomplexarg();
|
|
});
|
|
|
|
start_test("tencomplexarg function", function(){
|
|
object = new Benchmark_Object(null);
|
|
list = new efl.List('int')
|
|
for(i = 0; i != 10; i++)
|
|
{
|
|
object.tencomplexarg(list, list, list, list, list, list, list, list, list, list);
|
|
}
|
|
|
|
time = process.hrtime();
|
|
for(i = 0; i != 20000; i++)
|
|
{
|
|
object.tencomplexarg(list, list, list, list, list, list, list, list, list, list);
|
|
}
|
|
time = process.hrtime(time);
|
|
console.log('JS tencomplexarg function %d', time[0]*1000000000 + time[1]);
|
|
benchmark_tencomplexarg();
|
|
});
|
|
|
|
// footer
|
|
|
|
if (!suite_success) {
|
|
print ("[ Total tests run: %s ]", suite_ok + suite_fail.length);
|
|
print ("[ Total successful: %s ]", suite_ok);
|
|
print ("[ Total failures: %s ]", suite_fail.length);
|
|
print ("[ Tests failed: ]");
|
|
for (var i = 0; i < suite_fail.length; i++) {
|
|
print ("[ %s]", suite_fail[i]);
|
|
};
|
|
assert(false, "[ Test suite fail ]");
|
|
} else {
|
|
print ("[ Test execution with success ]");
|
|
print ("[ Total tests run: %s ]", suite_ok);
|
|
}
|
|
|
|
exit();
|