drivers.html 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Virtual World Framework</title>
  5. <script type="text/javascript" src="qunit.js"></script>
  6. <script type="text/javascript" src="../lib/async.js"></script>
  7. <script type="text/javascript" src="../lib/alea.js"></script>
  8. <script type="text/javascript" src="../lib/mash.js"></script>
  9. <script type="text/javascript" src="../lib/vwf.js"></script>
  10. <script type="text/javascript" src="../lib/vwf/model/glge/glge-compiled.js"></script>
  11. <script type="text/javascript" src="../lib/require.js"></script>
  12. <script type="text/javascript">
  13. require( {
  14. baseUrl: "../lib",
  15. paths: {
  16. jquery: "jquery-1.10.2.min",
  17. },
  18. }, [
  19. "domReady",
  20. "utility.js",
  21. // This is the common model implementation and an example model that connects the
  22. // simulation to a WebGL scene manager.
  23. "jquery",
  24. "vwf/configuration",
  25. "vwf/kernel/model", // explicitly loaded until vwf can load its dependencies
  26. "vwf/model/glge",
  27. "vwf/model/object",
  28. "vwf/model/test",
  29. "vwf/model/stage/log", // explicitly loaded until vwf can load its dependencies
  30. "vwf/kernel/view", // explicitly loaded until vwf can load its dependencies
  31. "vwf/view/test",
  32. "vwf/view/glge",
  33. "vwf/kernel/utility",
  34. "vwf/utility",
  35. "logger",
  36. ], function( ready, testUtility ) {
  37. // Test the kernel-driver interface.
  38. ready( function() {
  39. vwf.initialize(
  40. // Models
  41. [
  42. "vwf/model/glge",
  43. "vwf/model/object",
  44. "vwf/model/test",
  45. { "vwf/model/test": undefined },
  46. { "vwf/model/test": null },
  47. { "vwf/model/test": "single" },
  48. { "vwf/model/test": [ "first", "second" ] },
  49. { "vwf/model/test": [ [ "array" ] ] },
  50. ],
  51. // Views
  52. [
  53. "vwf/view/glge",
  54. "vwf/view/test", // dummy to make the rest have the same indexes as the models
  55. "vwf/view/test",
  56. { "vwf/view/test": undefined },
  57. { "vwf/view/test": null },
  58. { "vwf/view/test": "single" },
  59. { "vwf/view/test": [ "first", "second" ] },
  60. { "vwf/view/test": [ [ "array" ] ] },
  61. ]
  62. );
  63. test( "Models", function() {
  64. equal( vwf.models.actual[0].module.id, "vwf/model/glge", "GLGE Model by number" );
  65. equal( vwf.models.actual["vwf/model/glge"].module.id, "vwf/model/glge", "GLGE Model by name" );
  66. equal( vwf.models.actual[0].module.id, vwf.models.actual["vwf/model/glge"].module.id, "GLGE Model by number and name" );
  67. equal( vwf.models.actual[1].module.id, "vwf/model/object", "Object Model by number" );
  68. equal( vwf.models.actual["vwf/model/object"].module.id, "vwf/model/object", "Object Model by name" );
  69. equal( vwf.models.actual[1].module.id, vwf.models.actual["vwf/model/object"].module.id, "Object Model by number and name" );
  70. } );
  71. test ( "Model parameters", function() {
  72. deepEqual( vwf.models.actual[2].arguments, [], "No arguments" );
  73. deepEqual( vwf.models.actual[3].arguments, [], "No arguments, explict undefined " );
  74. deepEqual( vwf.models.actual[4].arguments, [], "No arguments, explict null" );
  75. deepEqual( vwf.models.actual[5].arguments, [ "single" ], "Single argument as a value" );
  76. deepEqual( vwf.models.actual[6].arguments, [ "first", "second" ], "Multiple arguments as an array" );
  77. deepEqual( vwf.models.actual[7].arguments, [ [ "array" ] ], "Array as an argument" );
  78. } );
  79. test( "Views", function() {
  80. equal( vwf.views.actual[0].module.id, "vwf/view/glge", "GLGE View" );
  81. } );
  82. test ( "View parameters", function() {
  83. deepEqual( vwf.views[2].arguments, [], "No arguments" );
  84. deepEqual( vwf.views[3].arguments, [], "No arguments, explict undefined " );
  85. deepEqual( vwf.views[4].arguments, [], "No arguments, explict null" );
  86. deepEqual( vwf.views[5].arguments, [ "single" ], "Single argument as a value" );
  87. deepEqual( vwf.views[6].arguments, [ "first", "second" ], "Multiple arguments as an array" );
  88. deepEqual( vwf.views[7].arguments, [ [ "array" ] ], "Array as an argument" );
  89. } );
  90. test( "Shared state", function() {
  91. var model_glge = vwf.models.actual["vwf/model/glge"];
  92. var view_glge = vwf.views.actual["vwf/view/glge"];
  93. var state_glge = model_glge.state; // === view_glge.state, hopefully.
  94. // The GLGE model and view share state.
  95. strictEqual( model_glge.state, view_glge.state, "GLGE state shared between " +
  96. model_glge.module.id + " and " + view_glge.module.id );
  97. // But they don't share it with any other model stage.
  98. vwf.models.forEach( function( model ) {
  99. while ( model ) {
  100. model === model_glge || notStrictEqual( model.state, state_glge, "GLGE state not shared with " + model.module.id );
  101. model = model.model;
  102. }
  103. } );
  104. // Or with any other view stage.
  105. vwf.views.forEach( function( view ) {
  106. while ( view ) {
  107. view === view_glge || notStrictEqual( view.state, state_glge, "GLGE state not shared with " + view.module.id );
  108. view = view.view;
  109. }
  110. } );
  111. } );
  112. } );
  113. } );
  114. </script>
  115. <link rel="stylesheet" type="text/css" href="qunit.css" />
  116. </head>
  117. <body>
  118. <h1 id="qunit-header">Virtual World Framework</h1>
  119. <h2 id="qunit-banner"></h2>
  120. <div id="qunit-testrunner-toolbar"></div>
  121. <h2 id="qunit-userAgent"></h2>
  122. <ol id="qunit-tests"></ol>
  123. <div id="qunit-fixture">test markup, will be hidden</div>
  124. </body>
  125. </html>