summaryrefslogtreecommitdiff
path: root/src/tests/efl_js/ecore_js_suite.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/efl_js/ecore_js_suite.js')
-rwxr-xr-xsrc/tests/efl_js/ecore_js_suite.js438
1 files changed, 438 insertions, 0 deletions
diff --git a/src/tests/efl_js/ecore_js_suite.js b/src/tests/efl_js/ecore_js_suite.js
new file mode 100755
index 0000000000..47d0b6f193
--- /dev/null
+++ b/src/tests/efl_js/ecore_js_suite.js
@@ -0,0 +1,438 @@
+#!/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);
+ console.log("teste1");
+
+ 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 ] ecore_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") + " ] ecore_js_suite: " + test_name);
+ if (test_result)
+ suite_ok += 1;
+ else
+ suite_fail.push(test_name);
+}
+// end Preamble
+
+// ecore preamble
+function abs(n) {
+ if (n < 0)
+ return n * -1;
+ return n;
+}
+var TOLERANCE = 0.0001;
+// end ecore preamble
+
+start_test("timers", function () {
+ var p = 2.5;
+ efl.ecore_timer_precision_set(p);
+ assert(abs(efl.ecore_timer_precision_get() - p) < TOLERANCE);
+
+ p = 0.5;
+ efl.ecore_timer_precision_set(p);
+ assert(abs(efl.ecore_timer_precision_get() - p) < TOLERANCE);
+
+ var dump = efl.ecore_timer_dump();
+ assert(typeof(dump) === 'string');
+ print_info("### BEGINING of Timer dump: ###");
+ print_info(dump);
+ print_info("### END of Timer dump ###");
+
+ var ncalls = 0;
+
+ captured = false;
+ efl.ecore_timer_add(1, function() {
+ print_info('ecore_timer_add handler');
+ ++ncalls;
+ if (ncalls != 4)
+ return true;
+
+ captured = true;
+ efl.ecore_job_add(efl.ecore_mainloop_quit);
+ return false;
+ });
+
+ efl.ecore_mainloop_begin();
+ assert(captured);
+
+ ncalls = 0;
+ captured = false;
+
+ efl.ecore_timer_loop_add(1, function() {
+ ++ncalls;
+ if (ncalls != 4)
+ return true;
+
+ captured = true;
+ efl.ecore_job_add(efl.ecore_mainloop_quit);
+ return false;
+ });
+
+ efl.ecore_mainloop_begin();
+ assert(captured);
+
+ captured = false;
+
+ var timer = efl.ecore_timer_add(1, function() {
+ captured = true;
+ return false;
+ });
+
+ assert(timer.freeze_get() === false);
+
+ timer.freeze();
+
+ assert(timer.freeze_get() === true);
+
+ timer.thaw();
+
+ assert(timer.freeze_get() === false);
+
+ timer.del();
+
+ efl.ecore_timer_add(2, function() {
+ efl.ecore_job_add(efl.ecore_mainloop_quit);
+ return false;
+ });
+
+ efl.ecore_mainloop_begin();
+ assert(captured === false);
+});
+
+// Ecore event
+start_test("ecore event", function () {
+ var myevent = efl.ecore_event_type_new();
+
+ captured = [0, 0, 0]
+
+ var handler1 = efl.ecore_event_handler_add(myevent, function(event) {
+ assert(efl.ecore_event_current_type_get() === myevent);
+ assert(event === myevent);
+ captured[0] += 1;
+ return efl.ECORE_CALLBACK_PASS_ON;
+ });
+
+ var handler2 = efl.ecore_event_handler_add(myevent, function(event) {
+ assert(efl.ecore_event_current_type_get() === myevent);
+ assert(event === myevent);
+ captured[1] += 1;
+ return efl.ECORE_CALLBACK_DONE;
+ });
+
+ var handler3 = efl.ecore_event_handler_add(myevent, function(event) {
+ assert(efl.ecore_event_current_type_get() === myevent);
+ assert(event === myevent);
+ captured[2] += 1;
+ return efl.ECORE_CALLBACK_DONE;
+ });
+
+ efl.ecore_timer_add(1, function() {
+ efl.ecore_event_add(myevent);
+ assert(captured[0] === 0 && captured[1] === 0 && captured[2] === 0);
+ efl.ecore_timer_add(1, function() {
+ assert(captured[0] === 1 && captured[1] === 1 && captured[2] === 0);
+ handler1.del();
+ efl.ecore_event_add(myevent);
+ efl.ecore_event_add(myevent);
+ efl.ecore_event_add(myevent).del();
+ efl.ecore_timer_add(1, function() {
+ assert(captured[0] === 1 && captured[1] === 3 && captured[2] === 0);
+ efl.ecore_mainloop_quit();
+ });
+ });
+ });
+
+ efl.ecore_mainloop_begin();
+
+ efl.ecore_event_add(myevent);
+ efl.ecore_event_add(myevent);
+ efl.ecore_event_add(myevent);
+
+ var filter = efl.ecore_event_filter_add(function() {
+ return {count: 0};
+ }, function(loop_data, event) {
+ assert(event === myevent);
+ var c = loop_data.count;
+ ++loop_data.count;
+ return c != 0;
+ }, function(loop_data) {});
+
+ efl.ecore_timer_add(1, efl.ecore_mainloop_quit);
+ efl.ecore_mainloop_begin();
+ assert(captured[1] === 5);
+ filter.del();
+
+ efl.ecore_event_add(myevent);
+ efl.ecore_event_add(myevent);
+ efl.ecore_event_add(myevent);
+
+ efl.ecore_timer_add(1, efl.ecore_mainloop_quit);
+ efl.ecore_mainloop_begin();
+ assert(captured[1] === 8);
+
+ handler2.del();
+ handler3.del();
+});
+
+ // Ecore job
+start_test("ecore jobs", function () {
+ captured = false;
+
+ efl.ecore_job_add(function() {
+ captured = true;
+ efl.ecore_mainloop_quit();
+ });
+
+ assert(captured === false);
+ efl.ecore_mainloop_begin();
+ assert(captured === true);
+
+ captured = false;
+ var job = efl.ecore_job_add(function() {
+ captured = true;
+ });
+ efl.ecore_job_add(efl.ecore_mainloop_quit);
+ job.del();
+ efl.ecore_mainloop_begin();
+ assert(captured === false);
+});
+
+start_test("ecore idle", function () {
+ // Ecore idle
+ var counter = 1;
+ captured = [0, 0, 0, 0, 0];
+
+ efl.ecore_idler_add(function() {
+ print_info('ecore idle handler 1');
+ captured[0] = counter;
+ counter += 1;
+ efl.ecore_job_add(function() { print_info('ecore job handler 1'); });
+ return efl.ECORE_CALLBACK_DONE;
+ });
+
+ print_info('ecore idle 1');
+
+ efl.ecore_idle_enterer_add(function() {
+ print_info('ecore idle handler 2');
+ captured[1] = counter;
+ counter += 1;
+ return efl.ECORE_CALLBACK_DONE;
+ });
+
+ print_info('ecore idle 2');
+
+ efl.ecore_idle_enterer_add(function() {
+ print_info('ecore idle handler 3');
+ captured[2] = counter;
+ counter += 1;
+ return efl.ECORE_CALLBACK_DONE;
+ });
+
+ print_info('ecore idle 3');
+
+ efl.ecore_idle_enterer_before_add(function() {
+ print_info('ecore idle handler 4');
+ captured[3] = counter;
+ counter += 1;
+ return efl.ECORE_CALLBACK_DONE;
+ });
+
+ print_info('ecore idle 4');
+
+ efl.ecore_idle_exiter_add(function() {
+ print_info('ecore idle handler 5');
+ captured[4] = counter;
+ counter += 1;
+ efl.ecore_mainloop_quit();
+ return efl.ECORE_CALLBACK_DONE;
+ });
+
+ print_info('ecore idle 5');
+
+ efl.ecore_mainloop_begin();
+
+ print_info('ecore idle 6');
+
+ assert(captured[0] === 4, "ecore_idler_add test");
+ assert(captured[1] === 2, "ecore_idle_enterer_add test");
+ assert(captured[2] === 3, "ecore_idle_enterer_add test two");
+ assert(captured[3] === 1, "ecore_idle_enterer_before_add test");
+ assert(captured[4] === 5, "ecore_idle_exiter_add test");
+});
+
+// Ecore animator
+start_test("ecore animator", function () {
+ efl.ecore_animator_frametime_set(1);
+ assert(efl.ecore_animator_frametime_get() === 1);
+ efl.ecore_animator_frametime_set(1 / 50);
+ assert(efl.ecore_animator_frametime_get() === (1 / 50));
+
+ assert(efl.ecore_animator_pos_map(0.5, efl.ECORE_POS_MAP_LINEAR, 0, 0)
+ === 0.5);
+
+ efl.ecore_animator_source_set(efl.ECORE_ANIMATOR_SOURCE_CUSTOM);
+ assert(efl.ecore_animator_source_get()
+ === efl.ECORE_ANIMATOR_SOURCE_CUSTOM);
+ efl.ecore_animator_source_set(efl.ECORE_ANIMATOR_SOURCE_TIMER);
+ assert(efl.ecore_animator_source_get() === efl.ECORE_ANIMATOR_SOURCE_TIMER);
+});
+ // Ecore poller
+start_test("ecore poller", function () {
+ efl.ecore_poller_poll_interval_set(efl.ECORE_POLLER_CORE, 42);
+ assert(efl.ecore_poller_poll_interval_get(efl.ECORE_POLLER_CORE) === 42);
+ efl.ecore_poller_poll_interval_set(efl.ECORE_POLLER_CORE, 2);
+ assert(efl.ecore_poller_poll_interval_get(efl.ECORE_POLLER_CORE) === 2);
+});
+
+start_test("ecore throttle", function () {
+ // Ecore throttle
+
+ efl.ecore_throttle_adjust(3);
+ assert(efl.ecore_throttle_get() === 3);
+ efl.ecore_throttle_adjust(-3);
+ assert(efl.ecore_throttle_get() === 0);
+});
+
+// Ecore file
+start_test("ecore file", function () {
+ assert(typeof(efl.ECORE_FILE_EVENT_NONE) === 'number');
+ assert(typeof(efl.ECORE_FILE_EVENT_CREATED_FILE) === 'number');
+ assert(typeof(efl.ECORE_FILE_EVENT_CREATED_DIRECTORY) === 'number');
+ assert(typeof(efl.ECORE_FILE_EVENT_DELETED_FILE) === 'number');
+ assert(typeof(efl.ECORE_FILE_EVENT_DELETED_DIRECTORY) === 'number');
+ assert(typeof(efl.ECORE_FILE_EVENT_DELETED_SELF) === 'number');
+ assert(typeof(efl.ECORE_FILE_EVENT_MODIFIED) === 'number');
+ assert(typeof(efl.ECORE_FILE_EVENT_CLOSED) === 'number');
+ assert(typeof(efl.ECORE_FILE_PROGRESS_CONTINUE) === 'number');
+ assert(typeof(efl.ECORE_FILE_PROGRESS_ABORT) === 'number');
+
+ var buf = efl.environment_tmp() + '/.ecore_js_test.tmp.XXXXXXXXXXXX';
+ print('buf ', buf)
+ var name = efl.mkstemp(buf);
+
+ print('name of file ', name);
+ assert(efl.ecore_file_remove(name) === true, 'Cannot remove temporary file');
+
+ assert(typeof(efl.ecore_file_recursive_rm(name)) === 'boolean', 'fb0');
+ assert(efl.ecore_file_exists('/') === true, "Root (/) doesn't exist?");
+ assert(efl.ecore_file_is_dir('/') === true, 'fb1');
+ assert((efl.ecore_file_mod_time('/') instanceof Date) === true, 'fb2');
+ assert(typeof(efl.ecore_file_size('/')) === 'number', 'fb3');
+ assert(efl.ecore_file_mkdir(name) === true, 'fb4');
+ assert(efl.ecore_file_mkdir(name) === false, 'fb5');
+ assert(efl.ecore_file_rmdir(name) === true, 'fb6');
+ assert(efl.ecore_file_mkdirs([name]) === 1, 'fb7');
+ assert(efl.ecore_file_mksubdirs(name, ['0', '1']) === 2, 'fb8');
+ assert(efl.ecore_file_symlink('0', name + '/2') === true, 'fb9');
+ assert(efl.ecore_file_readlink(name + '/2') === '0', 'fb23');
+ assert(efl.ecore_file_unlink(name + '/2') === true, 'fb10');
+ assert(efl.ecore_file_remove(name + '/1') === true, 'fb11');
+ assert(efl.ecore_file_recursive_rm(name) === true, 'fb12');
+ assert(efl.ecore_file_mkpath(name + '/0/1') === true, 'fb13');
+ assert(efl.ecore_file_mkpaths([name + '/0/1', name + '/1/2']) === 2, 'fb14');
+ assert(efl.ecore_file_cp(name + '/0/1', name + '/2') === true, 'fb15');
+ assert(efl.ecore_file_mv(name + '/1/2', name + '/2/0') === false, 'fb16');
+ assert(typeof(efl.ecore_file_realpath(name)) === 'string', 'fb17');
+ print('file_get ', efl.ecore_file_file_get(name));
+ assert(efl.ecore_file_file_get(name) === name.substr(name.lastIndexOf('/')+1
+ , name.length - 1 - name.lastIndexOf('/')), 'fb18');
+ assert(efl.ecore_file_dir_get(name + '/2') === name, 'fb19');
+ assert(efl.ecore_file_can_read(name) === true, 'fb20');
+ assert(efl.ecore_file_can_write(name) === true, 'fb21');
+ assert(efl.ecore_file_can_exec(name) === true, 'fb22');
+ var ls = efl.ecore_file_ls(name);
+ assert(ls.length === 3, 'fb23');
+ assert(ls[0] === '0', 'fb24');
+ assert(ls[1] === '1', 'fb25');
+ assert(ls[2] === '2', 'fb26');
+ assert(typeof(efl.ecore_file_app_exe_get('auidadsfas')) === 'string', 'fb27');
+ assert(efl.ecore_file_escape_name('/\\') === '/\\\\', 'fb28');
+ assert(efl.ecore_file_strip_ext('test.abc') === 'test', 'fb29');
+ assert(efl.ecore_file_dir_is_empty(name) === 0, 'fb30');
+ assert(efl.ecore_file_download_protocol_available('file://') === true, 'fb31');
+ print('exists ', name, '? ', efl.ecore_file_path_dir_exists(name));
+ assert(efl.ecore_file_path_dir_exists(name) === true, 'fb32');
+ assert(efl.ecore_file_app_installed(' dsuyabu UBYOS') === false, 'fb33');
+ assert(Array.isArray(efl.ecore_file_app_list()) === true, 'fb34');
+ efl.ecore_file_monitor_add(name, function() { print('empty monitor called'); }).del();
+ function cb(em, e, path) {
+ print('cb called');
+ assert(em.path_get() === name, 'fb38');
+ assert(e === efl.ECORE_FILE_EVENT_CREATED_DIRECTORY, 'fb36');
+ assert(path === name + '/909', 'fb37');
+ em.del();
+ efl.ecore_mainloop_quit();
+ };
+ var monitor_job = efl.ecore_file_monitor_add(name, cb);
+ assert(efl.ecore_file_mkdir(name + '/909') === true, 'fb35');
+
+ efl.ecore_mainloop_begin();
+});
+
+// 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();