js/src/jit-test/tests/basic/testScriptCloning.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/jit-test/tests/basic/testScriptCloning.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,28 @@
     1.4 +var g = newGlobal();
     1.5 +
     1.6 +function cloneableFunction(body) {
     1.7 +    return evaluate("(function () { " + body + " })", {compileAndGo: false});
     1.8 +}
     1.9 +
    1.10 +g.f = cloneableFunction('return function(x) { return x };');
    1.11 +assertEq(g.eval("clone(f)()(9)"), 9);
    1.12 +
    1.13 +g.f = cloneableFunction('return function(x) { let(y = x+1) { return y } };');
    1.14 +assertEq(g.eval("clone(f)()(9)"), 10);
    1.15 +
    1.16 +g.f = cloneableFunction('return function(x) { let(y = x, z = 1) { return y+z } };');
    1.17 +assertEq(g.eval("clone(f)()(9)"), 10);
    1.18 +
    1.19 +g.f = cloneableFunction('return function(x) { return x.search(/ponies/) };');
    1.20 +assertEq(g.eval("clone(f)()('123ponies')"), 3);
    1.21 +
    1.22 +g.f = cloneableFunction('return function(x,y) { return x.search(/a/) + y.search(/b/) };');
    1.23 +assertEq(g.eval("clone(f)()('12a','foo')"), 1);
    1.24 +
    1.25 +g.f = cloneableFunction('return [function(x) x+2, function(y) let(z=y+1) z];');
    1.26 +assertEq(g.eval("let ([f,g] = clone(f)()) f(g(4))"), 7);
    1.27 +
    1.28 +g.f = cloneableFunction('return function(x) { switch(x) { case "a": return "b"; case null: return "c" } };');
    1.29 +assertEq(g.eval("clone(f)()('a')"), "b");
    1.30 +assertEq(g.eval("clone(f)()(null)"), "c");
    1.31 +assertEq(g.eval("clone(f)()(3)"), undefined);

mercurial