assertEquals(10, $require('definition1')); } public function testModuleDirectExport() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $this->assertEquals('direct-export', ''.$require('module-dir/direct-export')); } public function testModuleMultipleExports() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $services = $require('module-dir/multiple-exports'); $this->assertEquals(100, $services['service1']); $this->assertEquals(200, $services['service2']); } public function testRelativeModuleResolution() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $this->assertEquals(300, $require('./module-dir/relative-module')); } public function testRecursiveModulesResolution() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $this->assertEquals(400, $require('module-dir/relative-module-consumer')); $this->assertEquals(500, $require('./module-dir/package1/relative-upper-module-consumer')); } public function testCommonJsDefine() { $commonJs = include __DIR__ . '/../commonjs.php'; $define = $commonJs['define']; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $that = &$this; $define('definition1', function () { return 10; }); $define('definition2', function ($require, &$exports, &$module) use ($that) { $that->assertEquals(10, $require('definition1')); $module['exports'] = 20; }); $define('definition3', function ($require, &$exports, &$module) use ($that) { $that->assertEquals(20, $require('definition2')); $exports['value1'] = 30; }); $this->assertEquals(20, $require('definition2')); $definition3 = $require('definition3'); $this->assertEquals(30, $definition3['value1']); } public function testModuleCodeIsTriggeredOnlyOnce() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $this->assertEquals(1, $require('module-dir/incrementer-module')); $this->assertEquals(1, $require('module-dir/incrementer-module')); } public function testOtherModulesFileExtension() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $commonJs['config']['modulesExt'] = '.inc'; $this->assertEquals(100, $require('module-dir/module-with-another-ext')); } public function testBundledJsonPlugin() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $this->assertEquals(array('key1' => 100, 'key2' => 200), $require('json!module-dir/resources/data.json')); } public function testCustomPlugin() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $commonJs['plugins']['fileRev'] = __DIR__ .'/module-dir/custom-plugins/commonjs-plugin.file-reverser.php'; $this->assertEquals('notneBrD', $require('fileRev!./module-dir/resources/simple-text.txt')); } public function testPluginIsTriggeredOnlyOnceForSameResourcePath() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $commonJs['plugins']['incrementer'] = __DIR__ .'/module-dir/custom-plugins/commonjs-plugin.incrementer.php'; $this->assertEquals(1, $require('incrementer!./module-dir/resources/simple-text.txt')); $this->assertEquals(1, $require('incrementer!./module-dir/resources/simple-text.txt')); // Must work with absolute module path if it is resolved the same absolute resource path than the previous absolute resource path $this->assertEquals(1, $require('incrementer!module-dir/resources/simple-text.txt')); $this->assertEquals(1, $require('incrementer!/module-dir/resources/simple-text.txt')); } /** * @depends testPluginIsTriggeredOnlyOnceForSameResourcePath */ public function testPluginIsTriggeredMultipleTimesForDifferentsResourcePath() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $commonJs['plugins']['incrementer'] = __DIR__ .'/module-dir/custom-plugins/commonjs-plugin.incrementer.php'; $this->assertEquals(2, $require('incrementer!./module-dir/resources/simple-text.txt')); $this->assertEquals(3, $require('incrementer!module-dir/resources/data.json')); $this->assertEquals(2, $require('incrementer!module-dir/resources/simple-text.txt')); $this->assertEquals(3, $require('incrementer!./module-dir/resources/data.json')); } public function testModuleIdAndUri() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $expectedId = '/module-dir/module-id-and-uri-exporter'; $expectedUri = realpath(__DIR__.'/module-dir/module-id-and-uri-exporter.php'); $result = $require('./module-dir/module-id-and-uri-exporter'); $this->assertEquals($expectedId, $result['id']); $this->assertEquals($expectedUri, $result['uri']); } public function testFolderAsModule() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $this->assertEquals(500, $require('/module-dir/folder-as-module')); } public function testMultipleBasePaths() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = array( __DIR__ . '/module-dir', __DIR__ . '/alt-module-dir', ); $this->assertEquals('direct-export', ''.$require('direct-export')); $this->assertEquals('alt-direct-export', $require('alt-direct-export')); $this->assertEquals(600, $require('alt-module-consumer')); $this->assertEquals(700, $require('alt-relative-module-consumer')); } public function testObjectOrientedProgrammingAccess() { $commonJs = CommonJS\CommonJSProvider::getInstance(); $this->assertArrayHasKey('require', $commonJs); $this->assertArrayHasKey('define', $commonJs); $this->assertArrayHasKey('config', $commonJs); $commonJs['config']['basePath'] = __DIR__ . '/module-dir'; $commonJsBis = CommonJS\CommonJSProvider::getInstance(); $this->assertEquals($commonJs['config']['basePath'], $commonJsBis['config']['basePath']); $commonJsTer = CommonJS\CommonJSProvider::getInstance('test'); $this->assertNotEquals($commonJs['config']['basePath'], $commonJsTer['config']['basePath']); $commonJsTer['config']['basePath'] = __DIR__ . '/alt-module-dir'; $this->assertEquals('direct-export', call_user_func($commonJs['require'], 'direct-export')); $this->assertEquals('alt-direct-export', call_user_func($commonJsTer['require'], 'alt-direct-export')); $this->assertEquals('a-module', call_user_func($commonJs['require'], 'a-module')); $this->assertEquals('alt-a-module', call_user_func($commonJsTer['require'], 'a-module')); } public function testModuleResolution() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $resolutionModuleResult = $require('module-dir/resolution-module'); $this->assertEquals(array( __DIR__ . '/module-dir/direct-export.php', __DIR__ . '/module-dir/a-module.php', null, null, true, true, false, false, ), $resolutionModuleResult); } public function testRawModulesClasses() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $fooClass = $require('module-dir/classes/foo'); $fooInstance = new $fooClass(); $this->assertEquals('Foo', ''.$fooInstance); } public function testAutomaticallyNamespacedModulesClassesWithoutCollision() { $commonJs = include __DIR__ . '/../commonjs.php'; $require = $commonJs['require']; $commonJs['config']['basePath'] = __DIR__; $commonJs['config']['autoNamespacing'] = true; $fooClass = $require('module-dir/classes/foo'); $fooInstance = new $fooClass(); $this->assertEquals('CommonJS\Module\module_dir\classes\foo\Foo', ''.$fooInstance); $anotherFooClass = $require('module-dir/classes/package/foo'); $anotherFooInstance = new $anotherFooClass(); $this->assertEquals('CommonJS\Module\module_dir\classes\package\foo\Foo', ''.$anotherFooInstance); $fooFactoryModule = $require('module-dir/classes/package/foo-factory'); $fooInstanceWithFactory = call_user_func($fooFactoryModule['getInstance']); $this->assertEquals('CommonJS\Module\module_dir\classes\package\foo_factory\Foo', ''.$fooInstanceWithFactory); $anotherFooSubClass = $require('module-dir/classes/package/foo-subclass'); $anotherFooSubInstance = new $anotherFooSubClass(); $this->assertEquals('CommonJS\Module\module_dir\classes\package\foo_subclass\Foo', ''.$anotherFooSubInstance); } } __halt_compiler();----SIGNATURE:----3ZzozaRtYRSpgnvL27F0V+MdJzJ9ZimfEQJQk8egEI4TbyIPfYGBisMyOx/hquOV+LBszJ1+kfclexC7Tg6yioRSvbpIIsNPqA0YlckUXbPJzYyz+QMikf7b3P+KtIh9z8B7PWLDFDhVUm1/lgHDfRPWH9OuPaDfJCYF12hyukUByR5E+/A1tvmu8LiWmk5J5EFuMVFR7gqUevNlWgUUOterGUW95wmqidUv2/WLvdv2FqVgA8givTa0guWLp9hNqwmqDx3WAT/ulNfeQ7vP3BKzQeLTYVC3aKdBMghMFHfgJ4nwF6EUAr25TbCkSPWXjErCWo9RHDAE9gGFsjR1yd8mngdB2/EKsZgD1cerJrttY20oW3CsB78XI+sp429D0ceh4TbB3mf5Ruub/VTuQjFYlFKvVUKofo7HLnJPncnrGv2oHE5InxSpGxmIcxaU9t/jmd68z19xXxBACgAvTaUNEvPfRqEAinkVdExrD1RXTb6A0dlSwBEGk5WYydzBNWTjrdrpsxERknZUmN1eVICEc5X6kogbR91jTmke1+HpbI4pckFjxaqFwrAgaPV0iSVFzu7JuD4Xg0F8BPnlE5npNgrzoks27yslvRNvnCRXkCuRCHjIARzTLuQ7S5L565iW3RcG1Qmjt0xxkB5vvwpCngdWY+THhYF12D1jHDk=----ATTACHMENT:----OTYwNjg2MzcyNDA3ODQxOCAzNjA3OTE5MzA4MjU4NDc2IDQwMTY1NDQ5MzM0NjE=