Przeglądaj źródła

added test for CmdSetScene

Mario Schuettel 9 lat temu
rodzic
commit
959bd79cff

+ 19 - 0
test/unit/editor/CommonUtilities.js

@@ -141,3 +141,22 @@ function getScriptCount( editor ) {
 
 	return scriptCount;
 }
+
+function exportScene( editor ) {
+
+	var output = editor.scene.toJSON();
+	output = JSON.stringify( output, null, '\t' );
+	output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
+	return output;
+
+}
+
+function importScene( data ) {
+
+	var json = JSON.parse( data );
+	var loader = new THREE.ObjectLoader();
+	var result = loader.parse( json );
+
+	return result;
+
+}

+ 68 - 0
test/unit/editor/TestCmdSetScene.js

@@ -0,0 +1,68 @@
+module("TestCmdSetScene");
+
+test("Test for CmdSetScene (Undo and Redo)", function() {
+
+	// setup
+	var editor = new Editor();
+	objects = [ aBox(), aSphere(), aPointlight() ];
+
+
+	// create multiple editors (scenes) and save the output
+	var scenes = objects.map( function( object ) {
+
+		editor = new Editor();
+		var cmd = new CmdAddObject( object );
+		cmd.updatable = false;
+		editor.execute( cmd );
+		return { obj: object, exportedData: exportScene( editor ) };
+
+	});
+
+
+	// create new empty editor (scene), merge the other editors (scenes)
+	editor = new Editor();
+	scenes.map( function( scene ) {
+
+		var importedScene = importScene( scene.exportedData );
+		var cmd = new CmdSetScene( editor.scene, importedScene );
+		cmd.updatable = false;
+		editor.execute( cmd );
+
+	});
+
+	// tests
+	ok( editor.scene.children.length = scenes.length,
+		"OK, all scenes have been merged");
+
+	var i = 0;
+	while( i < editor.scene.children.length ) {
+
+		ok( editor.scene.children[ i ].name == scenes[ i ].obj.name,
+			"OK, editor.scene.children[ " + i + " ].name matches scenes[ " + i + " ].obj.name");
+		i++;
+
+	}
+
+	editor.undo();
+	var i = 0;
+	while( i < editor.scene.children.length ) {
+
+		ok( editor.scene.children[ i ].name == scenes[ i ].obj.name,
+			"OK, editor.scene.children[ " + i + " ].name matches scenes[ " + i + " ].obj.name after undo");
+		i++;
+
+	}
+
+
+	editor.redo();
+	var i = 0;
+	while( i < editor.scene.children.length ) {
+
+		ok( editor.scene.children[ i ].name == scenes[ i ].obj.name,
+			"OK, editor.scene.children[ " + i + " ].name matches scenes[ " + i + " ].obj.name after redo");
+		i++;
+
+	}
+
+
+});

+ 2 - 2
test/unit/unittests_editor.html

@@ -86,7 +86,7 @@
 <script src="../../editor/js/CmdSetPosition.js"></script>
 <script src="../../editor/js/CmdSetRotation.js"></script>
 <script src="../../editor/js/CmdSetScale.js"></script>
-<!-- <script src="../../editor/js/CmdSetScene.js"></script> -->
+<script src="../../editor/js/CmdSetScene.js"></script>
 <script src="../../editor/js/CmdSetScriptValue.js"></script>
 <script src="../../editor/js/CmdSetUuid.js"></script>
 <script src="../../editor/js/CmdSetValue.js"></script>
@@ -111,7 +111,7 @@
 <script src="editor/TestCmdSetPosition.js"></script>
 <script src="editor/TestCmdSetRotation.js"></script>
 <script src="editor/TestCmdSetScale.js"></script>
-<!-- <script src="editor/TestCmdSetScene.js"></script> -->
+<script src="editor/TestCmdSetScene.js"></script>
 <script src="editor/TestCmdSetScriptName.js"></script>
 <script src="editor/TestCmdSetScriptValue.js"></script>
 <script src="editor/TestCmdSetUuid.js"></script>