summaryrefslogtreecommitdiff
path: root/jstests/core/regex.js
blob: 983ead6d73330f35e277655c4b401d652de5983d (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
(function() {
    'use strict';

    var t = db.jstests_regex;

    t.drop();
    t.save({a: "bcd"});
    assert.eq(1, t.count({a: /b/}), "A");
    assert.eq(1, t.count({a: /bc/}), "B");
    assert.eq(1, t.count({a: /bcd/}), "C");
    assert.eq(0, t.count({a: /bcde/}), "D");

    t.drop();
    t.save({a: {b: "cde"}});
    assert.eq(1, t.count({'a.b': /de/}), "E");

    t.drop();
    t.save({a: {b: ["cde"]}});
    assert.eq(1, t.count({'a.b': /de/}), "F");

    t.drop();
    t.save({a: [{b: "cde"}]});
    assert.eq(1, t.count({'a.b': /de/}), "G");

    t.drop();
    t.save({a: [{b: ["cde"]}]});
    assert.eq(1, t.count({'a.b': /de/}), "H");

    // Disallow embedded null bytes when using $regex syntax.
    t.drop();
    assert.throws(function() {
        t.find({a: {$regex: "a\0b", $options: "i"}}).itcount();
    });
    assert.throws(function() {
        t.find({a: {$regex: "ab", $options: "i\0"}}).itcount();
    });
})();