t = db.sort4;
t.drop();

function nice(sort, correct, extra) {
    var c = t.find().sort(sort);
    var s = "";
    c.forEach(function(z) {
        if (s.length)
            s += ",";
        s += z.name;
        if (z.prename)
            s += z.prename;
    });
    print(tojson(sort) + "\t" + s);
    if (correct)
        assert.eq(correct, s, tojson(sort) + "(" + extra + ")");
    return s;
}

t.save({name: 'A', prename: 'B'});
t.save({name: 'A', prename: 'C'});
t.save({name: 'B', prename: 'B'});
t.save({name: 'B', prename: 'D'});

nice({name: 1}, "AB,AC,BB,BD", "s1");
nice({prename: 1}, "AB,BB,AC,BD", "s2");
nice({name: 1, prename: 1}, "AB,AC,BB,BD", "s3");

t.save({name: 'A'});
nice({name: 1, prename: 1}, "A,AB,AC,BB,BD", "e1");

t.save({name: 'C'});
nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2");  // SERVER-282

t.ensureIndex({name: 1, prename: 1});
nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2ia");  // SERVER-282

t.dropIndexes();
t.ensureIndex({name: 1});
nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2ib");  // SERVER-282
