65 lines
2.2 KiB
JavaScript
65 lines
2.2 KiB
JavaScript
// @tags: [requires_fastcount]
|
|
|
|
let t = db.regex2;
|
|
t.drop();
|
|
|
|
assert.commandWorked(t.save({a: "test"}));
|
|
assert.commandWorked(t.save({a: "Test"}));
|
|
|
|
assert.eq(2, t.find().count(), "A");
|
|
assert.eq(1, t.find({a: "Test"}).count(), "B");
|
|
assert.eq(1, t.find({a: "test"}).count(), "C");
|
|
assert.eq(1, t.find({a: /Test/}).count(), "D");
|
|
assert.eq(1, t.find({a: /test/}).count(), "E");
|
|
assert.eq(2, t.find({a: /test/i}).count(), "F");
|
|
|
|
t.drop();
|
|
|
|
let a = "\u0442\u0435\u0441\u0442";
|
|
let b = "\u0422\u0435\u0441\u0442";
|
|
|
|
assert(new RegExp(a).test(a), "B 1");
|
|
assert(!new RegExp(a).test(b), "B 2");
|
|
assert(new RegExp(a, "i").test(b), "B 3 ");
|
|
|
|
assert.commandWorked(t.save({a: a}));
|
|
assert.commandWorked(t.save({a: b}));
|
|
|
|
assert.eq(2, t.find().count(), "C A");
|
|
assert.eq(1, t.find({a: a}).count(), "C B");
|
|
assert.eq(1, t.find({a: b}).count(), "C C");
|
|
assert.eq(1, t.find({a: new RegExp(a)}).count(), "C D");
|
|
assert.eq(1, t.find({a: new RegExp(b)}).count(), "C E");
|
|
assert.eq(2, t.find({a: new RegExp(a, "i")}).count(), "C F is spidermonkey built with UTF-8 support?");
|
|
|
|
// same tests as above but using {$regex: "a|b", $options: "imx"} syntax.
|
|
t.drop();
|
|
|
|
assert.commandWorked(t.save({a: "test"}));
|
|
assert.commandWorked(t.save({a: "Test"}));
|
|
|
|
assert.eq(2, t.find().count(), "obj A");
|
|
assert.eq(1, t.find({a: {$regex: "Test"}}).count(), "obj D");
|
|
assert.eq(1, t.find({a: {$regex: "test"}}).count(), "obj E");
|
|
assert.eq(2, t.find({a: {$regex: "test", $options: "i"}}).count(), "obj F");
|
|
assert.eq(2, t.find({a: {$options: "i", $regex: "test"}}).count(), "obj F rev"); // both orders should work
|
|
|
|
t.drop();
|
|
|
|
a = "\u0442\u0435\u0441\u0442";
|
|
b = "\u0422\u0435\u0441\u0442";
|
|
|
|
assert.commandWorked(t.save({a: a}));
|
|
assert.commandWorked(t.save({a: b}));
|
|
|
|
assert.eq(1, t.find({a: {$regex: a}}).count(), "obj C D");
|
|
assert.eq(1, t.find({a: {$regex: b}}).count(), "obj C E");
|
|
assert.eq(2, t.find({a: {$regex: a, $options: "i"}}).count(), "obj C F is spidermonkey built with UTF-8 support?");
|
|
|
|
// Test s (DOT_ALL) option. Not supported with /regex/opts syntax
|
|
t.drop();
|
|
assert.commandWorked(t.save({a: "1 2"}));
|
|
assert.commandWorked(t.save({a: "1\n2"}));
|
|
assert.eq(1, t.find({a: {$regex: "1.*2"}}).count());
|
|
assert.eq(2, t.find({a: {$regex: "1.*2", $options: "s"}}).count());
|