Ver Fonte

added test for CmdSetMaterial
added test for CmdSetMaterialMap
merged TestCmdAddObject and TestCmdRemoveObject into TestCmdAddObjectAndCmdRemoveObject
adjusted and added calls in unittest_editor.html
removed console.log() in TestCmdMultiCmds

Mario Schuettel há 9 anos atrás
pai
commit
89b34ce1d7

+ 0 - 20
test/unit/editor/TestCmdAddObject.js

@@ -1,20 +0,0 @@
-module( "CmdAddObject" );
-
-test( "Test CmdAddObject (Undo and Redo)", function() {
-
-	var editor = new Editor();
-
-	var theName = "This awesome box";
-
-	var mesh = aBox( theName );
-
-	editor.execute( new CmdAddObject( mesh ) );
-	ok( editor.scene.children.length == 1, "OK, adding object was successful " );
-
-	editor.undo();
-	ok( editor.scene.children.length == 0, "OK, adding object is undone (was removed)" );
-
-	editor.redo();
-	ok( editor.scene.children[0].name == theName , "OK, removed object was added again (redo)" );
-
-});

+ 47 - 0
test/unit/editor/TestCmdAddObjectAndCmdRemoveObject.js

@@ -0,0 +1,47 @@
+module( "CmdAddObjectAndCmdRemoveObject" );
+
+test( "Test CmdAddObject and CmdRemoveObject (Undo and Redo)", function() {
+
+	// setup
+	var editor = new Editor();
+
+	var box = aBox( 'The Box' );
+	var light = aPointlight( 'The PointLight' );
+	var camera = aPerspectiveCamera( 'The Camera' );
+
+	var objects = [ box, light, camera ];
+
+	objects.map( function( object ) {
+
+		// Test Add
+		var cmd = new CmdAddObject( object );
+		cmd.updatable = false;
+
+		editor.execute( cmd );
+		ok( editor.scene.children.length == 1, "OK, adding '" + object.type + "' was successful " );
+
+		editor.undo();
+		ok( editor.scene.children.length == 0, "OK, adding '" + object.type + "' is undone (was removed)" );
+
+		editor.redo();
+		ok( editor.scene.children[ 0 ].name == object.name , "OK, removed '" + object.type + "' was added again (redo)" );
+
+
+		// Test Remove
+		var cmd = new CmdRemoveObject( object );
+		cmd.updatable = false;
+
+		editor.execute( cmd );
+		ok( editor.scene.children.length == 0, "OK, removing object was successful" );
+
+		editor.undo();
+		ok( editor.scene.children[ 0 ].name == object.name , "OK, removed object was added again (undo)" );
+
+		editor.redo();
+		ok( editor.scene.children.length == 0, "OK, object was removed again (redo)" );
+
+
+	});
+
+
+});

+ 0 - 2
test/unit/editor/TestCmdMultiCmds.js

@@ -62,6 +62,4 @@ test( "Test CmdMultiCmds (Undo and Redo)", function() {
 	ok( box.rotation.x == 0.4, "OK, x rotation has been modified accordingly after two multi executes (expected: 0.4, actual: " + box.rotation.x + ") " );
 	ok( box.scale.z == 1.6, "OK, z scale has been modified accordingly after two multi executes (expected: 1.6, actual: " + box.scale.z + ")" );
 
-	console.log( box );
-
 });

+ 0 - 27
test/unit/editor/TestCmdRemoveObject.js

@@ -1,27 +0,0 @@
-module( "CmdRemoveObject" );
-
-test( "Test CmdRemoveObject (Undo and Redo)", function() {
-
-	var editor = new Editor();
-
-	var theName = "Come back!" ;
-
-	var mesh = aBox( theName );
-
-	editor.execute( new CmdAddObject( mesh ) );
-	editor.select( mesh );
-
-	// var object = editor.selected;
-	var parent = mesh.parent;
-
-	editor.execute( new CmdRemoveObject( mesh ) );
-	editor.select( parent );
-	ok( editor.scene.children.length == 0, "OK, object removal was successful" );
-
-	editor.undo();
-	ok( editor.scene.children[0].name == theName, "OK, removal was undone successfully, object exists again" );
-
-	editor.redo();
-	ok( editor.scene.children.length == 0, "OK, object was removed again (redo removal)" );
-
-});

+ 59 - 0
test/unit/editor/TestCmdSetMaterial.js

@@ -0,0 +1,59 @@
+module("CmdSetMaterial");
+
+test( "Test for CmdSetMaterial (Undo and Redo)", function() {
+
+	// setup
+	var editor = new Editor();
+	var box = aBox( 'Material girl in a material world' );
+	var cmd = new CmdAddObject( box );
+	cmd.updatable = false;
+	editor.execute( cmd );
+
+	materialClasses = [
+		'LineBasicMaterial',
+		'LineDashedMaterial',
+		'MeshBasicMaterial',
+		'MeshDepthMaterial',
+		'MeshLambertMaterial',
+		'MeshNormalMaterial',
+		'MeshPhongMaterial',
+		'ShaderMaterial',
+		'SpriteMaterial'
+	];
+
+	materialClasses.map( function( materialClass ) {
+
+		material = new THREE[ materialClass ]();
+		editor.execute( new CmdSetMaterial( box, material ) );
+
+	});
+
+	var i = materialClasses.length - 1;
+
+	// initial test
+	ok( box.material.type == materialClasses[ i ],
+		"OK, initial material type was set correctly (expected: '" + materialClasses[ i ] + "', actual: '" + box.material.type + "')" );
+
+
+
+	// test undos
+	while( i > 0 ) {
+
+		editor.undo();
+		--i;
+		ok( box.material.type == materialClasses[ i ],
+			"OK, material type was set correctly after undo (expected: '" + materialClasses[ i ] + "', actual: '" + box.material.type + "')" );
+
+	}
+
+	// test redos
+	while( i < materialClasses.length - 1 ) {
+
+		editor.redo();
+		++i;
+		ok( box.material.type == materialClasses[ i ],
+			"OK, material type was set correctly after redo (expected: '" + materialClasses[ i ] + "', actual: '" + box.material.type + "')" );
+
+	}
+
+});

+ 61 - 0
test/unit/editor/TestCmdSetMaterialMap.js

@@ -0,0 +1,61 @@
+module("CmdSetMaterialMap");
+
+test( "Test for CmdSetMaterialMap (Undo and Redo)", function() {
+
+	// setup
+	var editor = new Editor();
+	var box = aBox( 'Material mapped box' );
+	var cmd = new CmdAddObject( box );
+	cmd.updatable = false;
+	editor.execute( cmd );
+
+	var mapNames = [ 'map', 'alphaMap', 'bumpMap', 'normalMap', 'displacementMap', 'specularMap', 'envMap', 'lightMap', 'aoMap' ];
+
+	// define files
+	var dirt  = { name: 'dirt.png' , data: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMjYxMEI4MzVENDMxMUU1OTdEQUY4QkNGNUVENjg4MyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMjYxMEI4NDVENDMxMUU1OTdEQUY4QkNGNUVENjg4MyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMyNjEwQjgxNUQ0MzExRTU5N0RBRjhCQ0Y1RUQ2ODgzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMyNjEwQjgyNUQ0MzExRTU5N0RBRjhCQ0Y1RUQ2ODgzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+txizaQAAABVQTFRFh4eHbGxsdFhEWT0puYVclmxKeVU6ppwr+AAAAHtJREFUeNosjgEWBCEIQplFuP+RB5h9lZn2EZxkLzC3D1YSgSlmk7i0ctzDZNBz/VSoX1KwjlFI8WmA2R7JqUa0LJJcd1rLNWRRaMyi+3Y16qMKHhdE48XLsDyHKJ0nSMazY1fxHyriXxV584tmEedcfGNrA/5cmK8AAwCT9ATehDDyzwAAAABJRU5ErkJggg==' };
+	var stone = { name: 'stone.png', data: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMjYxMEI4NzVENDMxMUU1OTdEQUY4QkNGNUVENjg4MyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMjYxMEI4ODVENDMxMUU1OTdEQUY4QkNGNUVENjg4MyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMyNjEwQjg1NUQ0MzExRTU5N0RBRjhCQ0Y1RUQ2ODgzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMyNjEwQjg2NUQ0MzExRTU5N0RBRjhCQ0Y1RUQ2ODgzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WCxVbAAAAA9QTFRFgICAaGhoj4+Pf39/dHR0lCmHpAAAAG9JREFUeNo8TkkSBDEIEuH/bx7A9HigYlhkKA93sfcaetn10whSQ0jILpqjFQYiqGepXuexaxRpqAQInF2rzJKNx/CZm6yGuoKOzszjL0LbYjlgxzZokJA6CvgsenUaGm3PRPI/W1MUrXC9+v0TYACSUwL7JYc6IAAAAABJRU5ErkJggg==' };
+	var files = [ dirt, stone ];
+
+	// define images for given files
+	var images = files.map( function( file ) {
+		var i = new Image();
+		i.src = file.data;
+		return { name: file.name, image: i };
+	});
+
+
+	// test all maps
+	mapNames.map( function( mapName ) {
+
+
+		// define textures for given images
+		var textures = images.map( function( img ) {
+			var texture = new THREE.Texture( img.image, mapName );
+			texture.sourceFile = img.name;
+			return texture;
+		});
+
+		// apply the textures
+		textures.map( function( texture ) {
+
+			var cmd = new CmdSetMaterialMap( box, mapName, texture );
+			cmd.updatable = false;
+			editor.execute( cmd );
+
+		});
+
+
+		ok( box.material[ mapName ].image.src == images[ images.length - 1 ].image.src,
+			"OK, " + mapName + " set correctly " );
+
+		editor.undo();
+		ok( box.material[ mapName ].image.src == images[ images.length - 2 ].image.src,
+			"OK, " + mapName + " set correctly after undo " );
+
+		editor.redo();
+		ok( box.material[ mapName ].image.src == images[ images.length - 1 ].image.src,
+			"OK, " + mapName + " set correctly after redo" );
+
+	});
+
+});

+ 5 - 3
test/unit/unittests_editor.html

@@ -16,7 +16,6 @@
 <script src="../../editor/js/libs/codemirror/mode/javascript.js"></script>
 <script src="../../editor/js/libs/esprima.js"></script>
 
-<script src="../../editor/js/libs/jszip.min.js"></script>
 <script src="../../editor/js/libs/sortable.min.js"></script>
 <script src="../../editor/js/libs/signals.min.js"></script>
 <script src="../../editor/js/libs/ui.js"></script>
@@ -80,7 +79,9 @@
 <script src="../../editor/js/CmdSetColor.js"></script>
 <script src="../../editor/js/CmdSetGeometry.js"></script>
 <script src="../../editor/js/CmdSetGeometryValue.js"></script>
+<script src="../../editor/js/CmdSetMaterial.js"></script>
 <script src="../../editor/js/CmdSetMaterialColor.js"></script>
+<script src="../../editor/js/CmdSetMaterialMap.js"></script>
 <script src="../../editor/js/CmdSetMaterialValue.js"></script>
 <script src="../../editor/js/CmdSetPosition.js"></script>
 <script src="../../editor/js/CmdSetRotation.js"></script>
@@ -95,16 +96,17 @@
 <script src="editor/CommonUtilities.js"></script>
 
 <!-- Undo-Redo tests -->
-<script src="editor/TestCmdAddObject.js"></script>
+<script src="editor/TestCmdAddObjectAndCmdRemoveObject.js"></script>
 <script src="editor/TestCmdAddScript.js"></script>
 <script src="editor/TestCmdMoveObject.js"></script>
 <script src="editor/TestCmdMultiCmds.js"></script>
-<script src="editor/TestCmdRemoveObject.js"></script>
 <script src="editor/TestCmdRemoveScript.js"></script>
 <script src="editor/TestCmdSetColor.js"></script>
 <script src="editor/TestCmdSetGeometry.js"></script>
 <script src="editor/TestCmdSetGeometryValue.js"></script>
+<script src="editor/TestCmdSetMaterial.js"></script>
 <script src="editor/TestCmdSetMaterialColor.js"></script>
+<script src="editor/TestCmdSetMaterialMap.js"></script>
 <script src="editor/TestCmdSetMaterialValue.js"></script>
 <script src="editor/TestCmdSetPosition.js"></script>
 <script src="editor/TestCmdSetRotation.js"></script>