var system = require('system'); test(function () { assert_type_of(system, 'object'); assert_not_equals(system, null); }, "system object"); test(function () { assert_own_property(system, 'pid'); assert_type_of(system.pid, 'number'); assert_greater_than(system.pid, 0); }, "system.pid"); test(function () { assert_own_property(system, 'isSSLSupported'); assert_type_of(system.isSSLSupported, 'boolean'); assert_equals(system.isSSLSupported, true); }, "system.isSSLSupported", {/* unsupported */expected_fail: true}); test(function () { assert_own_property(system, 'args'); assert_type_of(system.args, 'object'); assert_instance_of(system.args, Array); assert_greater_than_equal(system.args.length, 1); // args[0] will be the test harness. assert_regexp_match(system.args[0], /\btestharness\.js$/); }, "system.args", {/* unsupported */expected_fail: true}); test(function () { assert_own_property(system, 'env'); assert_type_of(system.env, 'object'); }, "system.env"); test(function () { assert_own_property(system, 'platform'); assert_type_of(system.platform, 'string'); assert_equals(system.platform, 'phantomjs'); }, "system.platform"); test(function () { assert_own_property(system, 'os'); assert_type_of(system.os, 'object'); assert_type_of(system.os.architecture, 'string'); assert_type_of(system.os.name, 'string'); assert_type_of(system.os.version, 'string'); if (system.os.name === 'mac') { // release is x.y.z with x = 10 for Snow Leopard and 14 for Yosemite assert_type_of(system.os.release, 'string'); assert_greater_than_equal(parseInt(system.os.release, 10), 10); } }, "system.os"); test(function () { assert_type_of(system.stdin, 'object'); assert_type_of(system.stdin.read, 'function'); assert_type_of(system.stdin.readLine, 'function'); assert_type_of(system.stdin.close, 'function'); }, "system.stdin"); test(function () { assert_type_of(system.stdout, 'object'); assert_type_of(system.stdout.write, 'function'); assert_type_of(system.stdout.writeLine, 'function'); assert_type_of(system.stdout.flush, 'function'); assert_type_of(system.stdout.close, 'function'); }, "system.stdout"); test(function () { assert_type_of(system.stderr, 'object'); assert_type_of(system.stderr.write, 'function'); assert_type_of(system.stderr.writeLine, 'function'); assert_type_of(system.stderr.flush, 'function'); assert_type_of(system.stderr.close, 'function'); }, "system.stderr");