// test sorting, mainly a test ver simple with no index t = db.sort2; t.drop(); t.save({x:1, y:{a:5,b:4}}); t.save({x:1, y:{a:7,b:3}}); t.save({x:1, y:{a:2,b:3}}); t.save({x:1, y:{a:9,b:3}}); for( var pass = 0; pass < 2; pass++ ) { var res = t.find().sort({'y.a':1}).toArray(); assert( res[0].y.a == 2 ); assert( res[1].y.a == 5 ); assert( res.length == 4 ); t.ensureIndex({"y.a":1}); } assert(t.validate().valid); t.drop(); t.insert({ x: 1 }) t.insert({ x: 5000000000 }) t.insert({ x: NaN }); t.insert({ x: Infinity }); t.insert({ x: -Infinity }); var good = [NaN, -Infinity, 1, 5000000000, Infinity]; for (var pass = 0; pass < 2; pass++) { var res = t.find({}, { _id: 0 }).sort({ x: 1 }).toArray(); for (var i = 0; i < good.length; i++) { assert(good[i].toString() == res[i].x.toString()); } t.ensureIndex({ x : 1 }); } // signed dates check var opts = {}; if (Math.random() < 0.3) { opts.background = true; printjson(opts); } t.drop(); t.insert({ x: new Date(50000) }); t.insert({ x: new Date(-50) }); var d = new Date(-50); for (var pass = 0; pass < 2; pass++) { assert(t.find().sort({x:1})[0].x.valueOf() == d.valueOf()); t.ensureIndex({ x: 1 }, opts); t.insert({ x: new Date() }); }