michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: var xulApp = require("sdk/system/xul-app"); michael@0: michael@0: exports["test xulapp"] = function(assert) { michael@0: assert.equal(typeof(xulApp.ID), "string", michael@0: "ID is a string"); michael@0: assert.equal(typeof(xulApp.name), "string", michael@0: "name is a string"); michael@0: assert.equal(typeof(xulApp.version), "string", michael@0: "version is a string"); michael@0: assert.equal(typeof(xulApp.platformVersion), "string", michael@0: "platformVersion is a string"); michael@0: michael@0: assert.throws(function() { xulApp.is("blargy"); }, michael@0: /Unkown Mozilla Application: blargy/, michael@0: "is() throws error on bad app name"); michael@0: assert.throws(function() { xulApp.isOneOf(["blargy"]); }, michael@0: /Unkown Mozilla Application: blargy/, michael@0: "isOneOf() throws error on bad app name"); michael@0: michael@0: function testSupport(name) { michael@0: var item = xulApp.is(name); michael@0: assert.ok(item === true || item === false, michael@0: "is('" + name + "') is true or false."); michael@0: } michael@0: michael@0: var apps = ["Firefox", "Mozilla", "Sunbird", "SeaMonkey", michael@0: "Fennec", "Thunderbird"]; michael@0: michael@0: apps.forEach(testSupport); michael@0: michael@0: assert.ok(xulApp.isOneOf(apps) == true || michael@0: xulApp.isOneOf(apps) == false, michael@0: "isOneOf() returns true or false."); michael@0: michael@0: assert.equal(xulApp.versionInRange(xulApp.platformVersion, "1.9", "*"), michael@0: true, "platformVersion in range [1.9, *)"); michael@0: assert.equal(xulApp.versionInRange("3.6.4", "3.6.4", "3.6.*"), michael@0: true, "3.6.4 in [3.6.4, 3.6.*)"); michael@0: assert.equal(xulApp.versionInRange("1.9.3", "1.9.2", "1.9.3"), michael@0: false, "1.9.3 not in [1.9.2, 1.9.3)"); michael@0: }; michael@0: michael@0: exports["test satisfies version range"] = function (assert) { michael@0: [ ["1.0.0 - 2.0.0", "1.2.3"], michael@0: ["1.0.0", "1.0.0"], michael@0: [">=*", "0.2.4"], michael@0: ["", "1.0.0"], michael@0: ["*", "1.2.3"], michael@0: [">=1.0.0", "1.0.0"], michael@0: [">=1.0.0", "1.0.1"], michael@0: [">=1.0.0", "1.1.0"], michael@0: [">1.0.0", "1.0.1"], michael@0: [">1.0.0", "1.1.0"], michael@0: ["<=2.0.0", "2.0.0"], michael@0: ["<=2.0.0", "1.9999.9999"], michael@0: ["<=2.0.0", "0.2.9"], michael@0: ["<2.0.0", "1.9999.9999"], michael@0: ["<2.0.0", "0.2.9"], michael@0: [">= 1.0.0", "1.0.0"], michael@0: [">= 1.0.0", "1.0.1"], michael@0: [">= 1.0.0", "1.1.0"], michael@0: ["> 1.0.0", "1.0.1"], michael@0: ["> 1.0.0", "1.1.0"], michael@0: ["<1", "1.0.0beta"], michael@0: ["< 1", "1.0.0beta"], michael@0: ["<= 2.0.0", "2.0.0"], michael@0: ["<= 2.0.0", "1.9999.9999"], michael@0: ["<= 2.0.0", "0.2.9"], michael@0: ["< 2.0.0", "1.9999.9999"], michael@0: ["<\t2.0.0", "0.2.9"], michael@0: [">=0.1.97", "0.1.97"], michael@0: ["0.1.20 || 1.2.4", "1.2.4"], michael@0: [">=0.2.3 || <0.0.1", "0.0.0"], michael@0: [">=0.2.3 || <0.0.1", "0.2.3"], michael@0: [">=0.2.3 || <0.0.1", "0.2.4"], michael@0: ["||", "1.3.4"], michael@0: ["2.x.x", "2.1.3"], michael@0: ["1.2.x", "1.2.3"], michael@0: ["1.2.x || 2.x", "2.1.3"], michael@0: ["1.2.x || 2.x", "1.2.3"], michael@0: ["x", "1.2.3"], michael@0: ["2.*.*", "2.1.3"], michael@0: ["1.2.*", "1.2.3"], michael@0: ["1.2.* || 2.*", "2.1.3"], michael@0: ["1.2.* || 2.*", "1.2.3"], michael@0: ["*", "1.2.3"], michael@0: ["2.*", "2.1.2"], michael@0: [">=1", "1.0.0"], michael@0: [">= 1", "1.0.0"], michael@0: ["<1.2", "1.1.1"], michael@0: ["< 1.2", "1.1.1"], michael@0: ["=0.7.x", "0.7.2"], michael@0: [">=0.7.x", "0.7.2"], michael@0: ["<=0.7.x", "0.6.2"], michael@0: ["<=0.7.x", "0.7.2"] michael@0: ].forEach(function (v) { michael@0: assert.ok(xulApp.satisfiesVersion(v[1], v[0]), v[0] + " satisfied by " + v[1]); michael@0: }); michael@0: } michael@0: exports["test not satisfies version range"] = function (assert) { michael@0: [ ["1.0.0 - 2.0.0", "2.2.3"], michael@0: ["1.0.0", "1.0.1"], michael@0: [">=1.0.0", "0.0.0"], michael@0: [">=1.0.0", "0.0.1"], michael@0: [">=1.0.0", "0.1.0"], michael@0: [">1.0.0", "0.0.1"], michael@0: [">1.0.0", "0.1.0"], michael@0: ["<=2.0.0", "3.0.0"], michael@0: ["<=2.0.0", "2.9999.9999"], michael@0: ["<=2.0.0", "2.2.9"], michael@0: ["<2.0.0", "2.9999.9999"], michael@0: ["<2.0.0", "2.2.9"], michael@0: [">=0.1.97", "v0.1.93"], michael@0: [">=0.1.97", "0.1.93"], michael@0: ["0.1.20 || 1.2.4", "1.2.3"], michael@0: [">=0.2.3 || <0.0.1", "0.0.3"], michael@0: [">=0.2.3 || <0.0.1", "0.2.2"], michael@0: ["2.x.x", "1.1.3"], michael@0: ["2.x.x", "3.1.3"], michael@0: ["1.2.x", "1.3.3"], michael@0: ["1.2.x || 2.x", "3.1.3"], michael@0: ["1.2.x || 2.x", "1.1.3"], michael@0: ["2.*.*", "1.1.3"], michael@0: ["2.*.*", "3.1.3"], michael@0: ["1.2.*", "1.3.3"], michael@0: ["1.2.* || 2.*", "3.1.3"], michael@0: ["1.2.* || 2.*", "1.1.3"], michael@0: ["2", "1.1.2"], michael@0: ["2.3", "2.3.1"], michael@0: ["2.3", "2.4.1"], michael@0: ["<1", "1.0.0"], michael@0: [">=1.2", "1.1.1"], michael@0: ["1", "2.0.0beta"], michael@0: ["=0.7.x", "0.8.2"], michael@0: [">=0.7.x", "0.6.2"], michael@0: ].forEach(function (v) { michael@0: assert.ok(!xulApp.satisfiesVersion(v[1], v[0]), v[0] + " not satisfied by " + v[1]); michael@0: }); michael@0: } michael@0: michael@0: require("test").run(exports);