summaryrefslogtreecommitdiff
path: root/jstests/core/sort4.js
blob: 0afe2cebe806f826211b7a8e4515bb4c454b3a78 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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.ensureIndex({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.ensureIndex({name: 1}));
nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2ib");  // SERVER-282
}());