tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

module-declaration-instantiation.js (1234B)


      1 // Exercise ModuleDeclarationInstantiation() operation.
      2 
      3 function testModuleEnvironment(module, expected) {
      4    var actual = getModuleEnvironmentNames(module).sort();
      5    assertEq(actual.length, expected.length);
      6    for (var i = 0; i < actual.length; i++) {
      7        assertEq(actual[i], expected[i]);
      8    }
      9 }
     10 
     11 // Check the environment of an empty module.
     12 let m = parseModule("");
     13 moduleLink(m);
     14 testModuleEnvironment(m, []);
     15 
     16 let a = registerModule('a', parseModule("var x = 1; export { x };"));
     17 let b = registerModule('b', parseModule("import { x as y } from 'a';"));
     18 
     19 moduleLink(a);
     20 moduleLink(b);
     21 
     22 testModuleEnvironment(a, ['x']);
     23 testModuleEnvironment(b, ['y']);
     24 
     25 // Function bindings are initialized as well as instantiated.
     26 let c = parseModule(`function a(x) { return x; }
     27                     function b(x) { return x + 1; }
     28                     function c(x) { return x + 2; }
     29                     function d(x) { return x + 3; }`);
     30 const names = ['a', 'b', 'c', 'd'];
     31 testModuleEnvironment(c, names);
     32 names.forEach((n) => assertEq(typeof getModuleEnvironmentValue(c, n), "undefined"));
     33 moduleLink(c);
     34 for (let i = 0; i < names.length; i++) {
     35    let f = getModuleEnvironmentValue(c, names[i]);
     36    assertEq(f(21), 21 + i);
     37 }