var fs = require("fs"), path = require("path"), vm = require("vm"), long = require("long"), tape = require("tape"); var distPath = path.join(__dirname, "..", "..", "dist"); [ { name: "full", data: fs.readFileSync(path.join(distPath, "protobuf.min.js")).toString("utf8") }, { name: "light", data: fs.readFileSync(path.join(distPath, "light/protobuf.min.js")).toString("utf8") }, { name: "minimal", data: fs.readFileSync(path.join(distPath, "minimal/protobuf.min.js")).toString("utf8") } ] .forEach(function(dist) { tape.test(dist.name + " build", function(test) { test.test(test.name + " - script tags", function(test) { var sandbox; var dcodeIO = { Long: long }; vm.runInNewContext(dist.data, sandbox = { window: { dcodeIO: dcodeIO }, dcodeIO: dcodeIO }); test.ok(sandbox.window.protobuf, "should load the library as a global"); test.ok(sandbox.window.protobuf.util.Long, "should load long.js to util"); test.end(); }); test.test(test.name + " - webworkers", function(test) { var sandbox; var dcodeIO = { Long: long }; vm.runInNewContext(dist.data, sandbox = { self: { dcodeIO: dcodeIO }, dcodeIO: dcodeIO }); test.ok(sandbox.self.protobuf, "should load the library as a global"); test.ok(sandbox.self.protobuf.util.Long, "should load long.js to util"); test.end(); }); test.test(test.name + " - amd loaders", function(test) { var sandbox; function fakeDefine(deps, factory) { test.same(deps, [ "long" ], "should request long.js as a dependency"); test.notOk(sandbox.window.protobuf.util.Long, "should not have loaded long.js before calling the factory function"); factory(long); test.ok(sandbox.window.protobuf.util.Long, "should have loaded long.js after calling the factory function"); } fakeDefine.amd = true; vm.runInNewContext(dist.data, sandbox = { define: fakeDefine, window: {}, require: undefined, console: console }); test.ok(sandbox.window.protobuf, "should load the library as a global"); test.end(); }); }); }); // commonjs uses ./src