| 
					
				 | 
			
			
				@@ -151,7 +151,7 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			"should throw an exception when passed an object with a non valid number value": function createTest(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				assert.throws(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					var sds = SortDocumentSource.createFromJson({a:0}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					var sds = SortDocumentSource.createFromJson({a:14}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -164,7 +164,7 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				cwc._cursor = new Cursor( [{_id:0, a: 1}] ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var cds = new CursorDocumentSource(cwc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var sds = new SortDocumentSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sds.addKey("_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.addKey("_id", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				sds.setSource(cds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				assert.deepEqual(sds.getCurrent(), {_id:0, a:1});  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -175,7 +175,7 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				cwc._cursor = new Cursor( l ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var cds = new CursorDocumentSource(cwc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var sds = new SortDocumentSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sds.addKey("_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.addKey("_id", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				sds.setSource(cds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var c = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				while (!sds.eof()) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -207,8 +207,8 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				cwc._cursor = new Cursor( l ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var cds = new CursorDocumentSource(cwc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var sds = new SortDocumentSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sds.addKey("a"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sds.addKey("b"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.addKey("a", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.addKey("b", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				sds.setSource(cds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var c = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				while (!sds.eof()) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -258,7 +258,7 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				cwc._cursor = new Cursor( l ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var cds = new CursorDocumentSource(cwc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var sds = new SortDocumentSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sds.addKey("a"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.addKey("a", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				assert.throws(sds.setSource(cds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -268,7 +268,7 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				cwc._cursor = new Cursor( l ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var cds = new CursorDocumentSource(cwc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var sds = new SortDocumentSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sds.addKey("a"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.addKey("a", true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				sds.setSource(cds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				var c = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				while (!sds.eof()) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -278,8 +278,69 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				assert.deepEqual(c, [{_id:1}, {_id:0, a:1}]);  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"should sort docs with null fields": function nullFields() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var cwc = new CursorDocumentSource.CursorWithContext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var l = [{_id:0, a: 1}, {_id:1, a: null}]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				cwc._cursor = new Cursor( l ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var cds = new CursorDocumentSource(cwc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var sds = new SortDocumentSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.addKey("a", true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.setSource(cds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var c = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				while (!sds.eof()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					c.push(sds.getCurrent()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					sds.advance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				assert.deepEqual(c, [{_id:1, a:null}, {_id:0, a:1}]);  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"should not support a missing object nested in an array": function missingObjectWithinArray() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var cwc = new CursorDocumentSource.CursorWithContext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var l = [{_id:0, a: [1]}, {_id:1, a:[0]}]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				cwc._cursor = new Cursor( l ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var cds = new CursorDocumentSource(cwc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var sds = new SortDocumentSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				assert.throws(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					sds.addKey("a.b", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					sds.setSource(cds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					var c = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					while (!sds.eof()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						c.push(sds.getCurrent()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						sds.advance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"should compare nested values from within an array": function extractArrayValues() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var cwc = new CursorDocumentSource.CursorWithContext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var l = [{_id:0,a:[{b:1},{b:2}]}, {_id:1,a:[{b:1},{b:1}]} ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				cwc._cursor = new Cursor( l ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var cds = new CursorDocumentSource(cwc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var sds = new SortDocumentSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.addKey("a.b", true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.setSource(cds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var c = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				while (!sds.eof()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					c.push(sds.getCurrent()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					sds.advance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				assert.deepEqual(c, [{_id:1,a:[{b:1},{b:1}]},{_id:0,a:[{b:1},{b:2}]}]);  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"#dependencies": { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"should have Dependant field paths": function dependencies() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var sds = new SortDocumentSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.addKey("a", true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sds.addKey("b.c", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var deps = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				assert.equal("SEE_NEXT", sds.getDependencies(deps)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				assert.equal(2, deps.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				assert.equal(1, deps.filter(function(val) { return "a" == val; }).length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				assert.equal(1, deps.filter(function(val) { return "a" == val; }).length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |