Skip to content

Commit dd7dcab

Browse files
committed
added missing methods for dealing with array values operating against single values.
1 parent 3790c2a commit dd7dcab

File tree

2 files changed

+401
-18
lines changed

2 files changed

+401
-18
lines changed

src/MongoDB.Driver.Tests/FilterDefinitionBuilderTests.cs

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ public void Eq()
149149
var subject = CreateSubject<BsonDocument>();
150150

151151
Assert(subject.Eq("x", 10), "{x: 10}");
152+
Assert(subject.AnyEq("x", 10), "{x: 10}");
152153
}
153154

154155
[Test]
@@ -158,6 +159,11 @@ public void Eq_Typed()
158159
Assert(subject.Eq(x => x.FirstName, "Jack"), "{fn: 'Jack'}");
159160
Assert(subject.Eq("FirstName", "Jim"), "{fn: 'Jim'}");
160161
Assert(subject.Eq("firstName", "Jim"), "{firstName: 'Jim'}");
162+
Assert(subject.Eq(x => x.FavoriteColors, new[] { "yellow", "green" }), "{colors: ['yellow', 'green']}");
163+
Assert(subject.Eq("FavoriteColors", new[] { "yellow", "green" }), "{colors: ['yellow', 'green']}");
164+
165+
Assert(subject.AnyEq(x => x.FavoriteColors, "yellow"), "{colors: 'yellow'}");
166+
Assert(subject.AnyEq("FavoriteColors", "yellow"), "{colors: 'yellow'}");
161167
}
162168

163169
[Test]
@@ -326,6 +332,7 @@ public void GreaterThan()
326332
var subject = CreateSubject<BsonDocument>();
327333

328334
Assert(subject.Gt("x", 10), "{x: {$gt: 10}}");
335+
Assert(subject.AnyGt("x", 10), "{x: {$gt: 10}}");
329336
}
330337

331338
[Test]
@@ -334,6 +341,9 @@ public void GreaterThan_Typed()
334341
var subject = CreateSubject<Person>();
335342
Assert(subject.Gt(x => x.Age, 10), "{age: {$gt: 10}}");
336343
Assert(subject.Gt("Age", 10), "{age: {$gt: 10}}");
344+
345+
Assert(subject.AnyGt(x => x.FavoriteColors, "green"), "{colors: {$gt: 'green'}}");
346+
Assert(subject.AnyGt("FavoriteColors", "green"), "{colors: {$gt: 'green'}}");
337347
}
338348

339349
[Test]
@@ -342,6 +352,7 @@ public void GreaterThanOrEqual()
342352
var subject = CreateSubject<BsonDocument>();
343353

344354
Assert(subject.Gte("x", 10), "{x: {$gte: 10}}");
355+
Assert(subject.AnyGte("x", 10), "{x: {$gte: 10}}");
345356
}
346357

347358
[Test]
@@ -350,6 +361,9 @@ public void GreaterThanOrEqual_Typed()
350361
var subject = CreateSubject<Person>();
351362
Assert(subject.Gte(x => x.Age, 10), "{age: {$gte: 10}}");
352363
Assert(subject.Gte("Age", 10), "{age: {$gte: 10}}");
364+
365+
Assert(subject.AnyGte(x => x.FavoriteColors, "green"), "{colors: {$gte: 'green'}}");
366+
Assert(subject.AnyGte("FavoriteColors", "green"), "{colors: {$gte: 'green'}}");
353367
}
354368

355369
[Test]
@@ -358,14 +372,18 @@ public void In()
358372
var subject = CreateSubject<BsonDocument>();
359373

360374
Assert(subject.In("x", new[] { 10, 20 }), "{x: {$in: [10,20]}}");
375+
Assert(subject.AnyIn("x", new[] { 10, 20 }), "{x: {$in: [10,20]}}");
361376
}
362377

363378
[Test]
364379
public void In_Typed()
365380
{
366381
var subject = CreateSubject<Person>();
367-
Assert(subject.In(x => x.FavoriteColors, new[] { "blue", "green" }), "{colors: {$in: ['blue','green']}}");
368-
Assert(subject.In("FavoriteColors", new[] { "blue", "green" }), "{colors: {$in: ['blue','green']}}");
382+
Assert(subject.In(x => x.Age, new[] { 10, 20 }), "{age: {$in: [10, 20]}}");
383+
Assert(subject.In("Age", new[] { 10, 20 }), "{age: {$in: [10, 20]}}");
384+
385+
Assert(subject.AnyIn(x => x.FavoriteColors, new[] { "blue", "green" }), "{colors: {$in: ['blue','green']}}");
386+
Assert(subject.AnyIn("FavoriteColors", new[] { "blue", "green" }), "{colors: {$in: ['blue','green']}}");
369387
}
370388

371389
[Test]
@@ -374,6 +392,7 @@ public void Lt()
374392
var subject = CreateSubject<BsonDocument>();
375393

376394
Assert(subject.Lt("x", 10), "{x: {$lt: 10}}");
395+
Assert(subject.AnyLt("x", 10), "{x: {$lt: 10}}");
377396
}
378397

379398
[Test]
@@ -382,6 +401,9 @@ public void Lt_Typed()
382401
var subject = CreateSubject<Person>();
383402
Assert(subject.Lt(x => x.Age, 10), "{age: {$lt: 10}}");
384403
Assert(subject.Lt("Age", 10), "{age: {$lt: 10}}");
404+
405+
Assert(subject.AnyLt(x => x.FavoriteColors, "green"), "{colors: {$lt: 'green'}}");
406+
Assert(subject.AnyLt("FavoriteColors", "green"), "{colors: {$lt: 'green'}}");
385407
}
386408

387409
[Test]
@@ -390,6 +412,7 @@ public void Lte()
390412
var subject = CreateSubject<BsonDocument>();
391413

392414
Assert(subject.Lte("x", 10), "{x: {$lte: 10}}");
415+
Assert(subject.AnyLte("x", 10), "{x: {$lte: 10}}");
393416
}
394417

395418
[Test]
@@ -398,6 +421,9 @@ public void Lte_Typed()
398421
var subject = CreateSubject<Person>();
399422
Assert(subject.Lte(x => x.Age, 10), "{age: {$lte: 10}}");
400423
Assert(subject.Lte("Age", 10), "{age: {$lte: 10}}");
424+
425+
Assert(subject.AnyLte(x => x.FavoriteColors, "green"), "{colors: {$lte: 'green'}}");
426+
Assert(subject.AnyLte("FavoriteColors", "green"), "{colors: {$lte: 'green'}}");
401427
}
402428

403429
[Test]
@@ -414,15 +440,18 @@ public void Mod_Typed()
414440
var subject = CreateSubject<Person>();
415441
Assert(subject.Mod(x => x.Age, 10, 4), "{age: {$mod: [NumberLong(10), NumberLong(4)]}}");
416442
Assert(subject.Mod("Age", 10, 4), "{age: {$mod: [NumberLong(10), NumberLong(4)]}}");
417-
}
418443

444+
Assert(subject.Mod(x => x.FavoriteColors, 10, 4), "{colors: {$mod: [NumberLong(10), NumberLong(4)]}}");
445+
Assert(subject.Mod("FavoriteColors", 10, 4), "{colors: {$mod: [NumberLong(10), NumberLong(4)]}}");
446+
}
419447

420448
[Test]
421449
public void Ne()
422450
{
423451
var subject = CreateSubject<BsonDocument>();
424452

425453
Assert(subject.Ne("x", 10), "{x: {$ne: 10}}");
454+
Assert(subject.AnyNe("x", 10), "{x: {$ne: 10}}");
426455
}
427456

428457
[Test]
@@ -431,6 +460,9 @@ public void Ne_Typed()
431460
var subject = CreateSubject<Person>();
432461
Assert(subject.Ne(x => x.Age, 10), "{age: {$ne: 10}}");
433462
Assert(subject.Ne("Age", 10), "{age: {$ne: 10}}");
463+
464+
Assert(subject.AnyNe(x => x.FavoriteColors, "green"), "{colors: {$ne: 'green'}}");
465+
Assert(subject.AnyNe("FavoriteColors", "green"), "{colors: {$ne: 'green'}}");
434466
}
435467

436468
[Test]
@@ -527,14 +559,18 @@ public void Nin()
527559
var subject = CreateSubject<BsonDocument>();
528560

529561
Assert(subject.Nin("x", new[] { 10, 20 }), "{x: {$nin: [10,20]}}");
562+
Assert(subject.AnyNin("x", new[] { 10, 20 }), "{x: {$nin: [10,20]}}");
530563
}
531564

532565
[Test]
533566
public void Nin_Typed()
534567
{
535568
var subject = CreateSubject<Person>();
536-
Assert(subject.Nin(x => x.FavoriteColors, new[] { "blue", "green" }), "{colors: {$nin: ['blue','green']}}");
537-
Assert(subject.Nin("FavoriteColors", new[] { "blue", "green" }), "{colors: {$nin: ['blue','green']}}");
569+
Assert(subject.Nin(x => x.Age, new[] { 10, 20 }), "{age: {$nin: [10, 20]}}");
570+
Assert(subject.Nin("Age", new[] { 10, 20 }), "{age: {$nin: [10, 20]}}");
571+
572+
Assert(subject.AnyNin(x => x.FavoriteColors, new[] { "blue", "green" }), "{colors: {$nin: ['blue','green']}}");
573+
Assert(subject.AnyNin("FavoriteColors", new[] { "blue", "green" }), "{colors: {$nin: ['blue','green']}}");
538574
}
539575

540576
[Test]
@@ -599,7 +635,7 @@ public void Not_with_not_equal()
599635
public void Not_with_not_in()
600636
{
601637
var subject = CreateSubject<BsonDocument>();
602-
var filter = subject.Not(subject.Nin("a", new[] { 10, 20 }));
638+
var filter = subject.Not(subject.AnyNin("a", new[] { 10, 20 }));
603639

604640
Assert(filter, "{a: {$in: [10, 20]}}");
605641
}
@@ -676,6 +712,9 @@ public void Regex_Typed()
676712
var subject = CreateSubject<Person>();
677713
Assert(subject.Regex(x => x.FirstName, "/abc/"), "{fn: /abc/}");
678714
Assert(subject.Regex("FirstName", "/abc/"), "{fn: /abc/}");
715+
716+
Assert(subject.Regex(x => x.FavoriteColors, "/abc/"), "{colors: /abc/}");
717+
Assert(subject.Regex("FavoriteColors", "/abc/"), "{colors: /abc/}");
679718
}
680719

681720
[Test]

0 commit comments

Comments
 (0)