blob: ac57acf5c7996c0c1aa558f85b5b206ef8972821 [file] [log] [blame]
var FrameworkTest = TestCase.create("FrameworkTest");
FrameworkTest.prototype.testEmptyGetBundles = function() {
var framework = new orion.Framework();
assertEquals(0, framework.getBundles().length);
};
FrameworkTest.prototype.getSetProperty = function() {
var framework = new orion.Framework();
assertUndefined(framework.getProperty("test"));
framework.setProperty("test", "value");
assertEquals("test", framework.getProperty("test"));
framework.setProperty("test");
assertUndefined(framework.getProperty("test"));
};
FrameworkTest.prototype.testNullLocationInstallBundle = function() {
var framework = new orion.Framework();
try {
framework.installBundle(null);
} catch (e) {
return;
}
fail();
};
FrameworkTest.prototype.testSimpleInstallBundle = function() {
var framework = new orion.Framework();
var b = framework.installBundle("xyz", {name:"xyz"});
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
};
FrameworkTest.prototype.testLocationInstallBundle = function() {
var framework = new orion.Framework();
var clazz = Packages.org.eclipse.e4.languages.javascript.framework.test.AllTests;
var b = framework.installBundle(clazz.getResource("/scripts/bundle1"));
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
};
FrameworkTest.prototype.testLocationResolveBundle = function() {
var framework = new orion.Framework();
var clazz = Packages.org.eclipse.e4.languages.javascript.framework.test.AllTests;
var b = framework.installBundle(clazz.getResource("/scripts/bundle2"));
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertEquals(orion.Bundle.RESOLVED, b.getState());
assertEquals(7, b.load("test").x);
assertEquals(8, b.load("test").y);
assertEquals(9, b.load("test").z);
};
// test is really slow because of envjs uri handling
//XXXing test out for now
FrameworkTest.prototype.XXXtestLocationResolveDojoBundle = function() {
var framework = new orion.Framework();
var clazz = Packages.org.eclipse.e4.languages.javascript.framework.test.AllTests;
var b = framework.installBundle(clazz.getResource("/scripts/bundle3"));
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertEquals(orion.Bundle.RESOLVED, b.getState());
assertTrue(b.load("dojo").version.toString().indexOf("1.3.3") != -1);
};
FrameworkTest.prototype.testEmptyRefresh = function() {
var framework = new orion.Framework();
framework.refresh();
};
FrameworkTest.prototype.testSimpleRefresh = function() {
var framework = new orion.Framework();
var b = framework.installBundle("xyz", {name:"xyz"});
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
b.uninstall();
assertEquals(orion.Bundle.UNINSTALLED, b.getState());
assertEquals(1, framework.getBundles().length);
framework.refresh();
assertEquals(0, framework.getBundles().length);
};
FrameworkTest.prototype.testEmptyResolve = function() {
var framework = new orion.Framework();
framework.resolve();
};
FrameworkTest.prototype.testSimpleResolve = function() {
var framework = new orion.Framework();
var b = framework.installBundle("xyz", {name:"xyz"});
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertEquals(orion.Bundle.RESOLVED, b.getState());
};
FrameworkTest.prototype.testResolveNonSingleton = function() {
var framework = new orion.Framework();
var a = framework.installBundle("cde", {name:"cde", version:"1"});
var b = framework.installBundle("cde2", {name:"cde", version:"2"});
assertEquals(2, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, a.getState());
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertTrue(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveSingletonFail = function() {
var framework = new orion.Framework();
var a = framework.installBundle("cde", {name:"cde", singleton:true, version:"1"});
var b = framework.installBundle("cde2", {name:"cde", singleton:true, version:"2"});
assertEquals(2, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, a.getState());
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertFalse(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveImportsFail = function() {
var framework = new orion.Framework();
var b = framework.installBundle("xyz", {name:"xyz", imports:["abc"]});
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertFalse(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveOptionalImports = function() {
var framework = new orion.Framework();
var b = framework.installBundle("xyz", {name:"xyz", imports:[{name:"abc", resolution:"optional"}]});
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveImportsSuccess = function() {
var framework = new orion.Framework();
var a = framework.installBundle("cde", {name:"cde", exports:["abc"], script:"var abc = {hi:7};"});
var b = framework.installBundle("xyz", {name:"xyz", imports:["abc"]});
assertEquals(2, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, a.getState());
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertTrue(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveVersionedImportsSuccess = function() {
var framework = new orion.Framework();
var a = framework.installBundle("cde", {name:"cde", exports:[{name:"abc",version:"1.2"}], script:"var abc = {hi:7};"});
var b = framework.installBundle("xyz", {name:"xyz", imports:[{name:"abc",version:"1.2"}]});
assertEquals(2, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, a.getState());
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertTrue(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveVersionedImportsFail = function() {
var framework = new orion.Framework();
var a = framework.installBundle("cde", {name:"cde", exports:[{name:"abc",version:"1.1"}], script:"var abc = {hi:7};"});
var b = framework.installBundle("xyz", {name:"xyz", imports:[{name:"abc",version:"1.2"}]});
assertEquals(2, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, a.getState());
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertFalse(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveResourceImportsSuccess = function() {
var framework = new orion.Framework();
var a = framework.installBundle("cde", {name:"cde", exports:["/abc/def"]});
var b = framework.installBundle("xyz", {name:"xyz", imports:["/abc/def"]});
assertEquals(2, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, a.getState());
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertTrue(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveImportsFailAfterUninstall = function() {
var framework = new orion.Framework();
var a = framework.installBundle("cde", {name:"cde", exports:["abc"], script:"var abc = {hi:7};"});
var b = framework.installBundle("xyz", {name:"xyz", imports:["abc"]});
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertTrue(orion.Bundle.RESOLVED == b.getState());
a.uninstall();
framework.refresh();
assertFalse(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveLikeFunction = function() {
var load = new Function("", "var abc = {hi:7};\n\n return {abc:abc};");
var x= load.apply({}, []);
assertEquals(7, x.abc.hi);
};
FrameworkTest.prototype.testResolveImportsLoad = function() {
var framework = new orion.Framework();
var a = framework.installBundle("cde", {name:"cde", exports:["abc"], script:"var abc = {hi:7};"});
framework.resolve();
assertEquals(7, a._scope.abc.hi);
assertEquals(7, a.load("abc").hi);
var b = framework.installBundle("xyz", {name:"xyz", imports:["abc"], exports:["def"], script:"var def = abc;"});
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertTrue(orion.Bundle.RESOLVED == b.getState());
assertEquals(7, b.load("def").hi);
};
FrameworkTest.prototype.testResolveMultipleImportsLoad = function() {
var framework = new orion.Framework();
var a = framework.installBundle("cde", {name:"cde", exports:["abc","xyz"], script:"var abc = {hi:7};\nvar xyz = {bye:9};"});
framework.resolve();
assertEquals(7, a._scope.abc.hi);
assertEquals(7, a.load("abc").hi);
assertEquals(9, a.load("xyz").bye);
var b = framework.installBundle("xyz", {name:"xyz", imports:["abc","xyz"], exports:["def","ghi"], script:"var def = abc;\nvar ghi = xyz;"});
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertTrue(orion.Bundle.RESOLVED == b.getState());
assertEquals(7, b.load("def").hi);
assertEquals(9, b.load("ghi").bye);
};
FrameworkTest.prototype.testResolveRequiresFail = function() {
var framework = new orion.Framework();
var b = framework.installBundle("xyz", {name:"xyz", requires:["abc"]});
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertFalse(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveOptionalRequires = function() {
var framework = new orion.Framework();
var b = framework.installBundle("xyz", {name:"xyz", requires:[{name:"abc",resolution:"optional"}]});
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveRequiresFailAfterUninstall = function() {
var framework = new orion.Framework();
var a = framework.installBundle("abc", {name:"abc"});
var b = framework.installBundle("xyz", {name:"xyz", requires:["abc"]});
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertTrue(orion.Bundle.RESOLVED == b.getState());
a.uninstall();
framework.refresh();
assertFalse(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveRequiresSuccess = function() {
var framework = new orion.Framework();
var a = framework.installBundle("abc", {name:"abc"});
var b = framework.installBundle("xyz", {name:"xyz", requires:["abc"]});
assertEquals(2, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, a.getState());
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertTrue(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveVersionedRequiresSuccess = function() {
var framework = new orion.Framework();
var a = framework.installBundle("abc", {name:"abc", version:"1.2"});
var b = framework.installBundle("xyz", {name:"xyz", requires:[{name:"abc",bundleVersion:"1.2"}]});
assertEquals(2, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, a.getState());
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertTrue(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testResolveVersionedRequiresFail = function() {
var framework = new orion.Framework();
var a = framework.installBundle("abc", {name:"abc", version:"1.1"});
var b = framework.installBundle("xyz", {name:"xyz", requires:[{name:"abc",bundleVersion:"1.2"}]});
assertEquals(2, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, a.getState());
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.resolve();
assertTrue(orion.Bundle.RESOLVED == a.getState());
assertFalse(orion.Bundle.RESOLVED == b.getState());
};
FrameworkTest.prototype.testEmptyShutdown = function() {
var framework = new orion.Framework();
framework.shutdown();
};
FrameworkTest.prototype.testEmptyShutdown = function() {
var framework = new orion.Framework();
var b = framework.installBundle("xyz", {name:"xyz"});
assertEquals(1, framework.getBundles().length);
assertEquals(orion.Bundle.INSTALLED, b.getState());
framework.shutdown();
assertEquals(0, framework.getBundles().length);
};
var foo="ha";
FrameworkTest.prototype.testBoris = function() {
function isGlobal(candidate) {
return candidate == (function(){return this})();
}
assertTrue(isGlobal((function(){return this})()));
(function(){
this.fool = "ha";
})();
var a ={foo:"bar"};
function doIt1(){
return this.foo;
}
function doIt2(){
function doIt3(){
return this.foo;
}
return doIt3();
}
assertEquals("doIt1 failed", "bar", doIt1.apply(a));
assertEquals("ha", doIt2.apply(a));
};