diff options
Diffstat (limited to 'jstests/core/query/sort/sort4.js')
-rw-r--r-- | jstests/core/query/sort/sort4.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/jstests/core/query/sort/sort4.js b/jstests/core/query/sort/sort4.js new file mode 100644 index 00000000000..e74df1f4bd6 --- /dev/null +++ b/jstests/core/query/sort/sort4.js @@ -0,0 +1,45 @@ +(function() { +"use strict"; + +const coll = db.sort4; +coll.drop(); + +function nice(sort, correct, extra) { + const c = coll.find().sort(sort); + let s = ""; + c.forEach(function(z) { + if (s.length) { + s += ","; + } + s += z.name; + if (z.prename) { + s += z.prename; + } + }); + if (correct) { + assert.eq(correct, s, tojson(sort) + "(" + extra + ")"); + } + return s; +} + +assert.commandWorked(coll.insert({name: 'A', prename: 'B'})); +assert.commandWorked(coll.insert({name: 'A', prename: 'C'})); +assert.commandWorked(coll.insert({name: 'B', prename: 'B'})); +assert.commandWorked(coll.insert({name: 'B', prename: 'D'})); + +nice({name: 1, prename: 1}, "AB,AC,BB,BD", "s3"); +nice({prename: 1, name: 1}, "AB,BB,AC,BD", "s3"); + +assert.commandWorked(coll.insert({name: 'A'})); +nice({name: 1, prename: 1}, "A,AB,AC,BB,BD", "e1"); + +assert.commandWorked(coll.insert({name: 'C'})); +nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2"); // SERVER-282 + +assert.commandWorked(coll.createIndex({name: 1, prename: 1})); +nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2ia"); // SERVER-282 + +assert.commandWorked(coll.dropIndexes()); +assert.commandWorked(coll.createIndex({name: 1})); +nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2ib"); // SERVER-282 +}()); |