TestCmdSetScene.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. module( "TestCmdSetScene" );
  2. test( "Test for CmdSetScene (Undo and Redo)", function() {
  3. // setup
  4. var editor = new Editor();
  5. objects = [ aBox(), aSphere(), aPointlight() ];
  6. // create multiple editors (scenes) and save the output
  7. var scenes = objects.map( function( object ) {
  8. editor = new Editor();
  9. var cmd = new CmdAddObject( object );
  10. cmd.updatable = false;
  11. editor.execute( cmd );
  12. return { obj: object, exportedData: exportScene( editor ) };
  13. } );
  14. // create new empty editor (scene), merge the other editors (scenes)
  15. editor = new Editor();
  16. scenes.map( function( scene ) {
  17. var importedScene = importScene( scene.exportedData );
  18. var cmd = new CmdSetScene( importedScene );
  19. cmd.updatable = false;
  20. editor.execute( cmd );
  21. } );
  22. // tests
  23. ok( editor.scene.children.length = scenes.length,
  24. "OK, all scenes have been merged" );
  25. var i = 0;
  26. while ( i < editor.scene.children.length ) {
  27. ok( editor.scene.children[ i ].name == scenes[ i ].obj.name,
  28. "OK, editor.scene.children[ " + i + " ].name matches scenes[ " + i + " ].obj.name" );
  29. i ++;
  30. }
  31. editor.undo();
  32. var i = 0;
  33. while ( i < editor.scene.children.length ) {
  34. ok( editor.scene.children[ i ].name == scenes[ i ].obj.name,
  35. "OK, editor.scene.children[ " + i + " ].name matches scenes[ " + i + " ].obj.name after undo" );
  36. i ++;
  37. }
  38. editor.redo();
  39. var i = 0;
  40. while ( i < editor.scene.children.length ) {
  41. ok( editor.scene.children[ i ].name == scenes[ i ].obj.name,
  42. "OK, editor.scene.children[ " + i + " ].name matches scenes[ " + i + " ].obj.name after redo" );
  43. i ++;
  44. }
  45. } );