python.node
Version:
Call python code from node.js.
125 lines (99 loc) • 3.91 kB
JavaScript
var python;
try {
python = require('../index.js');
} catch (e) {
python = require('python.js');
}
var sys = python.import('sys');
var os = python.import('os');
if (typeof(__dirname) != 'undefined')
sys.path.append(__dirname);
else
sys.path.append(os.path.join(os.getcwd(), 'node_modules/python.js/test'));
var pytest = python.import('pytest');
function test() {
console.log(pytest.test_01(5));
console.log(pytest.test_02(7.5));
console.log(pytest.test_03('hello javascript'));
console.log(pytest.test_04(true), pytest.test_04(false));
console.log(pytest.test_05(null), pytest.test_05(undefined));
console.log(pytest.test_06([1, 2, 3]).valueOf());
console.log(pytest.test_07({'aaa': 111, 'bbb': 222}).valueOf());
console.log(pytest.test_08({
'aaa': 111, 222: 'bbb', 'ccc': true, 'ddd': 33.3,
'eee': function (x, y) { return x + y; },
'fff': [444, '555', 666],
'ggg': {'hhh': 777, 888: 'iii', 'jjj': function (x, y) { return x * y; }},
// 'kkk': this
}).valueOf());
console.log(pytest.test_09(function (caller, x, y, z) {
console.log(caller, ' -> js_func_01');
console.log('x: ', x.valueOf());
console.log('y: ', y.valueOf());
return z;
})('js_test', [222, '333', 444], {'aaa': 555, 666: 'bbb', 'ccc': 777, 'ddd': 88.8})('js_test', 8, 9));
try {
pytest.test_10(function () { throw('js_test_exception'); } );
} catch (e) {
console.log('js_test -> ', e, typeof(e));
}
test_11 = pytest.Test_11();
console.log(test_11.get_aaa());
test_11.aaa = 22;
console.log(test_11.get_aaa());
test_11.bbb = 33;
console.log(test_11.get_bbb());
console.log(pytest.test_12[0], pytest.test_12[1], pytest.test_12[2]);
pytest.test_12[0] = 4, pytest.test_12[1] = 5, pytest.test_12[2] = 6;
console.log(pytest.test_12[0], pytest.test_12[1], pytest.test_12[2]);
console.log(pytest.test_12[3]);
pytest.test_12.append(7);
console.log(pytest.test_12[3]);
console.log(pytest.test_13['aaa'], pytest.test_13.bbb);
pytest.test_13['aaa'] = 333, pytest.test_13.bbb = 444;
console.log(pytest.test_13['aaa'], pytest.test_13.bbb);
console.log(pytest.test_13['ccc']);
pytest.test_13['ccc'] = 555;
console.log(pytest.test_13['ccc']);
console.log(pytest.test_13.ddd);
pytest.test_13.ddd = 666;
console.log(pytest.test_13.ddd);
py_test_14 = pytest.test_14;
js_test_14 = pytest.test_14.valueOf();
console.log('py_test_14: ', typeof(py_test_14), 'js_test_14: ', typeof(js_test_14));
console.log(py_test_14(8).toString(), js_test_14(8).toString());
console.log(pytest.test_15(function () {
return this.aaa;
}.bind(pytest.test_15.data)));
console.log('test_16 begin');
pytest.test_16.async = true;
console.log(pytest.test_16());
console.log(pytest.test_16(false));
pytest.test_16.async_cb = function (error, result) {
console.log('js async error: ', error ? error.valueOf() : error, typeof(error));
console.log('js async result: ', result);
};
console.log(pytest.test_16());
console.log(pytest.test_16(false));
console.log('test_16 end');
console.log(pytest.test_17().valueOf());
try {
console.log(pytest.test_18());
console.error("should have thrown; requires at least 1 arg");
} catch (expected) {}
console.log(pytest.test_18(1,2,3));
console.log(pytest.test_18(2, {kwArgs: {y:3}}));
console.log(pytest.test_18(2, {kwArgs: {z:4}}));
console.log(pytest.test_18(2, {kwArgs: {y:6, z:7}}));
console.log(pytest.test_18({kwArgs: {x: 4, y:2, z:3}}));
try {
console.log(pytest.test_18(8000, {kwArgs: {x: 4, y:2, z:2}}));
console.error("should have thrown; duplication of arg 'x' (positional and kw)");
} catch (expected) {}
try {
console.log(pytest.test_18({kwArgs: {y:2, z:2}}));
console.error("should have thrown; provided args but not 'x'");
} catch (expected) {}
}
for (var i = 0; i < 1; i++)
test();