SetSceneCommand.tests.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /**
  2. * @author lxxxvi / https://github.com/lxxxvi
  3. * Developed as part of a project at University of Applied Sciences and Arts Northwestern Switzerland (www.fhnw.ch)
  4. */
  5. QUnit.module( "TestCmdSetScene" );
  6. QUnit.test( "Test for SetSceneCommand (Undo and Redo)", function( assert ) {
  7. // setup
  8. var editor = new Editor();
  9. objects = [ aBox(), aSphere(), aPointlight() ];
  10. // create multiple editors (scenes) and save the output
  11. var scenes = objects.map( function( object ) {
  12. editor = new Editor();
  13. var cmd = new AddObjectCommand( object );
  14. cmd.updatable = false;
  15. editor.execute( cmd );
  16. return { obj: object, exportedData: exportScene( editor ) };
  17. } );
  18. // create new empty editor (scene), merge the other editors (scenes)
  19. editor = new Editor();
  20. scenes.map( function( scene ) {
  21. var importedScene = importScene( scene.exportedData );
  22. var cmd = new SetSceneCommand( importedScene );
  23. cmd.updatable = false;
  24. editor.execute( cmd );
  25. } );
  26. // tests
  27. assert.ok( editor.scene.children.length = scenes.length,
  28. "OK, all scenes have been merged" );
  29. var i = 0;
  30. while ( i < editor.scene.children.length ) {
  31. assert.ok( editor.scene.children[ i ].name == scenes[ i ].obj.name,
  32. "OK, editor.scene.children[ " + i + " ].name matches scenes[ " + i + " ].obj.name" );
  33. i ++;
  34. }
  35. editor.undo();
  36. var i = 0;
  37. while ( i < editor.scene.children.length ) {
  38. assert.ok( editor.scene.children[ i ].name == scenes[ i ].obj.name,
  39. "OK, editor.scene.children[ " + i + " ].name matches scenes[ " + i + " ].obj.name after undo" );
  40. i ++;
  41. }
  42. editor.redo();
  43. var i = 0;
  44. while ( i < editor.scene.children.length ) {
  45. assert.ok( editor.scene.children[ i ].name == scenes[ i ].obj.name,
  46. "OK, editor.scene.children[ " + i + " ].name matches scenes[ " + i + " ].obj.name after redo" );
  47. i ++;
  48. }
  49. } );