| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 | <!DOCTYPE html><html>  <head>    <title>Virtual World Framework</title>    <script type="text/javascript" src="qunit.js"></script>    <script type="text/javascript" src="../lib/async.js"></script>    <script type="text/javascript" src="../lib/alea.js"></script>    <script type="text/javascript" src="../lib/mash.js"></script>    <script type="text/javascript" src="../lib/vwf.js"></script>    <script type="text/javascript" src="../lib/vwf/model/glge/glge-compiled.js"></script>    <script type="text/javascript" src="../lib/require.js"></script>    <script type="text/javascript">      require( {        baseUrl: "../lib",        paths: {          jquery: "jquery-1.10.2.min",        },      }, [        "domReady",        "utility.js",        // This is the common model implementation and an example model that connects the        // simulation to a WebGL scene manager.        "jquery",        "vwf/configuration",        "vwf/kernel/model", // explicitly loaded until vwf can load its dependencies        "vwf/model/glge",        "vwf/model/object",        "vwf/model/test",        "vwf/model/stage/log", // explicitly loaded until vwf can load its dependencies        "vwf/kernel/view", // explicitly loaded until vwf can load its dependencies        "vwf/view/test",        "vwf/view/glge",        "vwf/kernel/utility",        "vwf/utility",        "logger",      ], function( ready, testUtility ) {        // Test the kernel-driver interface.        ready( function() {          vwf.initialize(            // Models            [              "vwf/model/glge",              "vwf/model/object",              "vwf/model/test",              { "vwf/model/test": undefined },              { "vwf/model/test": null },              { "vwf/model/test": "single" },              { "vwf/model/test": [ "first", "second" ] },              { "vwf/model/test": [ [ "array" ] ] },            ],            // Views            [              "vwf/view/glge",              "vwf/view/test", // dummy to make the rest have the same indexes as the models              "vwf/view/test",              { "vwf/view/test": undefined },              { "vwf/view/test": null },              { "vwf/view/test": "single" },              { "vwf/view/test": [ "first", "second" ] },              { "vwf/view/test": [ [ "array" ] ] },            ]          );          test( "Models", function() {            equal( vwf.models.actual[0].module.id, "vwf/model/glge", "GLGE Model by number" );            equal( vwf.models.actual["vwf/model/glge"].module.id, "vwf/model/glge", "GLGE Model by name" );            equal( vwf.models.actual[0].module.id, vwf.models.actual["vwf/model/glge"].module.id, "GLGE Model by number and name" );            equal( vwf.models.actual[1].module.id, "vwf/model/object", "Object Model by number" );            equal( vwf.models.actual["vwf/model/object"].module.id, "vwf/model/object", "Object Model by name" );            equal( vwf.models.actual[1].module.id, vwf.models.actual["vwf/model/object"].module.id, "Object Model by number and name" );          } );          test ( "Model parameters", function() {            deepEqual( vwf.models.actual[2].arguments, [], "No arguments" );            deepEqual( vwf.models.actual[3].arguments, [], "No arguments, explict undefined " );            deepEqual( vwf.models.actual[4].arguments, [], "No arguments, explict null" );            deepEqual( vwf.models.actual[5].arguments, [ "single" ], "Single argument as a value" );            deepEqual( vwf.models.actual[6].arguments, [ "first", "second" ], "Multiple arguments as an array" );            deepEqual( vwf.models.actual[7].arguments, [ [ "array" ] ], "Array as an argument" );          } );          test( "Views", function() {            equal( vwf.views.actual[0].module.id, "vwf/view/glge", "GLGE View" );          } );          test ( "View parameters", function() {            deepEqual( vwf.views[2].arguments, [], "No arguments" );            deepEqual( vwf.views[3].arguments, [], "No arguments, explict undefined " );            deepEqual( vwf.views[4].arguments, [], "No arguments, explict null" );            deepEqual( vwf.views[5].arguments, [ "single" ], "Single argument as a value" );            deepEqual( vwf.views[6].arguments, [ "first", "second" ], "Multiple arguments as an array" );            deepEqual( vwf.views[7].arguments, [ [ "array" ] ], "Array as an argument" );          } );          test( "Shared state", function() {            var model_glge = vwf.models.actual["vwf/model/glge"];            var view_glge = vwf.views.actual["vwf/view/glge"];            var state_glge = model_glge.state; // === view_glge.state, hopefully.            // The GLGE model and view share state.            strictEqual( model_glge.state, view_glge.state, "GLGE state shared between " +                model_glge.module.id + " and " + view_glge.module.id );            // But they don't share it with any other model stage.            vwf.models.forEach( function( model ) {                while ( model ) {                    model === model_glge || notStrictEqual( model.state, state_glge, "GLGE state not shared with " + model.module.id );                    model = model.model;                }            } );            // Or with any other view stage.            vwf.views.forEach( function( view ) {                while ( view ) {                    view === view_glge || notStrictEqual( view.state, state_glge, "GLGE state not shared with " + view.module.id );                    view = view.view;                }            } );          } );                 } );      } );    </script>    <link rel="stylesheet" type="text/css" href="qunit.css" />  </head>  <body>    <h1 id="qunit-header">Virtual World Framework</h1>    <h2 id="qunit-banner"></h2>    <div id="qunit-testrunner-toolbar"></div>    <h2 id="qunit-userAgent"></h2>    <ol id="qunit-tests"></ol>    <div id="qunit-fixture">test markup, will be hidden</div>  </body></html>
 |