Garrett Johnson пре 5 година
родитељ
комит
14cce3958d
1 измењених фајлова са 54 додато и 14 уклоњено
  1. 54 14
      test/unit/src/renderers/webgl/WebGLRenderLists.tests.js

+ 54 - 14
test/unit/src/renderers/webgl/WebGLRenderLists.tests.js

@@ -75,22 +75,22 @@ export default QUnit.module( 'Renderers', () => {
 
 			} );
 
-			QUnit.todo( 'push', ( assert ) => {
+			QUnit.test( 'push', ( assert ) => {
 
 				var list = new WebGLRenderList();
-				var objA = { id: 'A' };
+				var objA = { id: 'A', renderOrder: 0 };
 				var matA = { transparent: true, program: { id: 1 } };
 				var geoA = {};
 
-				var objB = { id: 'B' };
+				var objB = { id: 'B', renderOrder: 0 };
 				var matB = { transparent: true, program: { id: 2 } };
 				var geoB = {};
 
-				var objC = { id: 'C' };
+				var objC = { id: 'C', renderOrder: 0 };
 				var matC = { transparent: false, program: { id: 3 } };
 				var geoC = {};
 
-				var objD = { id: 'D' };
+				var objD = { id: 'D', renderOrder: 0 };
 				var matD = { transparent: false, program: { id: 4 } };
 				var geoD = {};
 
@@ -106,6 +106,7 @@ export default QUnit.module( 'Renderers', () => {
 						material: matA,
 						program: matA.program,
 						groupOrder: 0,
+						renderOrder: 0,
 						z: 0.5,
 						group: {}
 					},
@@ -124,6 +125,7 @@ export default QUnit.module( 'Renderers', () => {
 						material: matB,
 						program: matB.program,
 						groupOrder: 1,
+						renderOrder: 0,
 						z: 1.5,
 						group: {}
 					},
@@ -133,7 +135,7 @@ export default QUnit.module( 'Renderers', () => {
 				list.push( objC, geoC, matC, 2, 2.5, {} );
 				assert.ok( list.transparent.length === 2, 'Transparent list is length 2 after adding first opaque item.' );
 				assert.ok( list.opaque.length === 1, 'Opaque list list is length 1 after adding first opaque item.' );
-				assert.opaque(
+				assert.deepEqual(
 					list.opaque[ 0 ],
 					{
 						id: 'C',
@@ -142,6 +144,7 @@ export default QUnit.module( 'Renderers', () => {
 						material: matC,
 						program: matC.program,
 						groupOrder: 2,
+						renderOrder: 0,
 						z: 2.5,
 						group: {}
 					},
@@ -151,7 +154,7 @@ export default QUnit.module( 'Renderers', () => {
 				list.push( objD, geoD, matD, 3, 3.5, {} );
 				assert.ok( list.transparent.length === 2, 'Transparent list is length 2 after adding second opaque item.' );
 				assert.ok( list.opaque.length === 2, 'Opaque list list is length 2 after adding second opaque item.' );
-				assert.opaque(
+				assert.deepEqual(
 					list.opaque[ 1 ],
 					{
 						id: 'D',
@@ -160,29 +163,31 @@ export default QUnit.module( 'Renderers', () => {
 						material: matD,
 						program: matD.program,
 						groupOrder: 3,
+						renderOrder: 0,
 						z: 3.5,
 						group: {}
 					},
+					'The second opaque render list item is structured correctly.'
 				);
 
 			} );
 
-			QUnit.todo( 'unshift', ( assert ) => {
+			QUnit.test( 'unshift', ( assert ) => {
 
 				var list = new WebGLRenderList();
-				var objA = { id: 'A' };
+				var objA = { id: 'A', renderOrder: 0 };
 				var matA = { transparent: true, program: { id: 1 } };
 				var geoA = {};
 
-				var objB = { id: 'B' };
+				var objB = { id: 'B', renderOrder: 0 };
 				var matB = { transparent: true, program: { id: 2 } };
 				var geoB = {};
 
-				var objC = { id: 'C' };
+				var objC = { id: 'C', renderOrder: 0 };
 				var matC = { transparent: false, program: { id: 3 } };
 				var geoC = {};
 
-				var objD = { id: 'D' };
+				var objD = { id: 'D', renderOrder: 0 };
 				var matD = { transparent: false, program: { id: 4 } };
 				var geoD = {};
 
@@ -198,6 +203,7 @@ export default QUnit.module( 'Renderers', () => {
 						material: matA,
 						program: matA.program,
 						groupOrder: 0,
+						renderOrder: 0,
 						z: 0.5,
 						group: {}
 					},
@@ -216,6 +222,7 @@ export default QUnit.module( 'Renderers', () => {
 						material: matB,
 						program: matB.program,
 						groupOrder: 1,
+						renderOrder: 0,
 						z: 1.5,
 						group: {}
 					},
@@ -225,7 +232,7 @@ export default QUnit.module( 'Renderers', () => {
 				list.unshift( objC, geoC, matC, 2, 2.5, {} );
 				assert.ok( list.transparent.length === 2, 'Transparent list is length 2 after adding first opaque item.' );
 				assert.ok( list.opaque.length === 1, 'Opaque list list is length 1 after adding first opaque item.' );
-				assert.opaque(
+				assert.deepEqual(
 					list.opaque[ 0 ],
 					{
 						id: 'C',
@@ -234,6 +241,7 @@ export default QUnit.module( 'Renderers', () => {
 						material: matC,
 						program: matC.program,
 						groupOrder: 2,
+						renderOrder: 0,
 						z: 2.5,
 						group: {}
 					},
@@ -243,7 +251,7 @@ export default QUnit.module( 'Renderers', () => {
 				list.unshift( objD, geoD, matD, 3, 3.5, {} );
 				assert.ok( list.transparent.length === 2, 'Transparent list is length 2 after adding second opaque item.' );
 				assert.ok( list.opaque.length === 2, 'Opaque list list is length 2 after adding second opaque item.' );
-				assert.opaque(
+				assert.deepEqual(
 					list.opaque[ 0 ],
 					{
 						id: 'D',
@@ -252,15 +260,47 @@ export default QUnit.module( 'Renderers', () => {
 						material: matD,
 						program: matD.program,
 						groupOrder: 3,
+						renderOrder: 0,
 						z: 3.5,
 						group: {}
 					},
+					'The second opaque render list item is structured correctly.'
+				);
+
+			} );
+
+			QUnit.test( 'sort', ( assert ) => {
+
+				var list = new WebGLRenderList();
+				var items = [ { id: 4 }, { id: 5 }, { id: 2 }, { id: 3 } ];
+
+				items.forEach( item => {
+
+					list.push( item, {}, { transparent: true }, 0, 0, {} );
+					list.push( item, {}, { transparent: false }, 0, 0, {} );
+
+				} );
+
+				list.sort( ( a, b ) => a.id - b.id, ( a, b ) => b.id - a.id );
+
+				assert.deepEqual(
+					list.opaque.map( item => item.id ),
+					[ 2, 3, 4, 5 ],
+					'The opaque sort is applied to the opaque items list.'
+				);
+
+				assert.deepEqual(
+					list.transparent.map( item => item.id ),
+					[ 5, 4, 3, 2 ],
+					'The transparent sort is applied to the transparent items list.'
 				);
 
 			} );
 
 			QUnit.todo( 'finish', ( assert ) => {
 
+				assert.ok( false, "everything's gonna be alright" );
+
 			} );
 
 		} );