PageRenderTime 43ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 1ms

/MongoDB.DriverUnitTestsVB/Linq/SelectQueryTests.vb

https://github.com/alistair/mongo-csharp-driver
Visual Basic | 6675 lines | 5290 code | 1325 blank | 60 comment | 13 complexity | 93c4bfa458b3f004a7003cdda0b87696 MD5 | raw file
Possible License(s): Apache-2.0
  1. ' Copyright 2010-2013 10gen Inc.
  2. '*
  3. '* Licensed under the Apache License, Version 2.0 (the "License");
  4. '* you may not use this file except in compliance with the License.
  5. '* You may obtain a copy of the License at
  6. '*
  7. '* http://www.apache.org/licenses/LICENSE-2.0
  8. '*
  9. '* Unless required by applicable law or agreed to in writing, software
  10. '* distributed under the License is distributed on an "AS IS" BASIS,
  11. '* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. '* See the License for the specific language governing permissions and
  13. '* limitations under the License.
  14. '
  15. Imports System
  16. Imports System.Collections.Generic
  17. Imports System.Linq
  18. Imports System.Text
  19. Imports System.Text.RegularExpressions
  20. Imports NUnit.Framework
  21. Imports MongoDB.Bson
  22. Imports MongoDB.Bson.Serialization.Attributes
  23. Imports MongoDB.Driver
  24. Imports MongoDB.Driver.Builders
  25. Imports MongoDB.Driver.Linq
  26. Imports System.Linq.Expressions
  27. Namespace MongoDB.DriverUnitTests.Linq
  28. <TestFixture()> _
  29. Public Class SelectQueryTests
  30. Public Enum E
  31. None
  32. A
  33. B
  34. C
  35. End Enum
  36. Public Class C
  37. Public Property Id() As ObjectId
  38. <BsonElement("x")> _
  39. Public Property X() As Integer
  40. <BsonElement("lx")> _
  41. Public Property LX() As Long
  42. <BsonElement("y")> _
  43. Public Property Y() As Integer
  44. <BsonElement("d")> _
  45. Public Property D() As D
  46. <BsonElement("da")> _
  47. Public Property DA() As List(Of D)
  48. <BsonElement("s")> _
  49. <BsonIgnoreIfNull()> _
  50. Public Property S() As String
  51. <BsonElement("a")> _
  52. <BsonIgnoreIfNull()> _
  53. Public Property A() As Integer()
  54. <BsonElement("b")> _
  55. Public Property B() As Boolean
  56. <BsonElement("l")> _
  57. <BsonIgnoreIfNull()> _
  58. Public Property L() As List(Of Integer)
  59. <BsonElement("dbref")> _
  60. <BsonIgnoreIfNull()> _
  61. Public Property DBRef() As MongoDBRef
  62. <BsonElement("e")> _
  63. <BsonIgnoreIfDefault()> _
  64. <BsonRepresentation(BsonType.[String])> _
  65. Public Property E() As E
  66. <BsonElement("ea")> _
  67. <BsonIgnoreIfNull()> _
  68. Public Property EA() As E()
  69. <BsonElement("sa")> _
  70. <BsonIgnoreIfNull()> _
  71. Public Property SA() As String()
  72. <BsonElement("ba")> _
  73. <BsonIgnoreIfNull()> _
  74. Public Property BA() As Boolean()
  75. End Class
  76. Public Class D
  77. <BsonElement("z")> _
  78. Public Z As Integer
  79. ' use field instead of property to test fields also
  80. Public Overrides Function Equals(ByVal obj As Object) As Boolean
  81. If obj Is Nothing OrElse Not obj.GetType().Equals(GetType(D)) Then
  82. Return False
  83. End If
  84. Return Z = DirectCast(obj, D).Z
  85. End Function
  86. Public Overrides Function GetHashCode() As Integer
  87. Return Z.GetHashCode()
  88. End Function
  89. Public Overrides Function ToString() As String
  90. Return String.Format("new D {{ Z = {0} }}", Z)
  91. End Function
  92. End Class
  93. ' used to test some query operators that have an IEqualityComparer parameter
  94. Private Class CEqualityComparer
  95. Implements IEqualityComparer(Of C)
  96. Public Function Equals1(ByVal x As C, ByVal y As C) As Boolean Implements IEqualityComparer(Of C).Equals
  97. Return x.Id.Equals(y.Id) AndAlso x.X.Equals(y.X) AndAlso x.Y.Equals(y.Y)
  98. End Function
  99. Public Function GetHashCode1(ByVal obj As C) As Integer Implements IEqualityComparer(Of C).GetHashCode
  100. Return obj.GetHashCode()
  101. End Function
  102. End Class
  103. ' used to test some query operators that have an IEqualityComparer parameter
  104. Private Class Int32EqualityComparer
  105. Implements IEqualityComparer(Of Integer)
  106. Public Function Equals1(ByVal x As Integer, ByVal y As Integer) As Boolean Implements IEqualityComparer(Of Integer).Equals
  107. Return x = y
  108. End Function
  109. Public Function GetHashCode1(ByVal obj As Integer) As Integer Implements IEqualityComparer(Of Integer).GetHashCode
  110. Return obj.GetHashCode()
  111. End Function
  112. End Class
  113. Private _server As MongoServer
  114. Private _database As MongoDatabase
  115. Private _collection As MongoCollection(Of C)
  116. Private _systemProfileCollection As MongoCollection(Of SystemProfileInfo)
  117. Private _id1 As ObjectId = ObjectId.GenerateNewId()
  118. Private _id2 As ObjectId = ObjectId.GenerateNewId()
  119. Private _id3 As ObjectId = ObjectId.GenerateNewId()
  120. Private _id4 As ObjectId = ObjectId.GenerateNewId()
  121. Private _id5 As ObjectId = ObjectId.GenerateNewId()
  122. <TestFixtureSetUp()> _
  123. Public Sub Setup()
  124. _server = Configuration.TestServer
  125. _server.Connect()
  126. _database = Configuration.TestDatabase
  127. _collection = Configuration.GetTestCollection(Of C)()
  128. _systemProfileCollection = _database.GetCollection(Of SystemProfileInfo)("system.profile")
  129. ' documents inserted deliberately out of order to test sorting
  130. _collection.Drop()
  131. _collection.Insert(New C() With
  132. {
  133. .Id = _id2,
  134. .X = 2,
  135. .LX = 2,
  136. .Y = 11,
  137. .D = New D() With {.Z = 22},
  138. .A = {2, 3, 4},
  139. .L = New List(Of Integer)({2, 3, 4})
  140. })
  141. _collection.Insert(New C() With
  142. {
  143. .Id = _id1,
  144. .X = 1,
  145. .LX = 1,
  146. .Y = 11,
  147. .D = New D() With {.Z = 11},
  148. .S = "abc",
  149. .SA = {"Tom", "Dick", "Harry"}
  150. })
  151. _collection.Insert(New C() With
  152. {
  153. .Id = _id3,
  154. .X = 3,
  155. .LX = 3,
  156. .Y = 33,
  157. .D = New D() With {.Z = 33},
  158. .B = True,
  159. .BA = {True},
  160. .E = E.A,
  161. .EA = New E() {E.A, E.B}
  162. })
  163. _collection.Insert(New C() With
  164. {
  165. .Id = _id5,
  166. .X = 5,
  167. .LX = 5,
  168. .Y = 44,
  169. .D = New D() With {.Z = 55},
  170. .DBRef = New MongoDBRef("db", "c", 1)
  171. })
  172. _collection.Insert(New C() With
  173. {
  174. .Id = _id4,
  175. .X = 4,
  176. .LX = 4,
  177. .Y = 44,
  178. .D = New D() With {.Z = 44},
  179. .DA = {New D() With {.Z = 333}}.ToList,
  180. .S = " xyz "
  181. })
  182. End Sub
  183. <Test()> _
  184. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Aggregate query operator is not supported.")> _
  185. Public Sub TestAggregate()
  186. Dim result = (From c In _collection.AsQueryable(Of C)()
  187. Select c).Aggregate(Function(a, b) Nothing)
  188. End Sub
  189. <Test()> _
  190. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Aggregate query operator is not supported.")> _
  191. Public Sub TestAggregateWithAccumulator()
  192. Dim result = (From c In _collection.AsQueryable(Of C)()
  193. Select c).Aggregate(0, Function(a, c) 0)
  194. End Sub
  195. <Test()> _
  196. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Aggregate query operator is not supported.")> _
  197. Public Sub TestAggregateWithAccumulatorAndSelector()
  198. Dim result = (From c In _collection.AsQueryable(Of C)()
  199. Select c).Aggregate(0, Function(a, c) 0, Function(a) a)
  200. End Sub
  201. <Test()> _
  202. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The All query operator is not supported.")> _
  203. Public Sub TestAll()
  204. Dim result = (From c In _collection.AsQueryable(Of C)()
  205. Select c).All(Function(c) True)
  206. End Sub
  207. <Test()> _
  208. Public Sub TestAny()
  209. Dim result = (From c In _collection.AsQueryable(Of C)()
  210. Select c).Any()
  211. Assert.IsTrue(result)
  212. End Sub
  213. <Test()> _
  214. Public Sub TestAnyWhereXEquals1()
  215. Dim result = (From c In _collection.AsQueryable(Of C)()
  216. Where c.X = 1
  217. Select c).Any()
  218. Assert.IsTrue(result)
  219. End Sub
  220. <Test()> _
  221. Public Sub TestAnyWhereXEquals9()
  222. Dim result = (From c In _collection.AsQueryable(Of C)()
  223. Where c.X = 9
  224. Select c).Any()
  225. Assert.IsFalse(result)
  226. End Sub
  227. <Test()> _
  228. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="Any with predicate after a projection is not supported.")> _
  229. Public Sub TestAnyWithPredicateAfterProjection()
  230. Dim result = _collection.AsQueryable(Of C)().[Select](Function(c) c.Y).Any(Function(y) y = 11)
  231. End Sub
  232. <Test()> _
  233. Public Sub TestAnyWithPredicateAfterWhere()
  234. Dim result = _collection.AsQueryable(Of C)().Where(Function(c) c.X = 1).Any(Function(c) c.Y = 11)
  235. Assert.IsTrue(result)
  236. End Sub
  237. <Test()> _
  238. Public Sub TestAnyWithPredicateFalse()
  239. Dim result = _collection.AsQueryable(Of C)().Any(Function(c) c.X = 9)
  240. Assert.IsFalse(result)
  241. End Sub
  242. <Test()> _
  243. Public Sub TestAnyWithPredicateTrue()
  244. Dim result = _collection.AsQueryable(Of C)().Any(Function(c) c.X = 1)
  245. Assert.IsTrue(result)
  246. End Sub
  247. <Test()> _
  248. Public Sub TestAsQueryableWithNothingElse()
  249. Dim query = _collection.AsQueryable(Of C)()
  250. Dim result = query.ToList()
  251. Assert.AreEqual(5, result.Count)
  252. End Sub
  253. <Test()> _
  254. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Average query operator is not supported.")> _
  255. Public Sub TestAverage()
  256. Dim result = (From c In _collection.AsQueryable(Of C)()
  257. Select 1.0).Average()
  258. End Sub
  259. <Test()> _
  260. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Average query operator is not supported.")> _
  261. Public Sub TestAverageNullable()
  262. Dim result = (From c In _collection.AsQueryable(Of C)()
  263. Select New Nullable(Of Decimal)(1.0)).Average()
  264. End Sub
  265. <Test()> _
  266. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Average query operator is not supported.")> _
  267. Public Sub TestAverageWithSelector()
  268. Dim result = (From c In _collection.AsQueryable(Of C)()
  269. Select c).Average(Function(c) 1.0)
  270. End Sub
  271. <Test()> _
  272. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Average query operator is not supported.")> _
  273. Public Sub TestAverageWithSelectorNullable()
  274. Dim result = (From c In _collection.AsQueryable(Of C)()
  275. Select c).Average(Function(c) New Nullable(Of Decimal)(1.0))
  276. End Sub
  277. <Test()> _
  278. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Cast query operator is not supported.")> _
  279. Public Sub TestCast()
  280. Dim query = (From c In _collection.AsQueryable(Of C)()
  281. Select C).Cast(Of C)()
  282. query.ToList()
  283. ' execute query
  284. End Sub
  285. <Test()> _
  286. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Concat query operator is not supported.")> _
  287. Public Sub TestConcat()
  288. Dim source2 = New C(-1) {}
  289. Dim query = (From c In _collection.AsQueryable(Of C)()
  290. Select c).Concat(source2)
  291. query.ToList()
  292. ' execute query
  293. End Sub
  294. <Test()> _
  295. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Contains query operator is not supported.")> _
  296. Public Sub TestContains()
  297. Dim item = New C()
  298. Dim result = (From c In _collection.AsQueryable(Of C)()
  299. Select c).Contains(item)
  300. End Sub
  301. <Test()> _
  302. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Contains query operator is not supported.")> _
  303. Public Sub TestContainsWithEqualityComparer()
  304. Dim item = New C()
  305. Dim result = (From c In _collection.AsQueryable(Of C)()
  306. Select c).Contains(item, New CEqualityComparer())
  307. End Sub
  308. <Test()> _
  309. Public Sub TestCountEquals2()
  310. Dim result = (From c In _collection.AsQueryable(Of C)()
  311. Where c.Y = 11
  312. Select c).Count()
  313. Assert.AreEqual(2, result)
  314. End Sub
  315. <Test()> _
  316. Public Sub TestCountEquals5()
  317. Dim result = (From c In _collection.AsQueryable(Of C)()
  318. Select c).Count()
  319. Assert.AreEqual(5, result)
  320. End Sub
  321. <Test()> _
  322. Public Sub TestCountWithPredicate()
  323. Dim result = _collection.AsQueryable(Of C)().Count(Function(c) c.Y = 11)
  324. Assert.AreEqual(2, result)
  325. End Sub
  326. <Test()> _
  327. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="Count with predicate after a projection is not supported.")> _
  328. Public Sub TestCountWithPredicateAfterProjection()
  329. Dim result = _collection.AsQueryable(Of C)().[Select](Function(c) c.Y).Count(Function(y) y = 11)
  330. End Sub
  331. <Test()> _
  332. Public Sub TestCountWithPredicateAfterWhere()
  333. Dim result = _collection.AsQueryable(Of C)().Where(Function(c) c.X = 1).Count(Function(c) c.Y = 11)
  334. Assert.AreEqual(1, result)
  335. End Sub
  336. <Test()> _
  337. Public Sub TestCountWithSkipAndTake()
  338. Dim result = (From c In _collection.AsQueryable(Of C)()
  339. Select c).Skip(2).Take(2).Count()
  340. Assert.AreEqual(2, result)
  341. End Sub
  342. <Test()> _
  343. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The DefaultIfEmpty query operator is not supported.")> _
  344. Public Sub TestDefaultIfEmpty()
  345. Dim query = (From c In _collection.AsQueryable(Of C)()
  346. Select c).DefaultIfEmpty()
  347. query.ToList()
  348. ' execute query
  349. End Sub
  350. <Test()> _
  351. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The DefaultIfEmpty query operator is not supported.")> _
  352. Public Sub TestDefaultIfEmptyWithDefaultValue()
  353. Dim query = (From c In _collection.AsQueryable(Of C)()
  354. Select c).DefaultIfEmpty(Nothing)
  355. query.ToList()
  356. ' execute query
  357. End Sub
  358. <Test()> _
  359. Public Sub TestDistinctASub0()
  360. Dim query = (From c In _collection.AsQueryable(Of C)()
  361. Select c.A(0)).Distinct()
  362. Dim results = query.ToList()
  363. Assert.AreEqual(1, results.Count)
  364. Assert.IsTrue(results.Contains(2))
  365. End Sub
  366. <Test()> _
  367. Public Sub TestDistinctB()
  368. Dim query = (From c In _collection.AsQueryable(Of C)()
  369. Select c.B).Distinct()
  370. Dim results = query.ToList()
  371. Assert.AreEqual(2, results.Count)
  372. Assert.IsTrue(results.Contains(False))
  373. Assert.IsTrue(results.Contains(True))
  374. End Sub
  375. <Test()> _
  376. Public Sub TestDistinctBASub0()
  377. Dim query = (From c In _collection.AsQueryable(Of C)()
  378. Select c.BA(0)).Distinct()
  379. Dim results = query.ToList()
  380. Assert.AreEqual(1, results.Count)
  381. Assert.IsTrue(results.Contains(True))
  382. End Sub
  383. <Test()> _
  384. Public Sub TestDistinctD()
  385. Dim query = (From c In _collection.AsQueryable(Of C)()
  386. Select c.D).Distinct()
  387. Dim results = query.ToList()
  388. ' execute query
  389. Assert.AreEqual(5, results.Count)
  390. Assert.IsTrue(results.Contains(New D() With { _
  391. .Z = 11 _
  392. }))
  393. Assert.IsTrue(results.Contains(New D() With { _
  394. .Z = 22 _
  395. }))
  396. Assert.IsTrue(results.Contains(New D() With { _
  397. .Z = 33 _
  398. }))
  399. Assert.IsTrue(results.Contains(New D() With { _
  400. .Z = 44 _
  401. }))
  402. Assert.IsTrue(results.Contains(New D() With { _
  403. .Z = 55 _
  404. }))
  405. End Sub
  406. <Test()> _
  407. Public Sub TestDistinctDBRef()
  408. Dim query = (From c In _collection.AsQueryable(Of C)()
  409. Select c.DBRef).Distinct()
  410. Dim results = query.ToList()
  411. Assert.AreEqual(1, results.Count)
  412. Assert.IsTrue(results.Contains(New MongoDBRef("db", "c", 1)))
  413. End Sub
  414. <Test()> _
  415. Public Sub TestDistinctDBRefDatabase()
  416. Dim query = (From c In _collection.AsQueryable(Of C)()
  417. Select c.DBRef.DatabaseName).Distinct()
  418. Dim results = query.ToList()
  419. Assert.AreEqual(1, results.Count)
  420. Assert.IsTrue(results.Contains("db"))
  421. End Sub
  422. <Test()> _
  423. Public Sub TestDistinctDZ()
  424. Dim query = (From c In _collection.AsQueryable(Of C)()
  425. Select c.D.Z).Distinct()
  426. Dim results = query.ToList()
  427. Assert.AreEqual(5, results.Count)
  428. Assert.IsTrue(results.Contains(11))
  429. Assert.IsTrue(results.Contains(22))
  430. Assert.IsTrue(results.Contains(33))
  431. Assert.IsTrue(results.Contains(44))
  432. Assert.IsTrue(results.Contains(55))
  433. End Sub
  434. <Test()> _
  435. Public Sub TestDistinctE()
  436. Dim query = (From c In _collection.AsQueryable(Of C)()
  437. Select c.E).Distinct()
  438. Dim results = query.ToList()
  439. Assert.AreEqual(1, results.Count)
  440. Assert.IsTrue(results.Contains(E.A))
  441. End Sub
  442. <Test()> _
  443. Public Sub TestDistinctEASub0()
  444. Dim query = (From c In _collection.AsQueryable(Of C)()
  445. Select c.EA(0)).Distinct()
  446. Dim results = query.ToList()
  447. Assert.AreEqual(1, results.Count)
  448. Assert.IsTrue(results.Contains(E.A))
  449. End Sub
  450. <Test()> _
  451. Public Sub TestDistinctId()
  452. Dim query = (From c In _collection.AsQueryable(Of C)()
  453. Select c.Id).Distinct()
  454. Dim results = query.ToList()
  455. Assert.AreEqual(5, results.Count)
  456. Assert.IsTrue(results.Contains(_id1))
  457. Assert.IsTrue(results.Contains(_id2))
  458. Assert.IsTrue(results.Contains(_id3))
  459. Assert.IsTrue(results.Contains(_id4))
  460. Assert.IsTrue(results.Contains(_id5))
  461. End Sub
  462. <Test()> _
  463. Public Sub TestDistinctLSub0()
  464. Dim query = (From c In _collection.AsQueryable(Of C)()
  465. Select c.L(0)).Distinct()
  466. Dim results = query.ToList()
  467. Assert.AreEqual(1, results.Count)
  468. Assert.IsTrue(results.Contains(2))
  469. End Sub
  470. <Test()> _
  471. Public Sub TestDistinctS()
  472. Dim query = (From c In _collection.AsQueryable(Of C)()
  473. Select c.S).Distinct()
  474. Dim results = query.ToList()
  475. Assert.AreEqual(2, results.Count)
  476. Assert.IsTrue(results.Contains("abc"))
  477. Assert.IsTrue(results.Contains(" xyz "))
  478. End Sub
  479. <Test()> _
  480. Public Sub TestDistinctSASub0()
  481. Dim query = (From c In _collection.AsQueryable(Of C)()
  482. Select c.SA(0)).Distinct()
  483. Dim results = query.ToList()
  484. Assert.AreEqual(1, results.Count)
  485. Assert.IsTrue(results.Contains("Tom"))
  486. End Sub
  487. <Test()> _
  488. Public Sub TestDistinctX()
  489. Dim query = (From c In _collection.AsQueryable(Of C)()
  490. Select c.X).Distinct()
  491. Dim results = query.ToList()
  492. Assert.AreEqual(5, results.Count)
  493. Assert.IsTrue(results.Contains(1))
  494. Assert.IsTrue(results.Contains(2))
  495. Assert.IsTrue(results.Contains(3))
  496. Assert.IsTrue(results.Contains(4))
  497. Assert.IsTrue(results.Contains(5))
  498. End Sub
  499. <Test()> _
  500. Public Sub TestDistinctXWithQuery()
  501. Dim query = (From c In _collection.AsQueryable(Of C)()
  502. Where c.X > 3
  503. Select c.X).Distinct()
  504. Dim results = query.ToList()
  505. Assert.AreEqual(2, results.Count)
  506. Assert.IsTrue(results.Contains(4))
  507. Assert.IsTrue(results.Contains(5))
  508. End Sub
  509. <Test()> _
  510. Public Sub TestDistinctY()
  511. Dim query = (From c In _collection.AsQueryable(Of C)()
  512. Select c.Y).Distinct()
  513. Dim results = query.ToList()
  514. Assert.AreEqual(3, results.Count)
  515. Assert.IsTrue(results.Contains(11))
  516. Assert.IsTrue(results.Contains(33))
  517. Assert.IsTrue(results.Contains(44))
  518. End Sub
  519. <Test()> _
  520. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The version of the Distinct query operator with an equality comparer is not supported.")> _
  521. Public Sub TestDistinctWithEqualityComparer()
  522. Dim query = _collection.AsQueryable(Of C)().Distinct(New CEqualityComparer())
  523. query.ToList()
  524. ' execute query
  525. End Sub
  526. <Test()> _
  527. Public Sub TestElementAtOrDefaultWithManyMatches()
  528. Dim result = (From c In _collection.AsQueryable(Of C)()
  529. Select c).ElementAtOrDefault(2)
  530. Assert.AreEqual(3, result.X)
  531. Assert.AreEqual(33, result.Y)
  532. End Sub
  533. <Test()> _
  534. Public Sub TestElementAtOrDefaultWithNoMatch()
  535. Dim result = (From c In _collection.AsQueryable(Of C)()
  536. Where c.X = 9
  537. Select c).ElementAtOrDefault(0)
  538. Assert.IsNull(result)
  539. End Sub
  540. <Test()> _
  541. Public Sub TestElementAtOrDefaultWithOneMatch()
  542. Dim result = (From c In _collection.AsQueryable(Of C)()
  543. Where c.X = 3
  544. Select c).ElementAtOrDefault(0)
  545. Assert.AreEqual(3, result.X)
  546. Assert.AreEqual(33, result.Y)
  547. End Sub
  548. <Test()> _
  549. Public Sub TestElementAtOrDefaultWithTwoMatches()
  550. Dim result = (From c In _collection.AsQueryable(Of C)()
  551. Where c.Y = 11
  552. Select c).ElementAtOrDefault(1)
  553. Assert.AreEqual(1, result.X)
  554. Assert.AreEqual(11, result.Y)
  555. End Sub
  556. <Test()> _
  557. Public Sub TestElementAtWithManyMatches()
  558. Dim result = (From c In _collection.AsQueryable(Of C)()
  559. Select c).ElementAt(2)
  560. Assert.AreEqual(3, result.X)
  561. Assert.AreEqual(33, result.Y)
  562. End Sub
  563. <Test()> _
  564. <ExpectedException(GetType(InvalidOperationException))> _
  565. Public Sub TestElementAtWithNoMatch()
  566. Dim result = (From c In _collection.AsQueryable(Of C)()
  567. Where c.X = 9
  568. Select c).ElementAt(0)
  569. End Sub
  570. <Test()> _
  571. Public Sub TestElementAtWithOneMatch()
  572. Dim result = (From c In _collection.AsQueryable(Of C)()
  573. Where c.X = 3
  574. Select c).ElementAt(0)
  575. Assert.AreEqual(3, result.X)
  576. Assert.AreEqual(33, result.Y)
  577. End Sub
  578. <Test()> _
  579. Public Sub TestElementAtWithTwoMatches()
  580. Dim result = (From c In _collection.AsQueryable(Of C)()
  581. Where c.Y = 11
  582. Select c).ElementAt(1)
  583. Assert.AreEqual(1, result.X)
  584. Assert.AreEqual(11, result.Y)
  585. End Sub
  586. <Test()> _
  587. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Except query operator is not supported.")> _
  588. Public Sub TestExcept()
  589. Dim source2 = New C(-1) {}
  590. Dim query = (From c In _collection.AsQueryable(Of C)()
  591. Select c).Except(source2)
  592. query.ToList()
  593. ' execute query
  594. End Sub
  595. <Test()> _
  596. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Except query operator is not supported.")> _
  597. Public Sub TestExceptWithEqualityComparer()
  598. Dim source2 = New C(-1) {}
  599. Dim query = (From c In _collection.AsQueryable(Of C)()
  600. Select c).Except(source2, New CEqualityComparer())
  601. query.ToList()
  602. ' execute query
  603. End Sub
  604. <Test()> _
  605. Public Sub TestFirstOrDefaultWithManyMatches()
  606. Dim result = (From c In _collection.AsQueryable(Of C)()
  607. Select c).FirstOrDefault()
  608. Assert.AreEqual(2, result.X)
  609. Assert.AreEqual(11, result.Y)
  610. End Sub
  611. <Test()> _
  612. Public Sub TestFirstOrDefaultWithNoMatch()
  613. Dim result = (From c In _collection.AsQueryable(Of C)()
  614. Where c.X = 9
  615. Select c).FirstOrDefault()
  616. Assert.IsNull(result)
  617. End Sub
  618. <Test()> _
  619. Public Sub TestFirstOrDefaultWithOneMatch()
  620. Dim result = (From c In _collection.AsQueryable(Of C)()
  621. Where c.X = 3
  622. Select c).FirstOrDefault()
  623. Assert.AreEqual(3, result.X)
  624. Assert.AreEqual(33, result.Y)
  625. End Sub
  626. <Test()> _
  627. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="FirstOrDefault with predicate after a projection is not supported.")> _
  628. Public Sub TestFirstOrDefaultWithPredicateAfterProjection()
  629. Dim result = _collection.AsQueryable(Of C)().[Select](Function(c) c.Y).FirstOrDefault(Function(y) y = 11)
  630. End Sub
  631. <Test()> _
  632. Public Sub TestFirstOrDefaultWithPredicateAfterWhere()
  633. Dim result = (From c In _collection.AsQueryable(Of C)()
  634. Where c.X = 1
  635. Select c).FirstOrDefault(Function(c) c.Y = 11)
  636. Assert.AreEqual(1, result.X)
  637. Assert.AreEqual(11, result.Y)
  638. End Sub
  639. <Test()> _
  640. Public Sub TestFirstOrDefaultWithPredicateNoMatch()
  641. Dim result = (From c In _collection.AsQueryable(Of C)()
  642. Select c).FirstOrDefault(Function(c) c.X = 9)
  643. Assert.IsNull(result)
  644. End Sub
  645. <Test()> _
  646. Public Sub TestFirstOrDefaultWithPredicateOneMatch()
  647. Dim result = (From c In _collection.AsQueryable(Of C)()
  648. Select c).FirstOrDefault(Function(c) c.X = 3)
  649. Assert.AreEqual(3, result.X)
  650. Assert.AreEqual(33, result.Y)
  651. End Sub
  652. <Test()> _
  653. Public Sub TestFirstOrDefaultWithPredicateTwoMatches()
  654. Dim result = (From c In _collection.AsQueryable(Of C)()
  655. Select c).FirstOrDefault(Function(c) c.Y = 11)
  656. Assert.AreEqual(2, result.X)
  657. Assert.AreEqual(11, result.Y)
  658. End Sub
  659. <Test()> _
  660. Public Sub TestFirstOrDefaultWithTwoMatches()
  661. Dim result = (From c In _collection.AsQueryable(Of C)()
  662. Where c.Y = 11
  663. Select c).FirstOrDefault()
  664. Assert.AreEqual(2, result.X)
  665. Assert.AreEqual(11, result.Y)
  666. End Sub
  667. <Test()> _
  668. Public Sub TestFirstWithManyMatches()
  669. Dim result = (From c In _collection.AsQueryable(Of C)()
  670. Select c).First()
  671. Assert.AreEqual(2, result.X)
  672. Assert.AreEqual(11, result.Y)
  673. End Sub
  674. <Test()> _
  675. <ExpectedException(GetType(InvalidOperationException))> _
  676. Public Sub TestFirstWithNoMatch()
  677. Dim result = (From c In _collection.AsQueryable(Of C)()
  678. Where c.X = 9
  679. Select c).First()
  680. End Sub
  681. <Test()> _
  682. Public Sub TestFirstWithOneMatch()
  683. Dim result = (From c In _collection.AsQueryable(Of C)()
  684. Where c.X = 3
  685. Select c).First()
  686. Assert.AreEqual(3, result.X)
  687. Assert.AreEqual(33, result.Y)
  688. End Sub
  689. <Test()> _
  690. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="First with predicate after a projection is not supported.")> _
  691. Public Sub TestFirstWithPredicateAfterProjection()
  692. Dim result = _collection.AsQueryable(Of C)().[Select](Function(c) c.Y).First(Function(y) y = 11)
  693. End Sub
  694. <Test()> _
  695. Public Sub TestFirstWithPredicateAfterWhere()
  696. Dim result = (From c In _collection.AsQueryable(Of C)()
  697. Where c.X = 1
  698. Select c).First(Function(c) c.Y = 11)
  699. Assert.AreEqual(1, result.X)
  700. Assert.AreEqual(11, result.Y)
  701. End Sub
  702. <Test()> _
  703. Public Sub TestFirstWithPredicateNoMatch()
  704. Dim ex = Assert.Throws(Of InvalidOperationException)(Sub()
  705. Dim result = (From c In _collection.AsQueryable(Of C)()
  706. Select c).First(Function(c) c.X = 9)
  707. End Sub)
  708. Assert.AreEqual(ExpectedErrorMessage.FirstEmptySequence, ex.Message)
  709. End Sub
  710. <Test()> _
  711. Public Sub TestFirstWithPredicateOneMatch()
  712. Dim result = (From c In _collection.AsQueryable(Of C)()
  713. Select c).First(Function(c) c.X = 3)
  714. Assert.AreEqual(3, result.X)
  715. Assert.AreEqual(33, result.Y)
  716. End Sub
  717. <Test()> _
  718. Public Sub TestFirstWithPredicateTwoMatches()
  719. Dim result = (From c In _collection.AsQueryable(Of C)()
  720. Select c).First(Function(c) c.Y = 11)
  721. Assert.AreEqual(2, result.X)
  722. Assert.AreEqual(11, result.Y)
  723. End Sub
  724. <Test()> _
  725. Public Sub TestFirstWithTwoMatches()
  726. Dim result = (From c In _collection.AsQueryable(Of C)()
  727. Where c.Y = 11
  728. Select c).First()
  729. Assert.AreEqual(2, result.X)
  730. Assert.AreEqual(11, result.Y)
  731. End Sub
  732. <Test()> _
  733. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The GroupBy query operator is not supported.")> _
  734. Public Sub TestGroupByWithKeySelector()
  735. Dim query = (From c In _collection.AsQueryable(Of C)()
  736. Select c).GroupBy(Function(c) c)
  737. query.ToList()
  738. ' execute query
  739. End Sub
  740. <Test()> _
  741. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The GroupBy query operator is not supported.")> _
  742. Public Sub TestGroupByWithKeySelectorAndElementSelector()
  743. Dim query = (From c In _collection.AsQueryable(Of C)()
  744. Select c).GroupBy(Function(c) c, Function(c) c)
  745. query.ToList()
  746. ' execute query
  747. End Sub
  748. <Test()> _
  749. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The GroupBy query operator is not supported.")> _
  750. Public Sub TestGroupByWithKeySelectorAndElementSelectorAndEqualityComparer()
  751. Dim query = (From c In _collection.AsQueryable(Of C)()
  752. Select c).GroupBy(Function(c) c, Function(c) c, New CEqualityComparer())
  753. query.ToList()
  754. ' execute query
  755. End Sub
  756. <Test()> _
  757. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The GroupBy query operator is not supported.")> _
  758. Public Sub TestGroupByWithKeySelectorAndElementSelectorAndResultSelector()
  759. Dim query = (From c In _collection.AsQueryable(Of C)()
  760. Select c).GroupBy(Function(c) c, Function(c) c, Function(c, e) 1.0)
  761. query.ToList()
  762. ' execute query
  763. End Sub
  764. <Test()> _
  765. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The GroupBy query operator is not supported.")> _
  766. Public Sub TestGroupByWithKeySelectorAndElementSelectorAndResultSelectorAndEqualityComparer()
  767. Dim query = (From c In _collection.AsQueryable(Of C)()
  768. Select c).GroupBy(Function(c) c, Function(c) c, Function(c, e) e.First(), New CEqualityComparer())
  769. query.ToList()
  770. ' execute query
  771. End Sub
  772. <Test()> _
  773. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The GroupBy query operator is not supported.")> _
  774. Public Sub TestGroupByWithKeySelectorAndEqualityComparer()
  775. Dim query = (From c In _collection.AsQueryable(Of C)()
  776. Select c).GroupBy(Function(c) c, New CEqualityComparer())
  777. query.ToList()
  778. ' execute query
  779. End Sub
  780. <Test()> _
  781. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The GroupBy query operator is not supported.")> _
  782. Public Sub TestGroupByWithKeySelectorAndResultSelector()
  783. Dim query = (From c In _collection.AsQueryable(Of C)()
  784. Select c).GroupBy(Function(c) c, Function(k, e) 1.0)
  785. query.ToList()
  786. ' execute query
  787. End Sub
  788. <Test()> _
  789. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The GroupBy query operator is not supported.")> _
  790. Public Sub TestGroupByWithKeySelectorAndResultSelectorAndEqualityComparer()
  791. Dim query = (From c In _collection.AsQueryable(Of C)()
  792. Select c).GroupBy(Function(c) c, Function(k, e) e.First(), New CEqualityComparer())
  793. query.ToList()
  794. ' execute query
  795. End Sub
  796. <Test()> _
  797. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The GroupJoin query operator is not supported.")> _
  798. Public Sub TestGroupJoin()
  799. Dim inner = New C(-1) {}
  800. Dim query = _collection.AsQueryable(Of C)().GroupJoin(inner, Function(c) c, Function(c) c, Function(c, e) c)
  801. query.ToList()
  802. ' execute query
  803. End Sub
  804. <Test()> _
  805. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The GroupJoin query operator is not supported.")> _
  806. Public Sub TestGroupJoinWithEqualityComparer()
  807. Dim inner = New C(-1) {}
  808. Dim query = _collection.AsQueryable(Of C)().GroupJoin(inner, Function(c) c, Function(c) c, Function(c, e) c, New CEqualityComparer())
  809. query.ToList()
  810. ' execute query
  811. End Sub
  812. <Test()> _
  813. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Intersect query operator is not supported.")> _
  814. Public Sub TestIntersect()
  815. Dim source2 = New C(-1) {}
  816. Dim query = (From c In _collection.AsQueryable(Of C)()
  817. Select c).Intersect(source2)
  818. query.ToList()
  819. ' execute query
  820. End Sub
  821. <Test()> _
  822. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Intersect query operator is not supported.")> _
  823. Public Sub TestIntersectWithEqualityComparer()
  824. Dim source2 = New C(-1) {}
  825. Dim query = (From c In _collection.AsQueryable(Of C)()
  826. Select c).Intersect(source2, New CEqualityComparer())
  827. query.ToList()
  828. ' execute query
  829. End Sub
  830. <Test()> _
  831. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Join query operator is not supported.")> _
  832. Public Sub TestJoin()
  833. Dim query = _collection.AsQueryable(Of C)().Join(_collection.AsQueryable(Of C)(), Function(c) c.X, Function(c) c.X, Function(x, y) x)
  834. query.ToList()
  835. ' execute query
  836. End Sub
  837. <Test()> _
  838. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Join query operator is not supported.")> _
  839. Public Sub TestJoinWithEqualityComparer()
  840. Dim query = _collection.AsQueryable(Of C)().Join(_collection.AsQueryable(Of C)(), Function(c) c.X, Function(c) c.X, Function(x, y) x, New Int32EqualityComparer())
  841. query.ToList()
  842. ' execute query
  843. End Sub
  844. <Test()> _
  845. Public Sub TestLastOrDefaultWithManyMatches()
  846. Dim result = (From c In _collection.AsQueryable(Of C)()
  847. Select c).LastOrDefault()
  848. Assert.AreEqual(4, result.X)
  849. Assert.AreEqual(44, result.Y)
  850. End Sub
  851. <Test()> _
  852. Public Sub TestLastOrDefaultWithNoMatch()
  853. Dim result = (From c In _collection.AsQueryable(Of C)()
  854. Where c.X = 9
  855. Select c).LastOrDefault()
  856. Assert.IsNull(result)
  857. End Sub
  858. <Test()> _
  859. Public Sub TestLastOrDefaultWithOneMatch()
  860. Dim result = (From c In _collection.AsQueryable(Of C)()
  861. Where c.X = 3
  862. Select c).LastOrDefault()
  863. Assert.AreEqual(3, result.X)
  864. Assert.AreEqual(33, result.Y)
  865. End Sub
  866. <Test()> _
  867. Public Sub TestLastOrDefaultWithOrderBy()
  868. Dim result = (From c In _collection.AsQueryable(Of C)()
  869. Order By c.X
  870. Select c).LastOrDefault()
  871. Assert.AreEqual(5, result.X)
  872. Assert.AreEqual(44, result.Y)
  873. End Sub
  874. <Test()> _
  875. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="LastOrDefault with predicate after a projection is not supported.")> _
  876. Public Sub TestLastOrDefaultWithPredicateAfterProjection()
  877. Dim result = _collection.AsQueryable(Of C)().[Select](Function(c) c.Y).LastOrDefault(Function(y) y = 11)
  878. End Sub
  879. <Test()> _
  880. Public Sub TestLastOrDefaultWithPredicateAfterWhere()
  881. Dim result = (From c In _collection.AsQueryable(Of C)()
  882. Where c.X = 1
  883. Select c).LastOrDefault(Function(c) c.Y = 11)
  884. Assert.AreEqual(1, result.X)
  885. Assert.AreEqual(11, result.Y)
  886. End Sub
  887. <Test()> _
  888. Public Sub TestLastOrDefaultWithPredicateNoMatch()
  889. Dim result = (From c In _collection.AsQueryable(Of C)()
  890. Select c).LastOrDefault(Function(c) c.X = 9)
  891. Assert.IsNull(result)
  892. End Sub
  893. <Test()> _
  894. Public Sub TestLastOrDefaultWithPredicateOneMatch()
  895. Dim result = (From c In _collection.AsQueryable(Of C)()
  896. Select c).LastOrDefault(Function(c) c.X = 3)
  897. Assert.AreEqual(3, result.X)
  898. Assert.AreEqual(33, result.Y)
  899. End Sub
  900. <Test()> _
  901. Public Sub TestLastOrDefaultWithPredicateTwoMatches()
  902. Dim result = (From c In _collection.AsQueryable(Of C)()
  903. Select c).LastOrDefault(Function(c) c.Y = 11)
  904. Assert.AreEqual(1, result.X)
  905. Assert.AreEqual(11, result.Y)
  906. End Sub
  907. <Test()> _
  908. Public Sub TestLastOrDefaultWithTwoMatches()
  909. Dim result = (From c In _collection.AsQueryable(Of C)()
  910. Where c.Y = 11
  911. Select c).LastOrDefault()
  912. Assert.AreEqual(1, result.X)
  913. Assert.AreEqual(11, result.Y)
  914. End Sub
  915. <Test()> _
  916. Public Sub TestLastWithManyMatches()
  917. Dim result = (From c In _collection.AsQueryable(Of C)()
  918. Select c).Last()
  919. Assert.AreEqual(4, result.X)
  920. Assert.AreEqual(44, result.Y)
  921. End Sub
  922. <Test()> _
  923. <ExpectedException(GetType(InvalidOperationException))> _
  924. Public Sub TestLastWithNoMatch()
  925. Dim result = (From c In _collection.AsQueryable(Of C)()
  926. Where c.X = 9
  927. Select c).Last()
  928. End Sub
  929. <Test()> _
  930. Public Sub TestLastWithOneMatch()
  931. Dim result = (From c In _collection.AsQueryable(Of C)()
  932. Where c.X = 3
  933. Select c).Last()
  934. Assert.AreEqual(3, result.X)
  935. Assert.AreEqual(33, result.Y)
  936. End Sub
  937. <Test()> _
  938. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="Last with predicate after a projection is not supported.")> _
  939. Public Sub TestLastWithPredicateAfterProjection()
  940. Dim result = _collection.AsQueryable(Of C)().Select(Function(c) c.Y).Last(Function(y) y = 11)
  941. End Sub
  942. <Test()> _
  943. Public Sub TestLastWithPredicateAfterWhere()
  944. Dim result = (From c In _collection.AsQueryable(Of C)()
  945. Where c.X = 1
  946. Select c).Last(Function(c) c.Y = 11)
  947. Assert.AreEqual(1, result.X)
  948. Assert.AreEqual(11, result.Y)
  949. End Sub
  950. <Test()> _
  951. Public Sub TestLastWithPredicateNoMatch()
  952. Dim ex = Assert.Throws(Of InvalidOperationException)(Sub()
  953. Dim result = (From c In _collection.AsQueryable(Of C)()
  954. Select c).Last(Function(c) c.X = 9)
  955. End Sub)
  956. Assert.AreEqual(ExpectedErrorMessage.LastEmptySequence, ex.Message)
  957. End Sub
  958. <Test()> _
  959. Public Sub TestLastWithPredicateOneMatch()
  960. Dim result = (From c In _collection.AsQueryable(Of C)()
  961. Select c).Last(Function(c) c.X = 3)
  962. Assert.AreEqual(3, result.X)
  963. Assert.AreEqual(33, result.Y)
  964. End Sub
  965. <Test()> _
  966. Public Sub TestLastWithPredicateTwoMatches()
  967. Dim result = (From c In _collection.AsQueryable(Of C)()
  968. Select c).Last(Function(c) c.Y = 11)
  969. Assert.AreEqual(1, result.X)
  970. Assert.AreEqual(11, result.Y)
  971. End Sub
  972. <Test()> _
  973. Public Sub TestLastWithOrderBy()
  974. Dim result = (From c In _collection.AsQueryable(Of C)()
  975. Order By c.X
  976. Select c).Last()
  977. Assert.AreEqual(5, result.X)
  978. Assert.AreEqual(44, result.Y)
  979. End Sub
  980. <Test()> _
  981. Public Sub TestLastWithTwoMatches()
  982. Dim result = (From c In _collection.AsQueryable(Of C)()
  983. Where c.Y = 11
  984. Select c).Last()
  985. Assert.AreEqual(1, result.X)
  986. Assert.AreEqual(11, result.Y)
  987. End Sub
  988. <Test()> _
  989. Public Sub TestLongCountEquals2()
  990. Dim result = (From c In _collection.AsQueryable(Of C)()
  991. Where c.Y = 11
  992. Select c).LongCount()
  993. Assert.AreEqual(2L, result)
  994. End Sub
  995. <Test()> _
  996. Public Sub TestLongCountEquals5()
  997. Dim result = (From c In _collection.AsQueryable(Of C)()
  998. Select c).LongCount()
  999. Assert.AreEqual(5L, result)
  1000. End Sub
  1001. <Test()> _
  1002. Public Sub TestLongCountWithSkipAndTake()
  1003. Dim result = (From c In _collection.AsQueryable(Of C)()
  1004. Select c).Skip(2).Take(2).LongCount()
  1005. Assert.AreEqual(2L, result)
  1006. End Sub
  1007. <Test()> _
  1008. Public Sub TestMaxDZWithProjection()
  1009. Dim result = (From c In _collection.AsQueryable(Of C)()
  1010. Select c.D.Z).Max()
  1011. Assert.AreEqual(55, result)
  1012. End Sub
  1013. <Test()> _
  1014. Public Sub TestMaxDZWithSelector()
  1015. Dim result = (From c In _collection.AsQueryable(Of C)()
  1016. Select c).Max(Function(c) c.D.Z)
  1017. Assert.AreEqual(55, result)
  1018. End Sub
  1019. <Test()> _
  1020. Public Sub TestMaxXWithProjection()
  1021. Dim result = (From c In _collection.AsQueryable(Of C)()
  1022. Select c.X).Max()
  1023. Assert.AreEqual(5, result)
  1024. End Sub
  1025. <Test()> _
  1026. Public Sub TestMaxXWithSelector()
  1027. Dim result = (From c In _collection.AsQueryable(Of C)()
  1028. Select c).Max(Function(c) c.X)
  1029. Assert.AreEqual(5, result)
  1030. End Sub
  1031. <Test()> _
  1032. Public Sub TestMaxXYWithProjection()
  1033. Dim result = (From c In _collection.AsQueryable(Of C)()
  1034. Select New With {c.X, c.Y}).Max()
  1035. Assert.AreEqual(5, result.X)
  1036. Assert.AreEqual(44, result.Y)
  1037. End Sub
  1038. <Test()> _
  1039. Public Sub TestMaxXYWithSelector()
  1040. Dim result = (From c In _collection.AsQueryable(Of C)()
  1041. Select c).Max(Function(c) New With
  1042. {
  1043. c.X,
  1044. c.Y
  1045. })
  1046. Assert.AreEqual(5, result.X)
  1047. Assert.AreEqual(44, result.Y)
  1048. End Sub
  1049. <Test()> _
  1050. Public Sub TestMinDZWithProjection()
  1051. Dim result = (From c In _collection.AsQueryable(Of C)()
  1052. Select c.D.Z).Min()
  1053. Assert.AreEqual(11, result)
  1054. End Sub
  1055. <Test()> _
  1056. Public Sub TestMinDZWithSelector()
  1057. Dim result = (From c In _collection.AsQueryable(Of C)()
  1058. Select c).Min(Function(c) c.D.Z)
  1059. Assert.AreEqual(11, result)
  1060. End Sub
  1061. <Test()> _
  1062. Public Sub TestMinXWithProjection()
  1063. Dim result = (From c In _collection.AsQueryable(Of C)()
  1064. Select c.X).Min()
  1065. Assert.AreEqual(1, result)
  1066. End Sub
  1067. <Test()> _
  1068. Public Sub TestMinXWithSelector()
  1069. Dim result = (From c In _collection.AsQueryable(Of C)()
  1070. Select c).Min(Function(c) c.X)
  1071. Assert.AreEqual(1, result)
  1072. End Sub
  1073. <Test()> _
  1074. Public Sub TestMinXYWithProjection()
  1075. Dim result = (From c In _collection.AsQueryable(Of C)()
  1076. Select New With {c.X, c.Y}).Min()
  1077. Assert.AreEqual(1, result.X)
  1078. Assert.AreEqual(11, result.Y)
  1079. End Sub
  1080. <Test()> _
  1081. Public Sub TestMinXYWithSelector()
  1082. Dim result = (From c In _collection.AsQueryable(Of C)()
  1083. Select c).Min(Function(c) New With
  1084. {
  1085. c.X,
  1086. c.Y
  1087. })
  1088. Assert.AreEqual(1, result.X)
  1089. Assert.AreEqual(11, result.Y)
  1090. End Sub
  1091. <Test()>
  1092. Public Sub TestOrderByValueTypeWithObjectReturnType()
  1093. Dim orderByClause As Expression(Of Func(Of C, Object)) = Function(c) c.LX
  1094. Dim query = _collection.AsQueryable(Of C)().OrderBy(orderByClause)
  1095. RunTestOrderByValueTypeWithMismatchingType(query, "(C c) => (Object)c.LX")
  1096. End Sub
  1097. <Test()>
  1098. Public Sub TestOrderByValueTypeWithIComparableReturnType()
  1099. Dim orderByClause As Expression(Of Func(Of C, IComparable)) = Function(c) c.LX
  1100. Dim query = _collection.AsQueryable(Of C)().OrderBy(orderByClause)
  1101. RunTestOrderByValueTypeWithMismatchingType(query, "(C c) => (IComparable)c.LX")
  1102. End Sub
  1103. Sub RunTestOrderByValueTypeWithMismatchingType(ByVal query As IOrderedQueryable, ByVal orderByString As String)
  1104. Dim mongoQuery = MongoQueryTranslator.Translate(query)
  1105. Assert.IsInstanceOf(Of SelectQuery)(mongoQuery)
  1106. Dim selectQuery As SelectQuery = mongoQuery
  1107. Assert.AreEqual(orderByString, ExpressionFormatter.ToString(selectQuery.OrderBy(0).Key))
  1108. End Sub
  1109. <Test()> _
  1110. Public Sub TestOrderByAscending()
  1111. Dim query = From c In _collection.AsQueryable(Of C)()
  1112. Order By c.X
  1113. Select c
  1114. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1115. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1116. Assert.AreSame(_collection, translatedQuery.Collection)
  1117. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1118. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1119. Assert.IsNull(selectQuery.Where)
  1120. Assert.AreEqual(1, selectQuery.OrderBy.Count)
  1121. Assert.AreEqual(OrderByDirection.Ascending, selectQuery.OrderBy(0).Direction)
  1122. Assert.IsNull(selectQuery.Projection)
  1123. Assert.IsNull(selectQuery.Skip)
  1124. Assert.IsNull(selectQuery.Take)
  1125. Assert.IsNull(selectQuery.BuildQuery())
  1126. Dim results = query.ToList()
  1127. Assert.AreEqual(5, results.Count)
  1128. Assert.AreEqual(1, results.First().X)
  1129. Assert.AreEqual(5, results.Last().X)
  1130. End Sub
  1131. <Test()> _
  1132. Public Sub TestOrderByAscendingThenByAscending()
  1133. Dim query = From c In _collection.AsQueryable(Of C)()
  1134. Order By c.Y, c.X
  1135. Select c
  1136. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1137. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1138. Assert.AreSame(_collection, translatedQuery.Collection)
  1139. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1140. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1141. Assert.IsNull(selectQuery.Where)
  1142. Assert.AreEqual(2, selectQuery.OrderBy.Count)
  1143. Assert.AreEqual(OrderByDirection.Ascending, selectQuery.OrderBy(0).Direction)
  1144. Assert.AreEqual(OrderByDirection.Ascending, selectQuery.OrderBy(1).Direction)
  1145. Assert.IsNull(selectQuery.Projection)
  1146. Assert.IsNull(selectQuery.Skip)
  1147. Assert.IsNull(selectQuery.Take)
  1148. Assert.IsNull(selectQuery.BuildQuery())
  1149. Dim results = query.ToList()
  1150. Assert.AreEqual(5, results.Count)
  1151. Assert.AreEqual(1, results.First().X)
  1152. Assert.AreEqual(5, results.Last().X)
  1153. End Sub
  1154. <Test()> _
  1155. Public Sub TestOrderByAscendingThenByDescending()
  1156. Dim query = From c In _collection.AsQueryable(Of C)()
  1157. Order By c.Y, c.X Descending
  1158. Select c
  1159. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1160. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1161. Assert.AreSame(_collection, translatedQuery.Collection)
  1162. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1163. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1164. Assert.IsNull(selectQuery.Where)
  1165. Assert.AreEqual(2, selectQuery.OrderBy.Count)
  1166. Assert.AreEqual(OrderByDirection.Ascending, selectQuery.OrderBy(0).Direction)
  1167. Assert.AreEqual(OrderByDirection.Descending, selectQuery.OrderBy(1).Direction)
  1168. Assert.IsNull(selectQuery.Projection)
  1169. Assert.IsNull(selectQuery.Skip)
  1170. Assert.IsNull(selectQuery.Take)
  1171. Assert.IsNull(selectQuery.BuildQuery())
  1172. Dim results = query.ToList()
  1173. Assert.AreEqual(5, results.Count)
  1174. Assert.AreEqual(2, results.First().X)
  1175. Assert.AreEqual(4, results.Last().X)
  1176. End Sub
  1177. <Test()> _
  1178. Public Sub TestOrderByDescending()
  1179. Dim query = From c In _collection.AsQueryable(Of C)()
  1180. Order By c.X Descending
  1181. Select c
  1182. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1183. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1184. Assert.AreSame(_collection, translatedQuery.Collection)
  1185. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1186. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1187. Assert.IsNull(selectQuery.Where)
  1188. Assert.AreEqual(1, selectQuery.OrderBy.Count)
  1189. Assert.AreEqual(OrderByDirection.Descending, selectQuery.OrderBy(0).Direction)
  1190. Assert.IsNull(selectQuery.Projection)
  1191. Assert.IsNull(selectQuery.Skip)
  1192. Assert.IsNull(selectQuery.Take)
  1193. Assert.IsNull(selectQuery.BuildQuery())
  1194. Dim results = query.ToList()
  1195. Assert.AreEqual(5, results.Count)
  1196. Assert.AreEqual(5, results.First().X)
  1197. Assert.AreEqual(1, results.Last().X)
  1198. End Sub
  1199. <Test()> _
  1200. Public Sub TestOrderByDescendingThenByAscending()
  1201. Dim query = From c In _collection.AsQueryable(Of C)()
  1202. Order By c.Y Descending, c.X
  1203. Select c
  1204. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1205. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1206. Assert.AreSame(_collection, translatedQuery.Collection)
  1207. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1208. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1209. Assert.IsNull(selectQuery.Where)
  1210. Assert.AreEqual(2, selectQuery.OrderBy.Count)
  1211. Assert.AreEqual(OrderByDirection.Descending, selectQuery.OrderBy(0).Direction)
  1212. Assert.AreEqual(OrderByDirection.Ascending, selectQuery.OrderBy(1).Direction)
  1213. Assert.IsNull(selectQuery.Projection)
  1214. Assert.IsNull(selectQuery.Skip)
  1215. Assert.IsNull(selectQuery.Take)
  1216. Assert.IsNull(selectQuery.BuildQuery())
  1217. Dim results = query.ToList()
  1218. Assert.AreEqual(5, results.Count)
  1219. Assert.AreEqual(4, results.First().X)
  1220. Assert.AreEqual(2, results.Last().X)
  1221. End Sub
  1222. <Test()> _
  1223. Public Sub TestOrderByDescendingThenByDescending()
  1224. Dim query = From c In _collection.AsQueryable(Of C)()
  1225. Order By c.Y Descending, c.X Descending
  1226. Select c
  1227. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1228. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1229. Assert.AreSame(_collection, translatedQuery.Collection)
  1230. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1231. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1232. Assert.IsNull(selectQuery.Where)
  1233. Assert.AreEqual(2, selectQuery.OrderBy.Count)
  1234. Assert.AreEqual(OrderByDirection.Descending, selectQuery.OrderBy(0).Direction)
  1235. Assert.AreEqual(OrderByDirection.Descending, selectQuery.OrderBy(1).Direction)
  1236. Assert.IsNull(selectQuery.Projection)
  1237. Assert.IsNull(selectQuery.Skip)
  1238. Assert.IsNull(selectQuery.Take)
  1239. Assert.IsNull(selectQuery.BuildQuery())
  1240. Dim results = query.ToList()
  1241. Assert.AreEqual(5, results.Count)
  1242. Assert.AreEqual(5, results.First().X)
  1243. Assert.AreEqual(1, results.Last().X)
  1244. End Sub
  1245. <Test()> _
  1246. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="Only one OrderBy or OrderByDescending clause is allowed (use ThenBy or ThenByDescending for multiple order by clauses).")> _
  1247. Public Sub TestOrderByDuplicate()
  1248. Dim query = From c In _collection.AsQueryable(Of C)()
  1249. Order By c.X _
  1250. Order By c.Y
  1251. Select c
  1252. MongoQueryTranslator.Translate(query)
  1253. End Sub
  1254. <Test()> _
  1255. Public Sub TestProjection()
  1256. Dim query = From c In _collection.AsQueryable(Of C)()
  1257. Select c.X
  1258. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1259. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1260. Assert.AreSame(_collection, translatedQuery.Collection)
  1261. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1262. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1263. Assert.IsNull(selectQuery.Where)
  1264. Assert.IsNull(selectQuery.OrderBy)
  1265. Assert.IsNull(selectQuery.Skip)
  1266. Assert.IsNull(selectQuery.Take)
  1267. Assert.IsNull(selectQuery.BuildQuery())
  1268. Dim results = query.ToList()
  1269. Assert.AreEqual(5, results.Count)
  1270. Assert.AreEqual(2, results.First())
  1271. Assert.AreEqual(4, results.Last())
  1272. End Sub
  1273. <Test()> _
  1274. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Reverse query operator is not supported.")> _
  1275. Public Sub TestReverse()
  1276. Dim query = (From c In _collection.AsQueryable(Of C)()
  1277. Select c).Reverse()
  1278. query.ToList()
  1279. ' execute query
  1280. End Sub
  1281. <Test()> _
  1282. Public Sub TestSelect()
  1283. Dim query = From c In _collection.AsQueryable(Of C)()
  1284. Select c
  1285. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1286. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1287. Assert.AreSame(_collection, translatedQuery.Collection)
  1288. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1289. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1290. Assert.IsNull(selectQuery.Where)
  1291. Assert.IsNull(selectQuery.OrderBy)
  1292. Assert.IsNull(selectQuery.Projection)
  1293. Assert.IsNull(selectQuery.Skip)
  1294. Assert.IsNull(selectQuery.Take)
  1295. Assert.IsNull(selectQuery.BuildQuery())
  1296. Assert.AreEqual(5, Consume(query))
  1297. End Sub
  1298. <Test()> _
  1299. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The SelectMany query operator is not supported.")> _
  1300. Public Sub TestSelectMany()
  1301. Dim query = _collection.AsQueryable(Of C)().SelectMany(Function(c) New C() {c})
  1302. query.ToList()
  1303. ' execute query
  1304. End Sub
  1305. <Test()> _
  1306. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The SelectMany query operator is not supported.")> _
  1307. Public Sub TestSelectManyWithIndex()
  1308. Dim query = _collection.AsQueryable(Of C)().SelectMany(Function(c, index) New C() {c})
  1309. query.ToList()
  1310. ' execute query
  1311. End Sub
  1312. <Test()> _
  1313. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The SelectMany query operator is not supported.")> _
  1314. Public Sub TestSelectManyWithIntermediateResults()
  1315. Dim query = _collection.AsQueryable(Of C)().SelectMany(Function(c) New C() {c}, Function(c, i) i)
  1316. query.ToList()
  1317. ' execute query
  1318. End Sub
  1319. <Test()> _
  1320. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The SelectMany query operator is not supported.")> _
  1321. Public Sub TestSelectManyWithIndexAndIntermediateResults()
  1322. Dim query = _collection.AsQueryable(Of C)().SelectMany(Function(c, index) New C() {c}, Function(c, i) i)
  1323. query.ToList()
  1324. ' execute query
  1325. End Sub
  1326. <Test()> _
  1327. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The indexed version of the Select query operator is not supported.")> _
  1328. Public Sub TestSelectWithIndex()
  1329. Dim query = _collection.AsQueryable(Of C)().[Select](Function(c, index) c)
  1330. query.ToList()
  1331. ' execute query
  1332. End Sub
  1333. <Test()> _
  1334. Public Sub TestSelectWithNothingElse()
  1335. Dim query = From c In _collection.AsQueryable(Of C)()
  1336. Select c
  1337. Dim result = query.ToList()
  1338. Assert.AreEqual(5, result.Count)
  1339. End Sub
  1340. <Test()> _
  1341. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The SequenceEqual query operator is not supported.")> _
  1342. Public Sub TestSequenceEqual()
  1343. Dim source2 = New C(-1) {}
  1344. Dim result = (From c In _collection.AsQueryable(Of C)()
  1345. Select c).SequenceEqual(source2)
  1346. End Sub
  1347. <Test()> _
  1348. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The SequenceEqual query operator is not supported.")> _
  1349. Public Sub TestSequenceEqualtWithEqualityComparer()
  1350. Dim source2 = New C(-1) {}
  1351. Dim result = (From c In _collection.AsQueryable(Of C)()
  1352. Select c).SequenceEqual(source2, New CEqualityComparer())
  1353. End Sub
  1354. <Test()> _
  1355. <ExpectedException(GetType(InvalidOperationException))> _
  1356. Public Sub TestSingleOrDefaultWithManyMatches()
  1357. Dim result = (From c In _collection.AsQueryable(Of C)()
  1358. Select c).SingleOrDefault()
  1359. End Sub
  1360. <Test()> _
  1361. Public Sub TestSingleOrDefaultWithNoMatch()
  1362. Dim result = (From c In _collection.AsQueryable(Of C)()
  1363. Where c.X = 9
  1364. Select c).SingleOrDefault()
  1365. Assert.IsNull(result)
  1366. End Sub
  1367. <Test()> _
  1368. Public Sub TestSingleOrDefaultWithOneMatch()
  1369. Dim result = (From c In _collection.AsQueryable(Of C)()
  1370. Where c.X = 3
  1371. Select c).SingleOrDefault()
  1372. Assert.AreEqual(3, result.X)
  1373. Assert.AreEqual(33, result.Y)
  1374. End Sub
  1375. <Test()> _
  1376. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="SingleOrDefault with predicate after a projection is not supported.")> _
  1377. Public Sub TestSingleOrDefaultWithPredicateAfterProjection()
  1378. Dim result = _collection.AsQueryable(Of C)().[Select](Function(c) c.Y).SingleOrDefault(Function(y) y = 11)
  1379. End Sub
  1380. <Test()> _
  1381. Public Sub TestSingleOrDefaultWithPredicateAfterWhere()
  1382. Dim result = (From c In _collection.AsQueryable(Of C)()
  1383. Where c.X = 1
  1384. Select c).SingleOrDefault(Function(c) c.Y = 11)
  1385. Assert.AreEqual(1, result.X)
  1386. Assert.AreEqual(11, result.Y)
  1387. End Sub
  1388. <Test()> _
  1389. Public Sub TestSingleOrDefaultWithPredicateNoMatch()
  1390. Dim result = (From c In _collection.AsQueryable(Of C)()
  1391. Select c).SingleOrDefault(Function(c) c.X = 9)
  1392. Assert.IsNull(result)
  1393. End Sub
  1394. <Test()> _
  1395. Public Sub TestSingleOrDefaultWithPredicateOneMatch()
  1396. Dim result = (From c In _collection.AsQueryable(Of C)()
  1397. Select c).SingleOrDefault(Function(c) c.X = 3)
  1398. Assert.AreEqual(3, result.X)
  1399. Assert.AreEqual(33, result.Y)
  1400. End Sub
  1401. <Test()> _
  1402. Public Sub TestSingleOrDefaultWithPredicateTwoMatches()
  1403. Dim ex = Assert.Throws(Of InvalidOperationException)(Sub()
  1404. Dim result = (From c In _collection.AsQueryable(Of C)()
  1405. Select c).SingleOrDefault(Function(c) c.Y = 11)
  1406. End Sub)
  1407. Assert.AreEqual(ExpectedErrorMessage.SingleLongSequence, ex.Message)
  1408. End Sub
  1409. <Test()> _
  1410. <ExpectedException(GetType(InvalidOperationException))> _
  1411. Public Sub TestSingleOrDefaultWithTwoMatches()
  1412. Dim result = (From c In _collection.AsQueryable(Of C)()
  1413. Where c.Y = 11
  1414. Select c).SingleOrDefault()
  1415. End Sub
  1416. <Test()> _
  1417. <ExpectedException(GetType(InvalidOperationException))> _
  1418. Public Sub TestSingleWithManyMatches()
  1419. Dim result = (From c In _collection.AsQueryable(Of C)()
  1420. Select c).[Single]()
  1421. End Sub
  1422. <Test()> _
  1423. <ExpectedException(GetType(InvalidOperationException))> _
  1424. Public Sub TestSingleWithNoMatch()
  1425. Dim result = (From c In _collection.AsQueryable(Of C)()
  1426. Where c.X = 9
  1427. Select c).[Single]()
  1428. End Sub
  1429. <Test()> _
  1430. Public Sub TestSingleWithOneMatch()
  1431. Dim result = (From c In _collection.AsQueryable(Of C)()
  1432. Where c.X = 3
  1433. Select c).[Single]()
  1434. Assert.AreEqual(3, result.X)
  1435. Assert.AreEqual(33, result.Y)
  1436. End Sub
  1437. <Test()> _
  1438. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="Single with predicate after a projection is not supported.")> _
  1439. Public Sub TestSingleWithPredicateAfterProjection()
  1440. Dim result = _collection.AsQueryable(Of C)().[Select](Function(c) c.Y).[Single](Function(y) y = 11)
  1441. End Sub
  1442. <Test()> _
  1443. Public Sub TestSingleWithPredicateAfterWhere()
  1444. Dim result = (From c In _collection.AsQueryable(Of C)()
  1445. Where c.X = 1
  1446. Select c).[Single](Function(c) c.Y = 11)
  1447. Assert.AreEqual(1, result.X)
  1448. Assert.AreEqual(11, result.Y)
  1449. End Sub
  1450. <Test()> _
  1451. Public Sub TestSingleWithPredicateNoMatch()
  1452. Dim ex = Assert.Throws(Of InvalidOperationException)(Sub()
  1453. Dim result = (From c In _collection.AsQueryable(Of C)()
  1454. Select c).[Single](Function(c) c.X = 9)
  1455. End Sub)
  1456. Assert.AreEqual(ExpectedErrorMessage.SingleEmptySequence, ex.Message)
  1457. End Sub
  1458. <Test()> _
  1459. Public Sub TestSingleWithPredicateOneMatch()
  1460. Dim result = (From c In _collection.AsQueryable(Of C)()
  1461. Select c).[Single](Function(c) c.X = 3)
  1462. Assert.AreEqual(3, result.X)
  1463. Assert.AreEqual(33, result.Y)
  1464. End Sub
  1465. <Test()> _
  1466. Public Sub TestSingleWithPredicateTwoMatches()
  1467. Dim ex = Assert.Throws(Of InvalidOperationException)(Sub()
  1468. Dim result = (From c In _collection.AsQueryable(Of C)()
  1469. Select c).[Single](Function(c) c.Y = 11)
  1470. End Sub)
  1471. Assert.AreEqual(ExpectedErrorMessage.SingleLongSequence, ex.Message)
  1472. End Sub
  1473. <Test()> _
  1474. <ExpectedException(GetType(InvalidOperationException))> _
  1475. Public Sub TestSingleWithTwoMatches()
  1476. Dim result = (From c In _collection.AsQueryable(Of C)()
  1477. Where c.Y = 11
  1478. Select c).[Single]()
  1479. End Sub
  1480. <Test()> _
  1481. Public Sub TestSkip2()
  1482. Dim query = (From c In _collection.AsQueryable(Of C)()
  1483. Select c).Skip(2)
  1484. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1485. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1486. Assert.AreSame(_collection, translatedQuery.Collection)
  1487. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1488. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1489. Assert.IsNull(selectQuery.Where)
  1490. Assert.IsNull(selectQuery.OrderBy)
  1491. Assert.IsNull(selectQuery.Projection)
  1492. Assert.AreEqual(2, selectQuery.Skip)
  1493. Assert.IsNull(selectQuery.Take)
  1494. Assert.IsNull(selectQuery.BuildQuery())
  1495. Assert.AreEqual(3, Consume(query))
  1496. End Sub
  1497. <Test()> _
  1498. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The SkipWhile query operator is not supported.")> _
  1499. Public Sub TestSkipWhile()
  1500. Dim query = _collection.AsQueryable(Of C)().SkipWhile(Function(c) True)
  1501. query.ToList()
  1502. ' execute query
  1503. End Sub
  1504. <Test()> _
  1505. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Sum query operator is not supported.")> _
  1506. Public Sub TestSum()
  1507. Dim result = (From c In _collection.AsQueryable(Of C)()
  1508. Select 1.0).Sum()
  1509. End Sub
  1510. <Test()> _
  1511. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Sum query operator is not supported.")> _
  1512. Public Sub TestSumNullable()
  1513. Dim result = (From c In _collection.AsQueryable(Of C)()
  1514. Select New Nullable(Of Integer)(1)).Sum()
  1515. End Sub
  1516. <Test()> _
  1517. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Sum query operator is not supported.")> _
  1518. Public Sub TestSumWithSelector()
  1519. Dim result = (From c In _collection.AsQueryable(Of C)()
  1520. Select c).Sum(Function(c) 1.0)
  1521. End Sub
  1522. <Test()> _
  1523. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Sum query operator is not supported.")> _
  1524. Public Sub TestSumWithSelectorNullable()
  1525. Dim result = (From c In _collection.AsQueryable(Of C)()
  1526. Select c).Sum(Function(c) New Nullable(Of Decimal)(1.0))
  1527. End Sub
  1528. <Test()> _
  1529. Public Sub TestTake2()
  1530. Dim query = (From c In _collection.AsQueryable(Of C)()
  1531. Select c).Take(2)
  1532. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1533. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1534. Assert.AreSame(_collection, translatedQuery.Collection)
  1535. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1536. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1537. Assert.IsNull(selectQuery.Where)
  1538. Assert.IsNull(selectQuery.OrderBy)
  1539. Assert.IsNull(selectQuery.Projection)
  1540. Assert.IsNull(selectQuery.Skip)
  1541. Assert.AreEqual(2, selectQuery.Take)
  1542. Assert.IsNull(selectQuery.BuildQuery())
  1543. Assert.AreEqual(2, Consume(query))
  1544. End Sub
  1545. <Test()> _
  1546. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The TakeWhile query operator is not supported.")> _
  1547. Public Sub TestTakeWhile()
  1548. Dim query = _collection.AsQueryable(Of C)().TakeWhile(Function(c) True)
  1549. query.ToList()
  1550. ' execute query
  1551. End Sub
  1552. <Test()> _
  1553. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="ThenBy or ThenByDescending can only be used after OrderBy or OrderByDescending.")> _
  1554. Public Sub TestThenByWithMissingOrderBy()
  1555. ' not sure this could ever happen in real life without deliberate sabotaging like with this cast
  1556. Dim query = DirectCast(_collection.AsQueryable(Of C)(), IOrderedQueryable(Of C)).ThenBy(Function(c) c.X)
  1557. MongoQueryTranslator.Translate(query)
  1558. End Sub
  1559. <Test()> _
  1560. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Union query operator is not supported.")> _
  1561. Public Sub TestUnion()
  1562. Dim source2 = New C(-1) {}
  1563. Dim query = (From c In _collection.AsQueryable(Of C)()
  1564. Select c).Union(source2)
  1565. query.ToList()
  1566. ' execute query
  1567. End Sub
  1568. <Test()> _
  1569. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The Union query operator is not supported.")> _
  1570. Public Sub TestUnionWithEqualityComparer()
  1571. Dim source2 = New C(-1) {}
  1572. Dim query = (From c In _collection.AsQueryable(Of C)()
  1573. Select c).Union(source2, New CEqualityComparer())
  1574. query.ToList()
  1575. ' execute query
  1576. End Sub
  1577. <Test()> _
  1578. Public Sub TestWhereAAny()
  1579. Dim query = From c In _collection.AsQueryable(Of C)()
  1580. Where c.A.Any()
  1581. Select c
  1582. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1583. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1584. Assert.AreSame(_collection, translatedQuery.Collection)
  1585. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1586. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1587. Assert.IsNull(selectQuery.OrderBy)
  1588. Assert.IsNull(selectQuery.Projection)
  1589. Assert.IsNull(selectQuery.Skip)
  1590. Assert.IsNull(selectQuery.Take)
  1591. Assert.AreEqual("{ ""a"" : { ""$ne"" : null, ""$not"" : { ""$size"" : 0 } } }", selectQuery.BuildQuery().ToJson())
  1592. Assert.AreEqual(1, Consume(query))
  1593. End Sub
  1594. <Test()> _
  1595. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="Any is only support for items that serialize into documents. The current serializer is Int32Serializer and must implement IBsonDocumentSerializer for participation in Any queries.")> _
  1596. Public Sub TestWhereAAnyWithPredicate()
  1597. Dim query = From c In _collection.AsQueryable(Of C)()
  1598. Where c.A.Any(Function(a) a > 3)
  1599. Select c
  1600. query.ToList()
  1601. ' execute query
  1602. End Sub
  1603. <Test()> _
  1604. Public Sub TestWhereLocalListContainsX()
  1605. Dim local = New List(Of Integer)() From { _
  1606. 1, _
  1607. 2, _
  1608. 3 _
  1609. }
  1610. Dim query = From c In _collection.AsQueryable(Of C)()
  1611. Where local.Contains(c.X)
  1612. Select c
  1613. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1614. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1615. Assert.AreSame(_collection, translatedQuery.Collection)
  1616. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1617. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1618. Assert.AreEqual("(C c) => System.Collections.Generic.List`1[System.Int32].Contains(c.X)", ExpressionFormatter.ToString(selectQuery.Where))
  1619. Assert.IsNull(selectQuery.OrderBy)
  1620. Assert.IsNull(selectQuery.Projection)
  1621. Assert.IsNull(selectQuery.Skip)
  1622. Assert.IsNull(selectQuery.Take)
  1623. Assert.AreEqual("{ ""x"" : { ""$in"" : [1, 2, 3] } }", selectQuery.BuildQuery().ToJson())
  1624. Assert.AreEqual(3, Consume(query))
  1625. End Sub
  1626. <Test()> _
  1627. Public Sub TestWhereLocalArrayContainsX()
  1628. Dim local = {1, 2, 3}
  1629. Dim query = From c In _collection.AsQueryable(Of C)()
  1630. Where local.Contains(c.X)
  1631. Select c
  1632. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1633. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1634. Assert.AreSame(_collection, translatedQuery.Collection)
  1635. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1636. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1637. Assert.AreEqual("(C c) => Enumerable.Contains<Int32>(Int32[]:{ 1, 2, 3 }, c.X)", ExpressionFormatter.ToString(selectQuery.Where))
  1638. Assert.IsNull(selectQuery.OrderBy)
  1639. Assert.IsNull(selectQuery.Projection)
  1640. Assert.IsNull(selectQuery.Skip)
  1641. Assert.IsNull(selectQuery.Take)
  1642. Assert.AreEqual("{ ""x"" : { ""$in"" : [1, 2, 3] } }", selectQuery.BuildQuery().ToJson())
  1643. Assert.AreEqual(3, Consume(query))
  1644. End Sub
  1645. <Test()> _
  1646. Public Sub TestWhereAContains2()
  1647. Dim query = From c In _collection.AsQueryable(Of C)()
  1648. Where c.A.Contains(2)
  1649. Select c
  1650. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1651. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1652. Assert.AreSame(_collection, translatedQuery.Collection)
  1653. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1654. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1655. Assert.IsNull(selectQuery.OrderBy)
  1656. Assert.IsNull(selectQuery.Projection)
  1657. Assert.IsNull(selectQuery.Skip)
  1658. Assert.IsNull(selectQuery.Take)
  1659. Assert.AreEqual("{ ""a"" : 2 }", selectQuery.BuildQuery().ToJson())
  1660. Assert.AreEqual(1, Consume(query))
  1661. End Sub
  1662. <Test()> _
  1663. Public Sub TestWhereAContains2Not()
  1664. Dim query = From c In _collection.AsQueryable(Of C)()
  1665. Where Not c.A.Contains(2)
  1666. Select c
  1667. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1668. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1669. Assert.AreSame(_collection, translatedQuery.Collection)
  1670. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1671. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1672. Assert.IsNull(selectQuery.OrderBy)
  1673. Assert.IsNull(selectQuery.Projection)
  1674. Assert.IsNull(selectQuery.Skip)
  1675. Assert.IsNull(selectQuery.Take)
  1676. Assert.AreEqual("{ ""a"" : { ""$ne"" : 2 } }", selectQuery.BuildQuery().ToJson())
  1677. Assert.AreEqual(4, Consume(query))
  1678. End Sub
  1679. <Test()> _
  1680. Public Sub TestWhereAContainsAll()
  1681. Dim query = From c In _collection.AsQueryable(Of C)()
  1682. Where c.A.ContainsAll({2, 3})
  1683. Select c
  1684. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1685. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1686. Assert.AreSame(_collection, translatedQuery.Collection)
  1687. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1688. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1689. Assert.IsNull(selectQuery.OrderBy)
  1690. Assert.IsNull(selectQuery.Projection)
  1691. Assert.IsNull(selectQuery.Skip)
  1692. Assert.IsNull(selectQuery.Take)
  1693. Assert.AreEqual("{ ""a"" : { ""$all"" : [2, 3] } }", selectQuery.BuildQuery().ToJson())
  1694. Assert.AreEqual(1, Consume(query))
  1695. End Sub
  1696. <Test()> _
  1697. Public Sub TestWhereAContainsAllNot()
  1698. Dim query = From c In _collection.AsQueryable(Of C)()
  1699. Where Not c.A.ContainsAll({2, 3})
  1700. Select c
  1701. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1702. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1703. Assert.AreSame(_collection, translatedQuery.Collection)
  1704. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1705. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1706. Assert.IsNull(selectQuery.OrderBy)
  1707. Assert.IsNull(selectQuery.Projection)
  1708. Assert.IsNull(selectQuery.Skip)
  1709. Assert.IsNull(selectQuery.Take)
  1710. Assert.AreEqual("{ ""a"" : { ""$not"" : { ""$all"" : [2, 3] } } }", selectQuery.BuildQuery().ToJson())
  1711. Assert.AreEqual(4, Consume(query))
  1712. End Sub
  1713. <Test()> _
  1714. Public Sub TestWhereAContainsAny()
  1715. Dim query = From c In _collection.AsQueryable(Of C)()
  1716. Where c.A.ContainsAny({2, 3})
  1717. Select c
  1718. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1719. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1720. Assert.AreSame(_collection, translatedQuery.Collection)
  1721. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1722. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1723. Assert.IsNull(selectQuery.OrderBy)
  1724. Assert.IsNull(selectQuery.Projection)
  1725. Assert.IsNull(selectQuery.Skip)
  1726. Assert.IsNull(selectQuery.Take)
  1727. Assert.AreEqual("{ ""a"" : { ""$in"" : [2, 3] } }", selectQuery.BuildQuery().ToJson())
  1728. Assert.AreEqual(1, Consume(query))
  1729. End Sub
  1730. <Test()> _
  1731. Public Sub TestWhereAContainsAnyNot()
  1732. Dim query = From c In _collection.AsQueryable(Of C)()
  1733. Where Not c.A.ContainsAny({1, 2})
  1734. Select c
  1735. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1736. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1737. Assert.AreSame(_collection, translatedQuery.Collection)
  1738. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1739. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1740. Assert.IsNull(selectQuery.OrderBy)
  1741. Assert.IsNull(selectQuery.Projection)
  1742. Assert.IsNull(selectQuery.Skip)
  1743. Assert.IsNull(selectQuery.Take)
  1744. Assert.AreEqual("{ ""a"" : { ""$nin"" : [1, 2] } }", selectQuery.BuildQuery().ToJson())
  1745. Assert.AreEqual(4, Consume(query))
  1746. End Sub
  1747. <Test()> _
  1748. Public Sub TestWhereAExistsFalse()
  1749. Dim query__1 = From c In _collection.AsQueryable(Of C)()
  1750. Where Query.NotExists("a").Inject()
  1751. Select c
  1752. Dim translatedQuery = MongoQueryTranslator.Translate(query__1)
  1753. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1754. Assert.AreSame(_collection, translatedQuery.Collection)
  1755. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1756. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1757. Assert.IsNull(selectQuery.OrderBy)
  1758. Assert.IsNull(selectQuery.Projection)
  1759. Assert.IsNull(selectQuery.Skip)
  1760. Assert.IsNull(selectQuery.Take)
  1761. Assert.AreEqual("{ ""a"" : { ""$exists"" : false } }", selectQuery.BuildQuery().ToJson())
  1762. Assert.AreEqual(4, Consume(query__1))
  1763. End Sub
  1764. <Test()> _
  1765. Public Sub TestWhereAExistsTrue()
  1766. Dim query__1 = From c In _collection.AsQueryable(Of C)()
  1767. Where Query.Exists("a").Inject()
  1768. Select c
  1769. Dim translatedQuery = MongoQueryTranslator.Translate(query__1)
  1770. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1771. Assert.AreSame(_collection, translatedQuery.Collection)
  1772. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1773. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1774. Assert.IsNull(selectQuery.OrderBy)
  1775. Assert.IsNull(selectQuery.Projection)
  1776. Assert.IsNull(selectQuery.Skip)
  1777. Assert.IsNull(selectQuery.Take)
  1778. Assert.AreEqual("{ ""a"" : { ""$exists"" : true } }", selectQuery.BuildQuery().ToJson())
  1779. Assert.AreEqual(1, Consume(query__1))
  1780. End Sub
  1781. <Test()> _
  1782. Public Sub TestWhereAExistsTrueNot()
  1783. Dim query__1 = From c In _collection.AsQueryable(Of C)()
  1784. Where Not Query.Exists("a").Inject()
  1785. Select c
  1786. Dim translatedQuery = MongoQueryTranslator.Translate(query__1)
  1787. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1788. Assert.AreSame(_collection, translatedQuery.Collection)
  1789. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1790. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1791. Assert.IsNull(selectQuery.OrderBy)
  1792. Assert.IsNull(selectQuery.Projection)
  1793. Assert.IsNull(selectQuery.Skip)
  1794. Assert.IsNull(selectQuery.Take)
  1795. Assert.AreEqual("{ ""a"" : { ""$exists"" : false } }", selectQuery.BuildQuery().ToJson())
  1796. Assert.AreEqual(4, Consume(query__1))
  1797. End Sub
  1798. <Test()> _
  1799. Public Sub TestWhereALengthEquals3()
  1800. Dim query = From c In _collection.AsQueryable(Of C)()
  1801. Where c.A.Length = 3
  1802. Select c
  1803. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1804. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1805. Assert.AreSame(_collection, translatedQuery.Collection)
  1806. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1807. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1808. Assert.IsNull(selectQuery.OrderBy)
  1809. Assert.IsNull(selectQuery.Projection)
  1810. Assert.IsNull(selectQuery.Skip)
  1811. Assert.IsNull(selectQuery.Take)
  1812. Assert.AreEqual("{ ""a"" : { ""$size"" : 3 } }", selectQuery.BuildQuery().ToJson())
  1813. Assert.AreEqual(1, Consume(query))
  1814. End Sub
  1815. <Test()> _
  1816. Public Sub TestWhereALengthEquals3Not()
  1817. Dim query = From c In _collection.AsQueryable(Of C)()
  1818. Where Not (c.A.Length = 3)
  1819. Select c
  1820. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1821. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1822. Assert.AreSame(_collection, translatedQuery.Collection)
  1823. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1824. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1825. Assert.IsNull(selectQuery.OrderBy)
  1826. Assert.IsNull(selectQuery.Projection)
  1827. Assert.IsNull(selectQuery.Skip)
  1828. Assert.IsNull(selectQuery.Take)
  1829. Assert.AreEqual("{ ""a"" : { ""$not"" : { ""$size"" : 3 } } }", selectQuery.BuildQuery().ToJson())
  1830. Assert.AreEqual(4, Consume(query))
  1831. End Sub
  1832. <Test()> _
  1833. Public Sub TestWhereALengthEquals3Reversed()
  1834. Dim query = From c In _collection.AsQueryable(Of C)()
  1835. Where 3 = c.A.Length
  1836. Select c
  1837. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1838. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1839. Assert.AreSame(_collection, translatedQuery.Collection)
  1840. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1841. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1842. Assert.IsNull(selectQuery.OrderBy)
  1843. Assert.IsNull(selectQuery.Projection)
  1844. Assert.IsNull(selectQuery.Skip)
  1845. Assert.IsNull(selectQuery.Take)
  1846. Assert.AreEqual("{ ""a"" : { ""$size"" : 3 } }", selectQuery.BuildQuery().ToJson())
  1847. Assert.AreEqual(1, Consume(query))
  1848. End Sub
  1849. <Test()> _
  1850. Public Sub TestWhereALengthNotEquals3()
  1851. Dim query = From c In _collection.AsQueryable(Of C)()
  1852. Where c.A.Length <> 3
  1853. Select c
  1854. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1855. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1856. Assert.AreSame(_collection, translatedQuery.Collection)
  1857. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1858. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1859. Assert.IsNull(selectQuery.OrderBy)
  1860. Assert.IsNull(selectQuery.Projection)
  1861. Assert.IsNull(selectQuery.Skip)
  1862. Assert.IsNull(selectQuery.Take)
  1863. Assert.AreEqual("{ ""a"" : { ""$not"" : { ""$size"" : 3 } } }", selectQuery.BuildQuery().ToJson())
  1864. Assert.AreEqual(4, Consume(query))
  1865. End Sub
  1866. <Test()> _
  1867. Public Sub TestWhereALengthNotEquals3Not()
  1868. Dim query = From c In _collection.AsQueryable(Of C)()
  1869. Where Not (c.A.Length <> 3)
  1870. Select c
  1871. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1872. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1873. Assert.AreSame(_collection, translatedQuery.Collection)
  1874. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1875. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1876. Assert.IsNull(selectQuery.OrderBy)
  1877. Assert.IsNull(selectQuery.Projection)
  1878. Assert.IsNull(selectQuery.Skip)
  1879. Assert.IsNull(selectQuery.Take)
  1880. Assert.AreEqual("{ ""a"" : { ""$size"" : 3 } }", selectQuery.BuildQuery().ToJson())
  1881. Assert.AreEqual(1, Consume(query))
  1882. End Sub
  1883. <Test()> _
  1884. Public Sub TestWhereASub1Equals3()
  1885. Dim query = From c In _collection.AsQueryable(Of C)()
  1886. Where c.A(1) = 3
  1887. Select c
  1888. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1889. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1890. Assert.AreSame(_collection, translatedQuery.Collection)
  1891. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1892. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1893. Assert.IsNull(selectQuery.OrderBy)
  1894. Assert.IsNull(selectQuery.Projection)
  1895. Assert.IsNull(selectQuery.Skip)
  1896. Assert.IsNull(selectQuery.Take)
  1897. Assert.AreEqual("{ ""a.1"" : 3 }", selectQuery.BuildQuery().ToJson())
  1898. Assert.AreEqual(1, Consume(query))
  1899. End Sub
  1900. <Test()> _
  1901. Public Sub TestWhereASub1Equals3Not()
  1902. Dim query = From c In _collection.AsQueryable(Of C)()
  1903. Where Not (c.A(1) = 3)
  1904. Select c
  1905. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1906. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1907. Assert.AreSame(_collection, translatedQuery.Collection)
  1908. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1909. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1910. Assert.IsNull(selectQuery.OrderBy)
  1911. Assert.IsNull(selectQuery.Projection)
  1912. Assert.IsNull(selectQuery.Skip)
  1913. Assert.IsNull(selectQuery.Take)
  1914. Assert.AreEqual("{ ""a.1"" : { ""$ne"" : 3 } }", selectQuery.BuildQuery().ToJson())
  1915. Assert.AreEqual(4, Consume(query))
  1916. End Sub
  1917. <Test()> _
  1918. Public Sub TestWhereASub1ModTwoEquals1()
  1919. Dim query = From c In _collection.AsQueryable(Of C)()
  1920. Where c.A(1) Mod 2 = 1
  1921. Select c
  1922. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1923. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1924. Assert.AreSame(_collection, translatedQuery.Collection)
  1925. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1926. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1927. Assert.IsNull(selectQuery.OrderBy)
  1928. Assert.IsNull(selectQuery.Projection)
  1929. Assert.IsNull(selectQuery.Skip)
  1930. Assert.IsNull(selectQuery.Take)
  1931. Assert.AreEqual("{ ""a.1"" : { ""$mod"" : [2, 1] } }", selectQuery.BuildQuery().ToJson())
  1932. Assert.AreEqual(1, Consume(query))
  1933. End Sub
  1934. <Test()> _
  1935. Public Sub TestWhereASub1ModTwoEquals1Not()
  1936. Dim query = From c In _collection.AsQueryable(Of C)()
  1937. Where Not (c.A(1) Mod 2 = 1)
  1938. Select c
  1939. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1940. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1941. Assert.AreSame(_collection, translatedQuery.Collection)
  1942. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1943. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1944. Assert.IsNull(selectQuery.OrderBy)
  1945. Assert.IsNull(selectQuery.Projection)
  1946. Assert.IsNull(selectQuery.Skip)
  1947. Assert.IsNull(selectQuery.Take)
  1948. Assert.AreEqual("{ ""a.1"" : { ""$not"" : { ""$mod"" : [2, 1] } } }", selectQuery.BuildQuery().ToJson())
  1949. Assert.AreEqual(4, Consume(query))
  1950. End Sub
  1951. <Test()> _
  1952. Public Sub TestWhereASub1ModTwoNotEquals1()
  1953. Dim query = From c In _collection.AsQueryable(Of C)()
  1954. Where c.A(1) Mod 2 <> 1
  1955. Select c
  1956. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1957. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1958. Assert.AreSame(_collection, translatedQuery.Collection)
  1959. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1960. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1961. Assert.IsNull(selectQuery.OrderBy)
  1962. Assert.IsNull(selectQuery.Projection)
  1963. Assert.IsNull(selectQuery.Skip)
  1964. Assert.IsNull(selectQuery.Take)
  1965. Assert.AreEqual("{ ""a.1"" : { ""$not"" : { ""$mod"" : [2, 1] } } }", selectQuery.BuildQuery().ToJson())
  1966. Assert.AreEqual(4, Consume(query))
  1967. End Sub
  1968. <Test()> _
  1969. Public Sub TestWhereASub1ModTwoNotEquals1Not()
  1970. Dim query = From c In _collection.AsQueryable(Of C)()
  1971. Where Not (c.A(1) Mod 2 <> 1)
  1972. Select c
  1973. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1974. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1975. Assert.AreSame(_collection, translatedQuery.Collection)
  1976. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1977. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1978. Assert.IsNull(selectQuery.OrderBy)
  1979. Assert.IsNull(selectQuery.Projection)
  1980. Assert.IsNull(selectQuery.Skip)
  1981. Assert.IsNull(selectQuery.Take)
  1982. Assert.AreEqual("{ ""a.1"" : { ""$mod"" : [2, 1] } }", selectQuery.BuildQuery().ToJson())
  1983. Assert.AreEqual(1, Consume(query))
  1984. End Sub
  1985. <Test()> _
  1986. Public Sub TestWhereASub1NotEquals3()
  1987. Dim query = From c In _collection.AsQueryable(Of C)()
  1988. Where c.A(1) <> 3
  1989. Select c
  1990. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  1991. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  1992. Assert.AreSame(_collection, translatedQuery.Collection)
  1993. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  1994. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  1995. Assert.IsNull(selectQuery.OrderBy)
  1996. Assert.IsNull(selectQuery.Projection)
  1997. Assert.IsNull(selectQuery.Skip)
  1998. Assert.IsNull(selectQuery.Take)
  1999. Assert.AreEqual("{ ""a.1"" : { ""$ne"" : 3 } }", selectQuery.BuildQuery().ToJson())
  2000. Assert.AreEqual(4, Consume(query))
  2001. End Sub
  2002. <Test()> _
  2003. Public Sub TestWhereASub1NotEquals3Not()
  2004. Dim query = From c In _collection.AsQueryable(Of C)()
  2005. Where Not (c.A(1) <> 3)
  2006. Select c
  2007. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2008. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2009. Assert.AreSame(_collection, translatedQuery.Collection)
  2010. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2011. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2012. Assert.IsNull(selectQuery.OrderBy)
  2013. Assert.IsNull(selectQuery.Projection)
  2014. Assert.IsNull(selectQuery.Skip)
  2015. Assert.IsNull(selectQuery.Take)
  2016. Assert.AreEqual("{ ""a.1"" : 3 }", selectQuery.BuildQuery().ToJson())
  2017. Assert.AreEqual(1, Consume(query))
  2018. End Sub
  2019. <Test()> _
  2020. Public Sub TestWhereB()
  2021. Dim query = From c In _collection.AsQueryable(Of C)()
  2022. Where c.B
  2023. Select c
  2024. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2025. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2026. Assert.AreSame(_collection, translatedQuery.Collection)
  2027. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2028. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2029. Assert.IsNull(selectQuery.OrderBy)
  2030. Assert.IsNull(selectQuery.Projection)
  2031. Assert.IsNull(selectQuery.Skip)
  2032. Assert.IsNull(selectQuery.Take)
  2033. Assert.AreEqual("{ ""b"" : true }", selectQuery.BuildQuery().ToJson())
  2034. Assert.AreEqual(1, Consume(query))
  2035. End Sub
  2036. <Test()> _
  2037. Public Sub TestWhereBASub0()
  2038. Dim query = From c In _collection.AsQueryable(Of C)()
  2039. Where c.BA(0)
  2040. Select c
  2041. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2042. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2043. Assert.AreSame(_collection, translatedQuery.Collection)
  2044. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2045. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2046. Assert.IsNull(selectQuery.OrderBy)
  2047. Assert.IsNull(selectQuery.Projection)
  2048. Assert.IsNull(selectQuery.Skip)
  2049. Assert.IsNull(selectQuery.Take)
  2050. Assert.AreEqual("{ ""ba.0"" : true }", selectQuery.BuildQuery().ToJson())
  2051. Assert.AreEqual(1, Consume(query))
  2052. End Sub
  2053. <Test()> _
  2054. Public Sub TestWhereBASub0EqualsFalse()
  2055. Dim query = From c In _collection.AsQueryable(Of C)()
  2056. Where c.BA(0) = False
  2057. Select c
  2058. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2059. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2060. Assert.AreSame(_collection, translatedQuery.Collection)
  2061. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2062. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2063. Assert.IsNull(selectQuery.OrderBy)
  2064. Assert.IsNull(selectQuery.Projection)
  2065. Assert.IsNull(selectQuery.Skip)
  2066. Assert.IsNull(selectQuery.Take)
  2067. Assert.AreEqual("{ ""ba.0"" : false }", selectQuery.BuildQuery().ToJson())
  2068. Assert.AreEqual(0, Consume(query))
  2069. End Sub
  2070. <Test()> _
  2071. Public Sub TestWhereBASub0EqualsFalseNot()
  2072. Dim query = From c In _collection.AsQueryable(Of C)()
  2073. Where Not (c.BA(0) = False)
  2074. Select c
  2075. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2076. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2077. Assert.AreSame(_collection, translatedQuery.Collection)
  2078. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2079. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2080. Assert.IsNull(selectQuery.OrderBy)
  2081. Assert.IsNull(selectQuery.Projection)
  2082. Assert.IsNull(selectQuery.Skip)
  2083. Assert.IsNull(selectQuery.Take)
  2084. Assert.AreEqual("{ ""ba.0"" : { ""$ne"" : false } }", selectQuery.BuildQuery().ToJson())
  2085. Assert.AreEqual(5, Consume(query))
  2086. End Sub
  2087. <Test()> _
  2088. Public Sub TestWhereBASub0EqualsTrue()
  2089. Dim query = From c In _collection.AsQueryable(Of C)()
  2090. Where c.BA(0) = True
  2091. Select c
  2092. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2093. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2094. Assert.AreSame(_collection, translatedQuery.Collection)
  2095. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2096. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2097. Assert.IsNull(selectQuery.OrderBy)
  2098. Assert.IsNull(selectQuery.Projection)
  2099. Assert.IsNull(selectQuery.Skip)
  2100. Assert.IsNull(selectQuery.Take)
  2101. Assert.AreEqual("{ ""ba.0"" : true }", selectQuery.BuildQuery().ToJson())
  2102. Assert.AreEqual(1, Consume(query))
  2103. End Sub
  2104. <Test()> _
  2105. Public Sub TestWhereBASub0EqualsTrueNot()
  2106. Dim query = From c In _collection.AsQueryable(Of C)()
  2107. Where Not (c.BA(0) = True)
  2108. Select c
  2109. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2110. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2111. Assert.AreSame(_collection, translatedQuery.Collection)
  2112. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2113. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2114. Assert.IsNull(selectQuery.OrderBy)
  2115. Assert.IsNull(selectQuery.Projection)
  2116. Assert.IsNull(selectQuery.Skip)
  2117. Assert.IsNull(selectQuery.Take)
  2118. Assert.AreEqual("{ ""ba.0"" : { ""$ne"" : true } }", selectQuery.BuildQuery().ToJson())
  2119. Assert.AreEqual(4, Consume(query))
  2120. End Sub
  2121. <Test()> _
  2122. Public Sub TestWhereBASub0Not()
  2123. Dim query = From c In _collection.AsQueryable(Of C)()
  2124. Where Not c.BA(0)
  2125. Select c
  2126. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2127. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2128. Assert.AreSame(_collection, translatedQuery.Collection)
  2129. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2130. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2131. Assert.IsNull(selectQuery.OrderBy)
  2132. Assert.IsNull(selectQuery.Projection)
  2133. Assert.IsNull(selectQuery.Skip)
  2134. Assert.IsNull(selectQuery.Take)
  2135. Assert.AreEqual("{ ""ba.0"" : { ""$ne"" : true } }", selectQuery.BuildQuery().ToJson())
  2136. Assert.AreEqual(4, Consume(query))
  2137. End Sub
  2138. <Test()> _
  2139. Public Sub TestWhereBEqualsFalse()
  2140. Dim query = From c In _collection.AsQueryable(Of C)()
  2141. Where c.B = False
  2142. Select c
  2143. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2144. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2145. Assert.AreSame(_collection, translatedQuery.Collection)
  2146. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2147. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2148. Assert.IsNull(selectQuery.OrderBy)
  2149. Assert.IsNull(selectQuery.Projection)
  2150. Assert.IsNull(selectQuery.Skip)
  2151. Assert.IsNull(selectQuery.Take)
  2152. Assert.AreEqual("{ ""b"" : false }", selectQuery.BuildQuery().ToJson())
  2153. Assert.AreEqual(4, Consume(query))
  2154. End Sub
  2155. <Test()> _
  2156. Public Sub TestWhereBEqualsFalseNot()
  2157. Dim query = From c In _collection.AsQueryable(Of C)()
  2158. Where Not (c.B = False)
  2159. Select c
  2160. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2161. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2162. Assert.AreSame(_collection, translatedQuery.Collection)
  2163. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2164. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2165. Assert.IsNull(selectQuery.OrderBy)
  2166. Assert.IsNull(selectQuery.Projection)
  2167. Assert.IsNull(selectQuery.Skip)
  2168. Assert.IsNull(selectQuery.Take)
  2169. Assert.AreEqual("{ ""b"" : { ""$ne"" : false } }", selectQuery.BuildQuery().ToJson())
  2170. Assert.AreEqual(1, Consume(query))
  2171. End Sub
  2172. <Test()> _
  2173. Public Sub TestWhereBEqualsTrue()
  2174. Dim query = From c In _collection.AsQueryable(Of C)()
  2175. Where c.B = True
  2176. Select c
  2177. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2178. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2179. Assert.AreSame(_collection, translatedQuery.Collection)
  2180. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2181. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2182. Assert.IsNull(selectQuery.OrderBy)
  2183. Assert.IsNull(selectQuery.Projection)
  2184. Assert.IsNull(selectQuery.Skip)
  2185. Assert.IsNull(selectQuery.Take)
  2186. Assert.AreEqual("{ ""b"" : true }", selectQuery.BuildQuery().ToJson())
  2187. Assert.AreEqual(1, Consume(query))
  2188. End Sub
  2189. <Test()> _
  2190. Public Sub TestWhereBEqualsTrueNot()
  2191. Dim query = From c In _collection.AsQueryable(Of C)()
  2192. Where Not (c.B = True)
  2193. Select c
  2194. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2195. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2196. Assert.AreSame(_collection, translatedQuery.Collection)
  2197. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2198. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2199. Assert.IsNull(selectQuery.OrderBy)
  2200. Assert.IsNull(selectQuery.Projection)
  2201. Assert.IsNull(selectQuery.Skip)
  2202. Assert.IsNull(selectQuery.Take)
  2203. Assert.AreEqual("{ ""b"" : { ""$ne"" : true } }", selectQuery.BuildQuery().ToJson())
  2204. Assert.AreEqual(4, Consume(query))
  2205. End Sub
  2206. <Test()> _
  2207. Public Sub TestWhereBNot()
  2208. Dim query = From c In _collection.AsQueryable(Of C)()
  2209. Where Not c.B
  2210. Select c
  2211. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2212. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2213. Assert.AreSame(_collection, translatedQuery.Collection)
  2214. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2215. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2216. Assert.IsNull(selectQuery.OrderBy)
  2217. Assert.IsNull(selectQuery.Projection)
  2218. Assert.IsNull(selectQuery.Skip)
  2219. Assert.IsNull(selectQuery.Take)
  2220. Assert.AreEqual("{ ""b"" : { ""$ne"" : true } }", selectQuery.BuildQuery().ToJson())
  2221. Assert.AreEqual(4, Consume(query))
  2222. End Sub
  2223. <Test()> _
  2224. Public Sub TestWhereDAAnyWithPredicate()
  2225. Dim query = From c In _collection.AsQueryable(Of C)()
  2226. Where c.DA.Any(Function(x) x.Z = 333)
  2227. Select c
  2228. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2229. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2230. Assert.AreSame(_collection, translatedQuery.Collection)
  2231. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2232. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2233. Assert.AreEqual("(C c) => Enumerable.Any<D>((IEnumerable<D>)c.DA, (D x) => (x.Z == 333))", ExpressionFormatter.ToString(selectQuery.Where))
  2234. Assert.IsNull(selectQuery.OrderBy)
  2235. Assert.IsNull(selectQuery.Projection)
  2236. Assert.IsNull(selectQuery.Skip)
  2237. Assert.IsNull(selectQuery.Take)
  2238. Assert.AreEqual("{ ""da"" : { ""$elemMatch"" : { ""z"" : 333 } } }", selectQuery.BuildQuery().ToJson())
  2239. Assert.AreEqual(1, Consume(query))
  2240. End Sub
  2241. <Test()> _
  2242. Public Sub TestWhereDBRefCollectionNameEqualsC()
  2243. Dim query = From c In _collection.AsQueryable(Of C)()
  2244. Where c.DBRef.CollectionName = "c"
  2245. Select c
  2246. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2247. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2248. Assert.AreSame(_collection, translatedQuery.Collection)
  2249. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2250. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2251. Assert.IsNull(selectQuery.OrderBy)
  2252. Assert.IsNull(selectQuery.Projection)
  2253. Assert.IsNull(selectQuery.Skip)
  2254. Assert.IsNull(selectQuery.Take)
  2255. Assert.AreEqual("{ ""dbref.$ref"" : ""c"" }", selectQuery.BuildQuery().ToJson())
  2256. Assert.AreEqual(1, Consume(query))
  2257. End Sub
  2258. <Test()> _
  2259. Public Sub TestWhereDBRefDatabaseNameEqualsDb()
  2260. Dim query = From c In _collection.AsQueryable(Of C)()
  2261. Where c.DBRef.DatabaseName = "db"
  2262. Select c
  2263. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2264. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2265. Assert.AreSame(_collection, translatedQuery.Collection)
  2266. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2267. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2268. Assert.IsNull(selectQuery.OrderBy)
  2269. Assert.IsNull(selectQuery.Projection)
  2270. Assert.IsNull(selectQuery.Skip)
  2271. Assert.IsNull(selectQuery.Take)
  2272. Assert.AreEqual("{ ""dbref.$db"" : ""db"" }", selectQuery.BuildQuery().ToJson())
  2273. Assert.AreEqual(1, Consume(query))
  2274. End Sub
  2275. <Test()> _
  2276. Public Sub TestWhereDBRefEquals()
  2277. Dim query = From c In _collection.AsQueryable(Of C)()
  2278. Where c.DBRef = New MongoDBRef("db", "c", 1)
  2279. Select c
  2280. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2281. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2282. Assert.AreSame(_collection, translatedQuery.Collection)
  2283. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2284. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2285. Assert.IsNull(selectQuery.OrderBy)
  2286. Assert.IsNull(selectQuery.Projection)
  2287. Assert.IsNull(selectQuery.Skip)
  2288. Assert.IsNull(selectQuery.Take)
  2289. Assert.AreEqual("{ ""dbref"" : { ""$ref"" : ""c"", ""$id"" : 1, ""$db"" : ""db"" } }", selectQuery.BuildQuery().ToJson())
  2290. Assert.AreEqual(1, Consume(query))
  2291. End Sub
  2292. <Test()> _
  2293. Public Sub TestWhereDBRefEqualsNot()
  2294. Dim query = From c In _collection.AsQueryable(Of C)()
  2295. Where Not (c.DBRef = New MongoDBRef("db", "c", 1))
  2296. Select c
  2297. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2298. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2299. Assert.AreSame(_collection, translatedQuery.Collection)
  2300. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2301. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2302. Assert.IsNull(selectQuery.OrderBy)
  2303. Assert.IsNull(selectQuery.Projection)
  2304. Assert.IsNull(selectQuery.Skip)
  2305. Assert.IsNull(selectQuery.Take)
  2306. Assert.AreEqual("{ ""dbref"" : { ""$ne"" : { ""$ref"" : ""c"", ""$id"" : 1, ""$db"" : ""db"" } } }", selectQuery.BuildQuery().ToJson())
  2307. Assert.AreEqual(4, Consume(query))
  2308. End Sub
  2309. <Test()> _
  2310. Public Sub TestWhereDBRefNotEquals()
  2311. Dim query = From c In _collection.AsQueryable(Of C)()
  2312. Where c.DBRef <> New MongoDBRef("db", "c", 1)
  2313. Select c
  2314. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2315. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2316. Assert.AreSame(_collection, translatedQuery.Collection)
  2317. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2318. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2319. Assert.IsNull(selectQuery.OrderBy)
  2320. Assert.IsNull(selectQuery.Projection)
  2321. Assert.IsNull(selectQuery.Skip)
  2322. Assert.IsNull(selectQuery.Take)
  2323. Assert.AreEqual("{ ""dbref"" : { ""$ne"" : { ""$ref"" : ""c"", ""$id"" : 1, ""$db"" : ""db"" } } }", selectQuery.BuildQuery().ToJson())
  2324. Assert.AreEqual(4, Consume(query))
  2325. End Sub
  2326. <Test()> _
  2327. Public Sub TestWhereDBRefNotEqualsNot()
  2328. Dim query = From c In _collection.AsQueryable(Of C)()
  2329. Where Not (c.DBRef <> New MongoDBRef("db", "c", 1))
  2330. Select c
  2331. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2332. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2333. Assert.AreSame(_collection, translatedQuery.Collection)
  2334. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2335. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2336. Assert.IsNull(selectQuery.OrderBy)
  2337. Assert.IsNull(selectQuery.Projection)
  2338. Assert.IsNull(selectQuery.Skip)
  2339. Assert.IsNull(selectQuery.Take)
  2340. Assert.AreEqual("{ ""dbref"" : { ""$ref"" : ""c"", ""$id"" : 1, ""$db"" : ""db"" } }", selectQuery.BuildQuery().ToJson())
  2341. Assert.AreEqual(1, Consume(query))
  2342. End Sub
  2343. <Test()> _
  2344. Public Sub TestWhereDBRefIdEquals1()
  2345. Dim query = From c In _collection.AsQueryable(Of C)()
  2346. Where c.DBRef.Id = 1
  2347. Select c
  2348. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2349. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2350. Assert.AreSame(_collection, translatedQuery.Collection)
  2351. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2352. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2353. Assert.IsNull(selectQuery.OrderBy)
  2354. Assert.IsNull(selectQuery.Projection)
  2355. Assert.IsNull(selectQuery.Skip)
  2356. Assert.IsNull(selectQuery.Take)
  2357. Assert.AreEqual("{ ""dbref.$id"" : 1 }", selectQuery.BuildQuery().ToJson())
  2358. Assert.AreEqual(1, Consume(query))
  2359. End Sub
  2360. <Test()> _
  2361. Public Sub TestWhereDEquals11()
  2362. Dim query = From c In _collection.AsQueryable(Of C)()
  2363. Where c.D.Equals(New D() With { _
  2364. .Z = 11 _
  2365. })
  2366. Select c
  2367. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2368. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2369. Assert.AreSame(_collection, translatedQuery.Collection)
  2370. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2371. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2372. Assert.IsNull(selectQuery.OrderBy)
  2373. Assert.IsNull(selectQuery.Projection)
  2374. Assert.IsNull(selectQuery.Skip)
  2375. Assert.IsNull(selectQuery.Take)
  2376. Assert.AreEqual("{ ""d"" : { ""z"" : 11 } }", selectQuery.BuildQuery().ToJson())
  2377. Assert.AreEqual(1, Consume(query))
  2378. End Sub
  2379. <Test()> _
  2380. Public Sub TestWhereDEquals11Not()
  2381. Dim query = From c In _collection.AsQueryable(Of C)()
  2382. Where Not (c.D.Equals(New D() With { _
  2383. .Z = 11 _
  2384. }))
  2385. Select c
  2386. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2387. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2388. Assert.AreSame(_collection, translatedQuery.Collection)
  2389. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2390. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2391. Assert.IsNull(selectQuery.OrderBy)
  2392. Assert.IsNull(selectQuery.Projection)
  2393. Assert.IsNull(selectQuery.Skip)
  2394. Assert.IsNull(selectQuery.Take)
  2395. Assert.AreEqual("{ ""d"" : { ""$ne"" : { ""z"" : 11 } } }", selectQuery.BuildQuery().ToJson())
  2396. Assert.AreEqual(4, Consume(query))
  2397. End Sub
  2398. <Test()> _
  2399. Public Sub TestWhereDNotEquals11()
  2400. Dim query = From c In _collection.AsQueryable(Of C)()
  2401. Where Not c.D.Equals(New D() With { _
  2402. .Z = 11 _
  2403. })
  2404. Select c
  2405. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2406. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2407. Assert.AreSame(_collection, translatedQuery.Collection)
  2408. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2409. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2410. Assert.IsNull(selectQuery.OrderBy)
  2411. Assert.IsNull(selectQuery.Projection)
  2412. Assert.IsNull(selectQuery.Skip)
  2413. Assert.IsNull(selectQuery.Take)
  2414. Assert.AreEqual("{ ""d"" : { ""$ne"" : { ""z"" : 11 } } }", selectQuery.BuildQuery().ToJson())
  2415. Assert.AreEqual(4, Consume(query))
  2416. End Sub
  2417. <Test()> _
  2418. Public Sub TestWhereDNotEquals11Not()
  2419. Dim query = From c In _collection.AsQueryable(Of C)()
  2420. Where Not (Not c.D.Equals(New D() With { _
  2421. .Z = 11 _
  2422. }))
  2423. Select c
  2424. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2425. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2426. Assert.AreSame(_collection, translatedQuery.Collection)
  2427. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2428. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2429. Assert.IsNull(selectQuery.OrderBy)
  2430. Assert.IsNull(selectQuery.Projection)
  2431. Assert.IsNull(selectQuery.Skip)
  2432. Assert.IsNull(selectQuery.Take)
  2433. Assert.AreEqual("{ ""d"" : { ""z"" : 11 } }", selectQuery.BuildQuery().ToJson())
  2434. Assert.AreEqual(1, Consume(query))
  2435. End Sub
  2436. <Test()> _
  2437. Public Sub TestWhereEAContainsAll()
  2438. Dim query = From c In _collection.AsQueryable(Of C)()
  2439. Where c.EA.ContainsAll(New E() {E.A, E.B})
  2440. Select c
  2441. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2442. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2443. Assert.AreSame(_collection, translatedQuery.Collection)
  2444. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2445. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2446. Assert.IsNull(selectQuery.OrderBy)
  2447. Assert.IsNull(selectQuery.Projection)
  2448. Assert.IsNull(selectQuery.Skip)
  2449. Assert.IsNull(selectQuery.Take)
  2450. Assert.AreEqual("{ ""ea"" : { ""$all"" : [1, 2] } }", selectQuery.BuildQuery().ToJson())
  2451. Assert.AreEqual(1, Consume(query))
  2452. End Sub
  2453. <Test()> _
  2454. Public Sub TestWhereEAContainsAllNot()
  2455. Dim query = From c In _collection.AsQueryable(Of C)()
  2456. Where Not c.EA.ContainsAll(New E() {E.A, E.B})
  2457. Select c
  2458. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2459. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2460. Assert.AreSame(_collection, translatedQuery.Collection)
  2461. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2462. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2463. Assert.IsNull(selectQuery.OrderBy)
  2464. Assert.IsNull(selectQuery.Projection)
  2465. Assert.IsNull(selectQuery.Skip)
  2466. Assert.IsNull(selectQuery.Take)
  2467. Assert.AreEqual("{ ""ea"" : { ""$not"" : { ""$all"" : [1, 2] } } }", selectQuery.BuildQuery().ToJson())
  2468. Assert.AreEqual(4, Consume(query))
  2469. End Sub
  2470. <Test()> _
  2471. Public Sub TestWhereEAContainsAny()
  2472. Dim query = From c In _collection.AsQueryable(Of C)()
  2473. Where c.EA.ContainsAny({E.A, E.B})
  2474. Select c
  2475. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2476. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2477. Assert.AreSame(_collection, translatedQuery.Collection)
  2478. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2479. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2480. Assert.IsNull(selectQuery.OrderBy)
  2481. Assert.IsNull(selectQuery.Projection)
  2482. Assert.IsNull(selectQuery.Skip)
  2483. Assert.IsNull(selectQuery.Take)
  2484. Assert.AreEqual("{ ""ea"" : { ""$in"" : [1, 2] } }", selectQuery.BuildQuery().ToJson())
  2485. Assert.AreEqual(1, Consume(query))
  2486. End Sub
  2487. <Test()> _
  2488. Public Sub TestWhereEAContainsAnyNot()
  2489. Dim query = From c In _collection.AsQueryable(Of C)()
  2490. Where Not c.EA.ContainsAny({E.A, E.B})
  2491. Select c
  2492. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2493. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2494. Assert.AreSame(_collection, translatedQuery.Collection)
  2495. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2496. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2497. Assert.IsNull(selectQuery.OrderBy)
  2498. Assert.IsNull(selectQuery.Projection)
  2499. Assert.IsNull(selectQuery.Skip)
  2500. Assert.IsNull(selectQuery.Take)
  2501. Assert.AreEqual("{ ""ea"" : { ""$nin"" : [1, 2] } }", selectQuery.BuildQuery().ToJson())
  2502. Assert.AreEqual(4, Consume(query))
  2503. End Sub
  2504. <Test()> _
  2505. Public Sub TestWhereEAContainsB()
  2506. Dim query = From c In _collection.AsQueryable(Of C)()
  2507. Where c.EA.Contains(E.B)
  2508. Select c
  2509. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2510. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2511. Assert.AreSame(_collection, translatedQuery.Collection)
  2512. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2513. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2514. Assert.IsNull(selectQuery.OrderBy)
  2515. Assert.IsNull(selectQuery.Projection)
  2516. Assert.IsNull(selectQuery.Skip)
  2517. Assert.IsNull(selectQuery.Take)
  2518. Assert.AreEqual("{ ""ea"" : 2 }", selectQuery.BuildQuery().ToJson())
  2519. Assert.AreEqual(1, Consume(query))
  2520. End Sub
  2521. <Test()> _
  2522. Public Sub TestWhereEAContainsBNot()
  2523. Dim query = From c In _collection.AsQueryable(Of C)()
  2524. Where Not c.EA.Contains(E.B)
  2525. Select c
  2526. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2527. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2528. Assert.AreSame(_collection, translatedQuery.Collection)
  2529. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2530. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2531. Assert.IsNull(selectQuery.OrderBy)
  2532. Assert.IsNull(selectQuery.Projection)
  2533. Assert.IsNull(selectQuery.Skip)
  2534. Assert.IsNull(selectQuery.Take)
  2535. Assert.AreEqual("{ ""ea"" : { ""$ne"" : 2 } }", selectQuery.BuildQuery().ToJson())
  2536. Assert.AreEqual(4, Consume(query))
  2537. End Sub
  2538. <Test()> _
  2539. Public Sub TestWhereEASub0EqualsA()
  2540. Dim query = From c In _collection.AsQueryable(Of C)()
  2541. Where c.EA(0) = E.A
  2542. Select c
  2543. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2544. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2545. Assert.AreSame(_collection, translatedQuery.Collection)
  2546. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2547. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2548. Assert.IsNull(selectQuery.OrderBy)
  2549. Assert.IsNull(selectQuery.Projection)
  2550. Assert.IsNull(selectQuery.Skip)
  2551. Assert.IsNull(selectQuery.Take)
  2552. Assert.AreEqual("{ ""ea.0"" : 1 }", selectQuery.BuildQuery().ToJson())
  2553. Assert.AreEqual(1, Consume(query))
  2554. End Sub
  2555. <Test()> _
  2556. Public Sub TestWhereEASub0EqualsANot()
  2557. Dim query = From c In _collection.AsQueryable(Of C)()
  2558. Where Not (c.EA(0) = E.A)
  2559. Select c
  2560. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2561. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2562. Assert.AreSame(_collection, translatedQuery.Collection)
  2563. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2564. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2565. Assert.IsNull(selectQuery.OrderBy)
  2566. Assert.IsNull(selectQuery.Projection)
  2567. Assert.IsNull(selectQuery.Skip)
  2568. Assert.IsNull(selectQuery.Take)
  2569. Assert.AreEqual("{ ""ea.0"" : { ""$ne"" : 1 } }", selectQuery.BuildQuery().ToJson())
  2570. Assert.AreEqual(4, Consume(query))
  2571. End Sub
  2572. <Test()> _
  2573. Public Sub TestWhereEASub0NotEqualsA()
  2574. Dim query = From c In _collection.AsQueryable(Of C)()
  2575. Where c.EA(0) <> E.A
  2576. Select c
  2577. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2578. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2579. Assert.AreSame(_collection, translatedQuery.Collection)
  2580. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2581. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2582. Assert.IsNull(selectQuery.OrderBy)
  2583. Assert.IsNull(selectQuery.Projection)
  2584. Assert.IsNull(selectQuery.Skip)
  2585. Assert.IsNull(selectQuery.Take)
  2586. Assert.AreEqual("{ ""ea.0"" : { ""$ne"" : 1 } }", selectQuery.BuildQuery().ToJson())
  2587. Assert.AreEqual(4, Consume(query))
  2588. End Sub
  2589. <Test()> _
  2590. Public Sub TestWhereEASub0NotEqualsANot()
  2591. Dim query = From c In _collection.AsQueryable(Of C)()
  2592. Where Not (c.EA(0) <> E.A)
  2593. Select c
  2594. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2595. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2596. Assert.AreSame(_collection, translatedQuery.Collection)
  2597. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2598. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2599. Assert.IsNull(selectQuery.OrderBy)
  2600. Assert.IsNull(selectQuery.Projection)
  2601. Assert.IsNull(selectQuery.Skip)
  2602. Assert.IsNull(selectQuery.Take)
  2603. Assert.AreEqual("{ ""ea.0"" : 1 }", selectQuery.BuildQuery().ToJson())
  2604. Assert.AreEqual(1, Consume(query))
  2605. End Sub
  2606. <Test()> _
  2607. Public Sub TestWhereEEqualsA()
  2608. Dim query = From c In _collection.AsQueryable(Of C)()
  2609. Where c.E = E.A
  2610. Select c
  2611. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2612. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2613. Assert.AreSame(_collection, translatedQuery.Collection)
  2614. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2615. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2616. Assert.IsNull(selectQuery.OrderBy)
  2617. Assert.IsNull(selectQuery.Projection)
  2618. Assert.IsNull(selectQuery.Skip)
  2619. Assert.IsNull(selectQuery.Take)
  2620. Assert.AreEqual("{ ""e"" : ""A"" }", selectQuery.BuildQuery().ToJson())
  2621. Assert.AreEqual(1, Consume(query))
  2622. End Sub
  2623. <Test()> _
  2624. Public Sub TestWhereEEqualsANot()
  2625. Dim query = From c In _collection.AsQueryable(Of C)()
  2626. Where Not (c.E = E.A)
  2627. Select c
  2628. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2629. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2630. Assert.AreSame(_collection, translatedQuery.Collection)
  2631. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2632. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2633. Assert.IsNull(selectQuery.OrderBy)
  2634. Assert.IsNull(selectQuery.Projection)
  2635. Assert.IsNull(selectQuery.Skip)
  2636. Assert.IsNull(selectQuery.Take)
  2637. Assert.AreEqual("{ ""e"" : { ""$ne"" : ""A"" } }", selectQuery.BuildQuery().ToJson())
  2638. Assert.AreEqual(4, Consume(query))
  2639. End Sub
  2640. <Test()> _
  2641. Public Sub TestWhereEEqualsAReversed()
  2642. Dim query = From c In _collection.AsQueryable(Of C)()
  2643. Where E.A = c.E
  2644. Select c
  2645. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2646. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2647. Assert.AreSame(_collection, translatedQuery.Collection)
  2648. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2649. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2650. Assert.IsNull(selectQuery.OrderBy)
  2651. Assert.IsNull(selectQuery.Projection)
  2652. Assert.IsNull(selectQuery.Skip)
  2653. Assert.IsNull(selectQuery.Take)
  2654. Assert.AreEqual("{ ""e"" : ""A"" }", selectQuery.BuildQuery().ToJson())
  2655. Assert.AreEqual(1, Consume(query))
  2656. End Sub
  2657. <Test()> _
  2658. Public Sub TestWhereEInAOrB()
  2659. Dim query = From c In _collection.AsQueryable(Of C)()
  2660. Where c.E.In({E.A, E.B})
  2661. Select c
  2662. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2663. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2664. Assert.AreSame(_collection, translatedQuery.Collection)
  2665. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2666. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2667. Assert.IsNull(selectQuery.OrderBy)
  2668. Assert.IsNull(selectQuery.Projection)
  2669. Assert.IsNull(selectQuery.Skip)
  2670. Assert.IsNull(selectQuery.Take)
  2671. Assert.AreEqual("{ ""e"" : { ""$in"" : [""A"", ""B""] } }", selectQuery.BuildQuery().ToJson())
  2672. Assert.AreEqual(1, Consume(query))
  2673. End Sub
  2674. <Test()> _
  2675. Public Sub TestWhereEInAOrBNot()
  2676. Dim query = From c In _collection.AsQueryable(Of C)()
  2677. Where Not c.E.In({E.A, E.B})
  2678. Select c
  2679. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2680. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2681. Assert.AreSame(_collection, translatedQuery.Collection)
  2682. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2683. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2684. Assert.IsNull(selectQuery.OrderBy)
  2685. Assert.IsNull(selectQuery.Projection)
  2686. Assert.IsNull(selectQuery.Skip)
  2687. Assert.IsNull(selectQuery.Take)
  2688. Assert.AreEqual("{ ""e"" : { ""$nin"" : [""A"", ""B""] } }", selectQuery.BuildQuery().ToJson())
  2689. Assert.AreEqual(4, Consume(query))
  2690. End Sub
  2691. <Test()> _
  2692. Public Sub TestWhereENotEqualsA()
  2693. Dim query = From c In _collection.AsQueryable(Of C)()
  2694. Where c.E <> E.A
  2695. Select c
  2696. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2697. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2698. Assert.AreSame(_collection, translatedQuery.Collection)
  2699. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2700. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2701. Assert.IsNull(selectQuery.OrderBy)
  2702. Assert.IsNull(selectQuery.Projection)
  2703. Assert.IsNull(selectQuery.Skip)
  2704. Assert.IsNull(selectQuery.Take)
  2705. Assert.AreEqual("{ ""e"" : { ""$ne"" : ""A"" } }", selectQuery.BuildQuery().ToJson())
  2706. Assert.AreEqual(4, Consume(query))
  2707. End Sub
  2708. <Test()> _
  2709. Public Sub TestWhereENotEqualsANot()
  2710. Dim query = From c In _collection.AsQueryable(Of C)()
  2711. Where Not (c.E <> E.A)
  2712. Select c
  2713. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2714. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2715. Assert.AreSame(_collection, translatedQuery.Collection)
  2716. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2717. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2718. Assert.IsNull(selectQuery.OrderBy)
  2719. Assert.IsNull(selectQuery.Projection)
  2720. Assert.IsNull(selectQuery.Skip)
  2721. Assert.IsNull(selectQuery.Take)
  2722. Assert.AreEqual("{ ""e"" : ""A"" }", selectQuery.BuildQuery().ToJson())
  2723. Assert.AreEqual(1, Consume(query))
  2724. End Sub
  2725. <Test()> _
  2726. Public Sub TestWhereLContains2()
  2727. Dim query = From c In _collection.AsQueryable(Of C)()
  2728. Where c.L.Contains(2)
  2729. Select c
  2730. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2731. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2732. Assert.AreSame(_collection, translatedQuery.Collection)
  2733. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2734. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2735. Assert.IsNull(selectQuery.OrderBy)
  2736. Assert.IsNull(selectQuery.Projection)
  2737. Assert.IsNull(selectQuery.Skip)
  2738. Assert.IsNull(selectQuery.Take)
  2739. Assert.AreEqual("{ ""l"" : 2 }", selectQuery.BuildQuery().ToJson())
  2740. Assert.AreEqual(1, Consume(query))
  2741. End Sub
  2742. <Test()> _
  2743. Public Sub TestWhereLContains2Not()
  2744. Dim query = From c In _collection.AsQueryable(Of C)()
  2745. Where Not c.L.Contains(2)
  2746. Select c
  2747. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2748. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2749. Assert.AreSame(_collection, translatedQuery.Collection)
  2750. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2751. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2752. Assert.IsNull(selectQuery.OrderBy)
  2753. Assert.IsNull(selectQuery.Projection)
  2754. Assert.IsNull(selectQuery.Skip)
  2755. Assert.IsNull(selectQuery.Take)
  2756. Assert.AreEqual("{ ""l"" : { ""$ne"" : 2 } }", selectQuery.BuildQuery().ToJson())
  2757. Assert.AreEqual(4, Consume(query))
  2758. End Sub
  2759. <Test()> _
  2760. Public Sub TestWhereLContainsAll()
  2761. Dim query = From c In _collection.AsQueryable(Of C)()
  2762. Where c.L.ContainsAll({2, 3})
  2763. Select c
  2764. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2765. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2766. Assert.AreSame(_collection, translatedQuery.Collection)
  2767. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2768. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2769. Assert.IsNull(selectQuery.OrderBy)
  2770. Assert.IsNull(selectQuery.Projection)
  2771. Assert.IsNull(selectQuery.Skip)
  2772. Assert.IsNull(selectQuery.Take)
  2773. Assert.AreEqual("{ ""l"" : { ""$all"" : [2, 3] } }", selectQuery.BuildQuery().ToJson())
  2774. Assert.AreEqual(1, Consume(query))
  2775. End Sub
  2776. <Test()> _
  2777. Public Sub TestWhereLContainsAllNot()
  2778. Dim query = From c In _collection.AsQueryable(Of C)()
  2779. Where Not c.L.ContainsAll({2, 3})
  2780. Select c
  2781. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2782. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2783. Assert.AreSame(_collection, translatedQuery.Collection)
  2784. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2785. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2786. Assert.IsNull(selectQuery.OrderBy)
  2787. Assert.IsNull(selectQuery.Projection)
  2788. Assert.IsNull(selectQuery.Skip)
  2789. Assert.IsNull(selectQuery.Take)
  2790. Assert.AreEqual("{ ""l"" : { ""$not"" : { ""$all"" : [2, 3] } } }", selectQuery.BuildQuery().ToJson())
  2791. Assert.AreEqual(4, Consume(query))
  2792. End Sub
  2793. <Test()> _
  2794. Public Sub TestWhereLContainsAny()
  2795. Dim query = From c In _collection.AsQueryable(Of C)()
  2796. Where c.L.ContainsAny({2, 3})
  2797. Select c
  2798. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2799. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2800. Assert.AreSame(_collection, translatedQuery.Collection)
  2801. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2802. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2803. Assert.IsNull(selectQuery.OrderBy)
  2804. Assert.IsNull(selectQuery.Projection)
  2805. Assert.IsNull(selectQuery.Skip)
  2806. Assert.IsNull(selectQuery.Take)
  2807. Assert.AreEqual("{ ""l"" : { ""$in"" : [2, 3] } }", selectQuery.BuildQuery().ToJson())
  2808. Assert.AreEqual(1, Consume(query))
  2809. End Sub
  2810. <Test()> _
  2811. Public Sub TestWhereLContainsAnyNot()
  2812. Dim query = From c In _collection.AsQueryable(Of C)()
  2813. Where Not c.L.ContainsAny({1, 2})
  2814. Select c
  2815. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2816. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2817. Assert.AreSame(_collection, translatedQuery.Collection)
  2818. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2819. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2820. Assert.IsNull(selectQuery.OrderBy)
  2821. Assert.IsNull(selectQuery.Projection)
  2822. Assert.IsNull(selectQuery.Skip)
  2823. Assert.IsNull(selectQuery.Take)
  2824. Assert.AreEqual("{ ""l"" : { ""$nin"" : [1, 2] } }", selectQuery.BuildQuery().ToJson())
  2825. Assert.AreEqual(4, Consume(query))
  2826. End Sub
  2827. <Test()> _
  2828. Public Sub TestWhereLExistsFalse()
  2829. Dim query__1 = From c In _collection.AsQueryable(Of C)()
  2830. Where Query.NotExists("l").Inject()
  2831. Select c
  2832. Dim translatedQuery = MongoQueryTranslator.Translate(query__1)
  2833. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2834. Assert.AreSame(_collection, translatedQuery.Collection)
  2835. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2836. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2837. Assert.IsNull(selectQuery.OrderBy)
  2838. Assert.IsNull(selectQuery.Projection)
  2839. Assert.IsNull(selectQuery.Skip)
  2840. Assert.IsNull(selectQuery.Take)
  2841. Assert.AreEqual("{ ""l"" : { ""$exists"" : false } }", selectQuery.BuildQuery().ToJson())
  2842. Assert.AreEqual(4, Consume(query__1))
  2843. End Sub
  2844. <Test()> _
  2845. Public Sub TestWhereLExistsTrue()
  2846. Dim query__1 = From c In _collection.AsQueryable(Of C)()
  2847. Where Query.Exists("l").Inject()
  2848. Select c
  2849. Dim translatedQuery = MongoQueryTranslator.Translate(query__1)
  2850. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2851. Assert.AreSame(_collection, translatedQuery.Collection)
  2852. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2853. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2854. Assert.IsNull(selectQuery.OrderBy)
  2855. Assert.IsNull(selectQuery.Projection)
  2856. Assert.IsNull(selectQuery.Skip)
  2857. Assert.IsNull(selectQuery.Take)
  2858. Assert.AreEqual("{ ""l"" : { ""$exists"" : true } }", selectQuery.BuildQuery().ToJson())
  2859. Assert.AreEqual(1, Consume(query__1))
  2860. End Sub
  2861. <Test()> _
  2862. Public Sub TestWhereLExistsTrueNot()
  2863. Dim query__1 = From c In _collection.AsQueryable(Of C)()
  2864. Where Not Query.Exists("l").Inject()
  2865. Select c
  2866. Dim translatedQuery = MongoQueryTranslator.Translate(query__1)
  2867. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2868. Assert.AreSame(_collection, translatedQuery.Collection)
  2869. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2870. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2871. Assert.IsNull(selectQuery.OrderBy)
  2872. Assert.IsNull(selectQuery.Projection)
  2873. Assert.IsNull(selectQuery.Skip)
  2874. Assert.IsNull(selectQuery.Take)
  2875. Assert.AreEqual("{ ""l"" : { ""$exists"" : false } }", selectQuery.BuildQuery().ToJson())
  2876. Assert.AreEqual(4, Consume(query__1))
  2877. End Sub
  2878. <Test()> _
  2879. Public Sub TestWhereLCountMethodEquals3()
  2880. Dim query = From c In _collection.AsQueryable(Of C)()
  2881. Where c.L.Count() = 3
  2882. Select c
  2883. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2884. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2885. Assert.AreSame(_collection, translatedQuery.Collection)
  2886. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2887. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2888. Assert.IsNull(selectQuery.OrderBy)
  2889. Assert.IsNull(selectQuery.Projection)
  2890. Assert.IsNull(selectQuery.Skip)
  2891. Assert.IsNull(selectQuery.Take)
  2892. Assert.AreEqual("{ ""l"" : { ""$size"" : 3 } }", selectQuery.BuildQuery().ToJson())
  2893. Assert.AreEqual(1, Consume(query))
  2894. End Sub
  2895. <Test()> _
  2896. Public Sub TestWhereLCountMethodEquals3Not()
  2897. Dim query = From c In _collection.AsQueryable(Of C)()
  2898. Where Not (c.L.Count() = 3)
  2899. Select c
  2900. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2901. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2902. Assert.AreSame(_collection, translatedQuery.Collection)
  2903. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2904. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2905. Assert.IsNull(selectQuery.OrderBy)
  2906. Assert.IsNull(selectQuery.Projection)
  2907. Assert.IsNull(selectQuery.Skip)
  2908. Assert.IsNull(selectQuery.Take)
  2909. Assert.AreEqual("{ ""l"" : { ""$not"" : { ""$size"" : 3 } } }", selectQuery.BuildQuery().ToJson())
  2910. Assert.AreEqual(4, Consume(query))
  2911. End Sub
  2912. <Test()> _
  2913. Public Sub TestWhereLCountMethodEquals3Reversed()
  2914. Dim query = From c In _collection.AsQueryable(Of C)()
  2915. Where 3 = c.L.Count()
  2916. Select c
  2917. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2918. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2919. Assert.AreSame(_collection, translatedQuery.Collection)
  2920. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2921. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2922. Assert.IsNull(selectQuery.OrderBy)
  2923. Assert.IsNull(selectQuery.Projection)
  2924. Assert.IsNull(selectQuery.Skip)
  2925. Assert.IsNull(selectQuery.Take)
  2926. Assert.AreEqual("{ ""l"" : { ""$size"" : 3 } }", selectQuery.BuildQuery().ToJson())
  2927. Assert.AreEqual(1, Consume(query))
  2928. End Sub
  2929. <Test()> _
  2930. Public Sub TestWhereLCountPropertyEquals3()
  2931. Dim query = From c In _collection.AsQueryable(Of C)()
  2932. Where c.L.Count = 3
  2933. Select c
  2934. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2935. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2936. Assert.AreSame(_collection, translatedQuery.Collection)
  2937. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2938. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2939. Assert.IsNull(selectQuery.OrderBy)
  2940. Assert.IsNull(selectQuery.Projection)
  2941. Assert.IsNull(selectQuery.Skip)
  2942. Assert.IsNull(selectQuery.Take)
  2943. Assert.AreEqual("{ ""l"" : { ""$size"" : 3 } }", selectQuery.BuildQuery().ToJson())
  2944. Assert.AreEqual(1, Consume(query))
  2945. End Sub
  2946. <Test()> _
  2947. Public Sub TestWhereLCountPropertyEquals3Not()
  2948. Dim query = From c In _collection.AsQueryable(Of C)()
  2949. Where Not (c.L.Count = 3)
  2950. Select c
  2951. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2952. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2953. Assert.AreSame(_collection, translatedQuery.Collection)
  2954. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2955. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2956. Assert.IsNull(selectQuery.OrderBy)
  2957. Assert.IsNull(selectQuery.Projection)
  2958. Assert.IsNull(selectQuery.Skip)
  2959. Assert.IsNull(selectQuery.Take)
  2960. Assert.AreEqual("{ ""l"" : { ""$not"" : { ""$size"" : 3 } } }", selectQuery.BuildQuery().ToJson())
  2961. Assert.AreEqual(4, Consume(query))
  2962. End Sub
  2963. <Test()> _
  2964. Public Sub TestWhereLCountPropertyEquals3Reversed()
  2965. Dim query = From c In _collection.AsQueryable(Of C)()
  2966. Where 3 = c.L.Count
  2967. Select c
  2968. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2969. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2970. Assert.AreSame(_collection, translatedQuery.Collection)
  2971. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2972. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2973. Assert.IsNull(selectQuery.OrderBy)
  2974. Assert.IsNull(selectQuery.Projection)
  2975. Assert.IsNull(selectQuery.Skip)
  2976. Assert.IsNull(selectQuery.Take)
  2977. Assert.AreEqual("{ ""l"" : { ""$size"" : 3 } }", selectQuery.BuildQuery().ToJson())
  2978. Assert.AreEqual(1, Consume(query))
  2979. End Sub
  2980. <Test()> _
  2981. Public Sub TestWhereLCountPropertyNotEquals3()
  2982. Dim query = From c In _collection.AsQueryable(Of C)()
  2983. Where c.L.Count <> 3
  2984. Select c
  2985. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  2986. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  2987. Assert.AreSame(_collection, translatedQuery.Collection)
  2988. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  2989. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  2990. Assert.IsNull(selectQuery.OrderBy)
  2991. Assert.IsNull(selectQuery.Projection)
  2992. Assert.IsNull(selectQuery.Skip)
  2993. Assert.IsNull(selectQuery.Take)
  2994. Assert.AreEqual("{ ""l"" : { ""$not"" : { ""$size"" : 3 } } }", selectQuery.BuildQuery().ToJson())
  2995. Assert.AreEqual(4, Consume(query))
  2996. End Sub
  2997. <Test()> _
  2998. Public Sub TestWhereLCountPropertyNotEquals3Not()
  2999. Dim query = From c In _collection.AsQueryable(Of C)()
  3000. Where Not (c.L.Count <> 3)
  3001. Select c
  3002. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3003. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3004. Assert.AreSame(_collection, translatedQuery.Collection)
  3005. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3006. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3007. Assert.IsNull(selectQuery.OrderBy)
  3008. Assert.IsNull(selectQuery.Projection)
  3009. Assert.IsNull(selectQuery.Skip)
  3010. Assert.IsNull(selectQuery.Take)
  3011. Assert.AreEqual("{ ""l"" : { ""$size"" : 3 } }", selectQuery.BuildQuery().ToJson())
  3012. Assert.AreEqual(1, Consume(query))
  3013. End Sub
  3014. <Test()> _
  3015. Public Sub TestWhereLSub1Equals3()
  3016. Dim query = From c In _collection.AsQueryable(Of C)()
  3017. Where c.L(1) = 3
  3018. Select c
  3019. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3020. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3021. Assert.AreSame(_collection, translatedQuery.Collection)
  3022. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3023. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3024. Assert.IsNull(selectQuery.OrderBy)
  3025. Assert.IsNull(selectQuery.Projection)
  3026. Assert.IsNull(selectQuery.Skip)
  3027. Assert.IsNull(selectQuery.Take)
  3028. Assert.AreEqual("{ ""l.1"" : 3 }", selectQuery.BuildQuery().ToJson())
  3029. Assert.AreEqual(1, Consume(query))
  3030. End Sub
  3031. <Test()> _
  3032. Public Sub TestWhereLSub1Equals3Not()
  3033. Dim query = From c In _collection.AsQueryable(Of C)()
  3034. Where Not (c.L(1) = 3)
  3035. Select c
  3036. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3037. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3038. Assert.AreSame(_collection, translatedQuery.Collection)
  3039. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3040. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3041. Assert.IsNull(selectQuery.OrderBy)
  3042. Assert.IsNull(selectQuery.Projection)
  3043. Assert.IsNull(selectQuery.Skip)
  3044. Assert.IsNull(selectQuery.Take)
  3045. Assert.AreEqual("{ ""l.1"" : { ""$ne"" : 3 } }", selectQuery.BuildQuery().ToJson())
  3046. Assert.AreEqual(4, Consume(query))
  3047. End Sub
  3048. <Test()> _
  3049. Public Sub TestWhereLSub1ModTwoEquals1()
  3050. Dim query = From c In _collection.AsQueryable(Of C)()
  3051. Where c.L(1) Mod 2 = 1
  3052. Select c
  3053. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3054. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3055. Assert.AreSame(_collection, translatedQuery.Collection)
  3056. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3057. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3058. Assert.IsNull(selectQuery.OrderBy)
  3059. Assert.IsNull(selectQuery.Projection)
  3060. Assert.IsNull(selectQuery.Skip)
  3061. Assert.IsNull(selectQuery.Take)
  3062. Assert.AreEqual("{ ""l.1"" : { ""$mod"" : [2, 1] } }", selectQuery.BuildQuery().ToJson())
  3063. Assert.AreEqual(1, Consume(query))
  3064. End Sub
  3065. <Test()> _
  3066. Public Sub TestWhereLSub1ModTwoEquals1Not()
  3067. Dim query = From c In _collection.AsQueryable(Of C)()
  3068. Where Not (c.L(1) Mod 2 = 1)
  3069. Select c
  3070. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3071. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3072. Assert.AreSame(_collection, translatedQuery.Collection)
  3073. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3074. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3075. Assert.IsNull(selectQuery.OrderBy)
  3076. Assert.IsNull(selectQuery.Projection)
  3077. Assert.IsNull(selectQuery.Skip)
  3078. Assert.IsNull(selectQuery.Take)
  3079. Assert.AreEqual("{ ""l.1"" : { ""$not"" : { ""$mod"" : [2, 1] } } }", selectQuery.BuildQuery().ToJson())
  3080. Assert.AreEqual(4, Consume(query))
  3081. End Sub
  3082. <Test()> _
  3083. Public Sub TestWhereLSub1ModTwoNotEquals1()
  3084. Dim query = From c In _collection.AsQueryable(Of C)()
  3085. Where c.L(1) Mod 2 <> 1
  3086. Select c
  3087. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3088. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3089. Assert.AreSame(_collection, translatedQuery.Collection)
  3090. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3091. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3092. Assert.IsNull(selectQuery.OrderBy)
  3093. Assert.IsNull(selectQuery.Projection)
  3094. Assert.IsNull(selectQuery.Skip)
  3095. Assert.IsNull(selectQuery.Take)
  3096. Assert.AreEqual("{ ""l.1"" : { ""$not"" : { ""$mod"" : [2, 1] } } }", selectQuery.BuildQuery().ToJson())
  3097. Assert.AreEqual(4, Consume(query))
  3098. End Sub
  3099. <Test()> _
  3100. Public Sub TestWhereLSub1ModTwoNotEquals1Not()
  3101. Dim query = From c In _collection.AsQueryable(Of C)()
  3102. Where Not (c.L(1) Mod 2 <> 1)
  3103. Select c
  3104. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3105. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3106. Assert.AreSame(_collection, translatedQuery.Collection)
  3107. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3108. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3109. Assert.IsNull(selectQuery.OrderBy)
  3110. Assert.IsNull(selectQuery.Projection)
  3111. Assert.IsNull(selectQuery.Skip)
  3112. Assert.IsNull(selectQuery.Take)
  3113. Assert.AreEqual("{ ""l.1"" : { ""$mod"" : [2, 1] } }", selectQuery.BuildQuery().ToJson())
  3114. Assert.AreEqual(1, Consume(query))
  3115. End Sub
  3116. <Test()> _
  3117. Public Sub TestWhereLSub1NotEquals3()
  3118. Dim query = From c In _collection.AsQueryable(Of C)()
  3119. Where c.L(1) <> 3
  3120. Select c
  3121. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3122. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3123. Assert.AreSame(_collection, translatedQuery.Collection)
  3124. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3125. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3126. Assert.IsNull(selectQuery.OrderBy)
  3127. Assert.IsNull(selectQuery.Projection)
  3128. Assert.IsNull(selectQuery.Skip)
  3129. Assert.IsNull(selectQuery.Take)
  3130. Assert.AreEqual("{ ""l.1"" : { ""$ne"" : 3 } }", selectQuery.BuildQuery().ToJson())
  3131. Assert.AreEqual(4, Consume(query))
  3132. End Sub
  3133. <Test()> _
  3134. Public Sub TestWhereLSub1NotEquals3Not()
  3135. Dim query = From c In _collection.AsQueryable(Of C)()
  3136. Where Not (c.L(1) <> 3)
  3137. Select c
  3138. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3139. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3140. Assert.AreSame(_collection, translatedQuery.Collection)
  3141. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3142. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3143. Assert.IsNull(selectQuery.OrderBy)
  3144. Assert.IsNull(selectQuery.Projection)
  3145. Assert.IsNull(selectQuery.Skip)
  3146. Assert.IsNull(selectQuery.Take)
  3147. Assert.AreEqual("{ ""l.1"" : 3 }", selectQuery.BuildQuery().ToJson())
  3148. Assert.AreEqual(1, Consume(query))
  3149. End Sub
  3150. <Test()> _
  3151. Public Sub TestWhereLXModTwoEquals1()
  3152. Dim query = From c In _collection.AsQueryable(Of C)()
  3153. Where c.LX Mod 2 = 1
  3154. Select c
  3155. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3156. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3157. Assert.AreSame(_collection, translatedQuery.Collection)
  3158. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3159. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3160. Assert.IsNull(selectQuery.OrderBy)
  3161. Assert.IsNull(selectQuery.Projection)
  3162. Assert.IsNull(selectQuery.Skip)
  3163. Assert.IsNull(selectQuery.Take)
  3164. Assert.AreEqual("{ ""lx"" : { ""$mod"" : [2, 1] } }", selectQuery.BuildQuery().ToJson())
  3165. Assert.AreEqual(3, Consume(query))
  3166. End Sub
  3167. <Test()> _
  3168. Public Sub TestWhereLXModTwoEquals1Not()
  3169. Dim query = From c In _collection.AsQueryable(Of C)()
  3170. Where Not (c.LX Mod 2 = 1)
  3171. Select c
  3172. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3173. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3174. Assert.AreSame(_collection, translatedQuery.Collection)
  3175. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3176. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3177. Assert.IsNull(selectQuery.OrderBy)
  3178. Assert.IsNull(selectQuery.Projection)
  3179. Assert.IsNull(selectQuery.Skip)
  3180. Assert.IsNull(selectQuery.Take)
  3181. Assert.AreEqual("{ ""lx"" : { ""$not"" : { ""$mod"" : [2, 1] } } }", selectQuery.BuildQuery().ToJson())
  3182. Assert.AreEqual(2, Consume(query))
  3183. End Sub
  3184. <Test()> _
  3185. Public Sub TestWhereLXModTwoEquals1Reversed()
  3186. Dim query = From c In _collection.AsQueryable(Of C)()
  3187. Where 1 = c.LX Mod 2
  3188. Select c
  3189. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3190. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3191. Assert.AreSame(_collection, translatedQuery.Collection)
  3192. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3193. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3194. Assert.IsNull(selectQuery.OrderBy)
  3195. Assert.IsNull(selectQuery.Projection)
  3196. Assert.IsNull(selectQuery.Skip)
  3197. Assert.IsNull(selectQuery.Take)
  3198. Assert.AreEqual("{ ""lx"" : { ""$mod"" : [2, 1] } }", selectQuery.BuildQuery().ToJson())
  3199. Assert.AreEqual(3, Consume(query))
  3200. End Sub
  3201. <Test()> _
  3202. Public Sub TestWhereLXModTwoNotEquals1()
  3203. Dim query = From c In _collection.AsQueryable(Of C)()
  3204. Where c.LX Mod 2 <> 1
  3205. Select c
  3206. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3207. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3208. Assert.AreSame(_collection, translatedQuery.Collection)
  3209. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3210. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3211. Assert.IsNull(selectQuery.OrderBy)
  3212. Assert.IsNull(selectQuery.Projection)
  3213. Assert.IsNull(selectQuery.Skip)
  3214. Assert.IsNull(selectQuery.Take)
  3215. Assert.AreEqual("{ ""lx"" : { ""$not"" : { ""$mod"" : [2, 1] } } }", selectQuery.BuildQuery().ToJson())
  3216. Assert.AreEqual(2, Consume(query))
  3217. End Sub
  3218. <Test()> _
  3219. Public Sub TestWhereLXModTwoNotEquals1Not()
  3220. Dim query = From c In _collection.AsQueryable(Of C)()
  3221. Where Not (c.LX Mod 2 <> 1)
  3222. Select c
  3223. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3224. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3225. Assert.AreSame(_collection, translatedQuery.Collection)
  3226. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3227. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3228. Assert.IsNull(selectQuery.OrderBy)
  3229. Assert.IsNull(selectQuery.Projection)
  3230. Assert.IsNull(selectQuery.Skip)
  3231. Assert.IsNull(selectQuery.Take)
  3232. Assert.AreEqual("{ ""lx"" : { ""$mod"" : [2, 1] } }", selectQuery.BuildQuery().ToJson())
  3233. Assert.AreEqual(3, Consume(query))
  3234. End Sub
  3235. <Test()> _
  3236. Public Sub TestWhereSASub0ContainsO()
  3237. Dim query = From c In _collection.AsQueryable(Of C)()
  3238. Where c.SA(0).Contains("o")
  3239. Select c
  3240. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3241. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3242. Assert.AreSame(_collection, translatedQuery.Collection)
  3243. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3244. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3245. Assert.IsNull(selectQuery.OrderBy)
  3246. Assert.IsNull(selectQuery.Projection)
  3247. Assert.IsNull(selectQuery.Skip)
  3248. Assert.IsNull(selectQuery.Take)
  3249. Assert.AreEqual("{ ""sa.0"" : /o/s }", selectQuery.BuildQuery().ToJson())
  3250. Assert.AreEqual(1, Consume(query))
  3251. End Sub
  3252. <Test()> _
  3253. Public Sub TestWhereSASub0ContainsONot()
  3254. Dim query = From c In _collection.AsQueryable(Of C)()
  3255. Where Not c.SA(0).Contains("o")
  3256. Select c
  3257. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3258. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3259. Assert.AreSame(_collection, translatedQuery.Collection)
  3260. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3261. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3262. Assert.IsNull(selectQuery.OrderBy)
  3263. Assert.IsNull(selectQuery.Projection)
  3264. Assert.IsNull(selectQuery.Skip)
  3265. Assert.IsNull(selectQuery.Take)
  3266. Assert.AreEqual("{ ""sa.0"" : { ""$not"" : /o/s } }", selectQuery.BuildQuery().ToJson())
  3267. Assert.AreEqual(4, Consume(query))
  3268. End Sub
  3269. <Test()> _
  3270. Public Sub TestWhereSASub0EndsWithM()
  3271. Dim query = From c In _collection.AsQueryable(Of C)()
  3272. Where c.SA(0).EndsWith("m")
  3273. Select c
  3274. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3275. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3276. Assert.AreSame(_collection, translatedQuery.Collection)
  3277. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3278. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3279. Assert.IsNull(selectQuery.OrderBy)
  3280. Assert.IsNull(selectQuery.Projection)
  3281. Assert.IsNull(selectQuery.Skip)
  3282. Assert.IsNull(selectQuery.Take)
  3283. Assert.AreEqual("{ ""sa.0"" : /m$/s }", selectQuery.BuildQuery().ToJson())
  3284. Assert.AreEqual(1, Consume(query))
  3285. End Sub
  3286. <Test()> _
  3287. Public Sub TestWhereSASub0EndsWithMNot()
  3288. Dim query = From c In _collection.AsQueryable(Of C)()
  3289. Where Not c.SA(0).EndsWith("m")
  3290. Select c
  3291. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3292. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3293. Assert.AreSame(_collection, translatedQuery.Collection)
  3294. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3295. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3296. Assert.IsNull(selectQuery.OrderBy)
  3297. Assert.IsNull(selectQuery.Projection)
  3298. Assert.IsNull(selectQuery.Skip)
  3299. Assert.IsNull(selectQuery.Take)
  3300. Assert.AreEqual("{ ""sa.0"" : { ""$not"" : /m$/s } }", selectQuery.BuildQuery().ToJson())
  3301. Assert.AreEqual(4, Consume(query))
  3302. End Sub
  3303. <Test()> _
  3304. Public Sub TestWhereSASub0IsMatch()
  3305. Dim regex = New Regex("^T")
  3306. Dim query = From c In _collection.AsQueryable(Of C)()
  3307. Where regex.IsMatch(c.SA(0))
  3308. Select c
  3309. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3310. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3311. Assert.AreSame(_collection, translatedQuery.Collection)
  3312. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3313. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3314. Assert.IsNull(selectQuery.OrderBy)
  3315. Assert.IsNull(selectQuery.Projection)
  3316. Assert.IsNull(selectQuery.Skip)
  3317. Assert.IsNull(selectQuery.Take)
  3318. Assert.AreEqual("{ ""sa.0"" : /^T/ }", selectQuery.BuildQuery().ToJson())
  3319. Assert.AreEqual(1, Consume(query))
  3320. End Sub
  3321. <Test()> _
  3322. Public Sub TestWhereSASub0IsMatchNot()
  3323. Dim regex = New Regex("^T")
  3324. Dim query = From c In _collection.AsQueryable(Of C)()
  3325. Where Not regex.IsMatch(c.SA(0))
  3326. Select c
  3327. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3328. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3329. Assert.AreSame(_collection, translatedQuery.Collection)
  3330. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3331. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3332. Assert.IsNull(selectQuery.OrderBy)
  3333. Assert.IsNull(selectQuery.Projection)
  3334. Assert.IsNull(selectQuery.Skip)
  3335. Assert.IsNull(selectQuery.Take)
  3336. Assert.AreEqual("{ ""sa.0"" : { ""$not"" : /^T/ } }", selectQuery.BuildQuery().ToJson())
  3337. Assert.AreEqual(4, Consume(query))
  3338. End Sub
  3339. <Test()> _
  3340. Public Sub TestWhereSASub0IsMatchStatic()
  3341. Dim query = From c In _collection.AsQueryable(Of C)()
  3342. Where Regex.IsMatch(c.SA(0), "^T")
  3343. Select c
  3344. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3345. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3346. Assert.AreSame(_collection, translatedQuery.Collection)
  3347. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3348. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3349. Assert.IsNull(selectQuery.OrderBy)
  3350. Assert.IsNull(selectQuery.Projection)
  3351. Assert.IsNull(selectQuery.Skip)
  3352. Assert.IsNull(selectQuery.Take)
  3353. Assert.AreEqual("{ ""sa.0"" : /^T/ }", selectQuery.BuildQuery().ToJson())
  3354. Assert.AreEqual(1, Consume(query))
  3355. End Sub
  3356. <Test()> _
  3357. Public Sub TestWhereSASub0IsMatchStaticNot()
  3358. Dim query = From c In _collection.AsQueryable(Of C)()
  3359. Where Not Regex.IsMatch(c.SA(0), "^T")
  3360. Select c
  3361. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3362. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3363. Assert.AreSame(_collection, translatedQuery.Collection)
  3364. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3365. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3366. Assert.IsNull(selectQuery.OrderBy)
  3367. Assert.IsNull(selectQuery.Projection)
  3368. Assert.IsNull(selectQuery.Skip)
  3369. Assert.IsNull(selectQuery.Take)
  3370. Assert.AreEqual("{ ""sa.0"" : { ""$not"" : /^T/ } }", selectQuery.BuildQuery().ToJson())
  3371. Assert.AreEqual(4, Consume(query))
  3372. End Sub
  3373. <Test()> _
  3374. Public Sub TestWhereSASub0IsMatchStaticWithOptions()
  3375. Dim query = From c In _collection.AsQueryable(Of C)()
  3376. Where Regex.IsMatch(c.SA(0), "^t", RegexOptions.IgnoreCase)
  3377. Select c
  3378. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3379. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3380. Assert.AreSame(_collection, translatedQuery.Collection)
  3381. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3382. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3383. Assert.IsNull(selectQuery.OrderBy)
  3384. Assert.IsNull(selectQuery.Projection)
  3385. Assert.IsNull(selectQuery.Skip)
  3386. Assert.IsNull(selectQuery.Take)
  3387. Assert.AreEqual("{ ""sa.0"" : /^t/i }", selectQuery.BuildQuery().ToJson())
  3388. Assert.AreEqual(1, Consume(query))
  3389. End Sub
  3390. <Test()> _
  3391. Public Sub TestWhereSASub0StartsWithT()
  3392. Dim query = From c In _collection.AsQueryable(Of C)()
  3393. Where c.SA(0).StartsWith("T")
  3394. Select c
  3395. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3396. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3397. Assert.AreSame(_collection, translatedQuery.Collection)
  3398. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3399. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3400. Assert.IsNull(selectQuery.OrderBy)
  3401. Assert.IsNull(selectQuery.Projection)
  3402. Assert.IsNull(selectQuery.Skip)
  3403. Assert.IsNull(selectQuery.Take)
  3404. Assert.AreEqual("{ ""sa.0"" : /^T/s }", selectQuery.BuildQuery().ToJson())
  3405. Assert.AreEqual(1, Consume(query))
  3406. End Sub
  3407. <Test()> _
  3408. Public Sub TestWhereSASub0StartsWithTNot()
  3409. Dim query = From c In _collection.AsQueryable(Of C)()
  3410. Where Not c.SA(0).StartsWith("T")
  3411. Select c
  3412. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3413. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3414. Assert.AreSame(_collection, translatedQuery.Collection)
  3415. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3416. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3417. Assert.IsNull(selectQuery.OrderBy)
  3418. Assert.IsNull(selectQuery.Projection)
  3419. Assert.IsNull(selectQuery.Skip)
  3420. Assert.IsNull(selectQuery.Take)
  3421. Assert.AreEqual("{ ""sa.0"" : { ""$not"" : /^T/s } }", selectQuery.BuildQuery().ToJson())
  3422. Assert.AreEqual(4, Consume(query))
  3423. End Sub
  3424. <Test()> _
  3425. Public Sub TestWhereSContainsAbc()
  3426. Dim query = From c In _collection.AsQueryable(Of C)()
  3427. Where c.S.Contains("abc")
  3428. Select c
  3429. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3430. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3431. Assert.AreSame(_collection, translatedQuery.Collection)
  3432. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3433. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3434. Assert.IsNull(selectQuery.OrderBy)
  3435. Assert.IsNull(selectQuery.Projection)
  3436. Assert.IsNull(selectQuery.Skip)
  3437. Assert.IsNull(selectQuery.Take)
  3438. Assert.AreEqual("{ ""s"" : /abc/s }", selectQuery.BuildQuery().ToJson())
  3439. Assert.AreEqual(1, Consume(query))
  3440. End Sub
  3441. <Test()> _
  3442. Public Sub TestWhereSContainsAbcNot()
  3443. Dim query = From c In _collection.AsQueryable(Of C)()
  3444. Where Not c.S.Contains("abc")
  3445. Select c
  3446. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3447. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3448. Assert.AreSame(_collection, translatedQuery.Collection)
  3449. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3450. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3451. Assert.IsNull(selectQuery.OrderBy)
  3452. Assert.IsNull(selectQuery.Projection)
  3453. Assert.IsNull(selectQuery.Skip)
  3454. Assert.IsNull(selectQuery.Take)
  3455. Assert.AreEqual("{ ""s"" : { ""$not"" : /abc/s } }", selectQuery.BuildQuery().ToJson())
  3456. Assert.AreEqual(4, Consume(query))
  3457. End Sub
  3458. <Test()> _
  3459. Public Sub TestWhereSContainsDot()
  3460. Dim query = From c In _collection.AsQueryable(Of C)()
  3461. Where c.S.Contains(".")
  3462. Select c
  3463. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3464. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3465. Assert.AreSame(_collection, translatedQuery.Collection)
  3466. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3467. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3468. Assert.IsNull(selectQuery.OrderBy)
  3469. Assert.IsNull(selectQuery.Projection)
  3470. Assert.IsNull(selectQuery.Skip)
  3471. Assert.IsNull(selectQuery.Take)
  3472. Assert.AreEqual("{ ""s"" : /\./s }", selectQuery.BuildQuery().ToJson())
  3473. Assert.AreEqual(0, Consume(query))
  3474. End Sub
  3475. <Test()> _
  3476. Public Sub TestWhereSCountEquals3()
  3477. Dim query = From c In _collection.AsQueryable(Of C)()
  3478. Where c.S.Count() = 3
  3479. Select c
  3480. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3481. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3482. Assert.AreSame(_collection, translatedQuery.Collection)
  3483. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3484. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3485. Assert.IsNull(selectQuery.OrderBy)
  3486. Assert.IsNull(selectQuery.Projection)
  3487. Assert.IsNull(selectQuery.Skip)
  3488. Assert.IsNull(selectQuery.Take)
  3489. Assert.AreEqual("{ ""s"" : /^.{3}$/s }", selectQuery.BuildQuery().ToJson())
  3490. Assert.AreEqual(1, Consume(query))
  3491. End Sub
  3492. <Test()> _
  3493. Public Sub TestWhereSEqualsAbc()
  3494. Dim query = From c In _collection.AsQueryable(Of C)()
  3495. Where c.S = "abc"
  3496. Select c
  3497. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3498. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3499. Assert.AreSame(_collection, translatedQuery.Collection)
  3500. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3501. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3502. Assert.IsNull(selectQuery.OrderBy)
  3503. Assert.IsNull(selectQuery.Projection)
  3504. Assert.IsNull(selectQuery.Skip)
  3505. Assert.IsNull(selectQuery.Take)
  3506. Assert.AreEqual("{ ""s"" : ""abc"" }", selectQuery.BuildQuery().ToJson())
  3507. Assert.AreEqual(1, Consume(query))
  3508. End Sub
  3509. <Test()> _
  3510. Public Sub TestWhereSEqualsAbcNot()
  3511. Dim query = From c In _collection.AsQueryable(Of C)()
  3512. Where Not (c.S = "abc")
  3513. Select c
  3514. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3515. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3516. Assert.AreSame(_collection, translatedQuery.Collection)
  3517. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3518. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3519. Assert.IsNull(selectQuery.OrderBy)
  3520. Assert.IsNull(selectQuery.Projection)
  3521. Assert.IsNull(selectQuery.Skip)
  3522. Assert.IsNull(selectQuery.Take)
  3523. Assert.AreEqual("{ ""s"" : { ""$ne"" : ""abc"" } }", selectQuery.BuildQuery().ToJson())
  3524. Assert.AreEqual(4, Consume(query))
  3525. End Sub
  3526. <Test()> _
  3527. Public Sub TestWhereSEqualsMethodAbc()
  3528. Dim query = From c In _collection.AsQueryable(Of C)()
  3529. Where c.S.Equals("abc")
  3530. Select c
  3531. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3532. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3533. Assert.AreSame(_collection, translatedQuery.Collection)
  3534. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3535. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3536. Assert.IsNull(selectQuery.OrderBy)
  3537. Assert.IsNull(selectQuery.Projection)
  3538. Assert.IsNull(selectQuery.Skip)
  3539. Assert.IsNull(selectQuery.Take)
  3540. Assert.AreEqual("{ ""s"" : ""abc"" }", selectQuery.BuildQuery().ToJson())
  3541. Assert.AreEqual(1, Consume(query))
  3542. End Sub
  3543. <Test()> _
  3544. Public Sub TestWhereSEqualsMethodAbcNot()
  3545. Dim query = From c In _collection.AsQueryable(Of C)()
  3546. Where Not (c.S.Equals("abc"))
  3547. Select c
  3548. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3549. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3550. Assert.AreSame(_collection, translatedQuery.Collection)
  3551. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3552. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3553. Assert.IsNull(selectQuery.OrderBy)
  3554. Assert.IsNull(selectQuery.Projection)
  3555. Assert.IsNull(selectQuery.Skip)
  3556. Assert.IsNull(selectQuery.Take)
  3557. Assert.AreEqual("{ ""s"" : { ""$ne"" : ""abc"" } }", selectQuery.BuildQuery().ToJson())
  3558. Assert.AreEqual(4, Consume(query))
  3559. End Sub
  3560. <Test()> _
  3561. Public Sub TestWhereSEqualsStaticMethodAbc()
  3562. Dim query = From c In _collection.AsQueryable(Of C)()
  3563. Where String.Equals(c.S, "abc")
  3564. Select c
  3565. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3566. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3567. Assert.AreSame(_collection, translatedQuery.Collection)
  3568. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3569. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3570. Assert.IsNull(selectQuery.OrderBy)
  3571. Assert.IsNull(selectQuery.Projection)
  3572. Assert.IsNull(selectQuery.Skip)
  3573. Assert.IsNull(selectQuery.Take)
  3574. Assert.AreEqual("{ ""s"" : ""abc"" }", selectQuery.BuildQuery().ToJson())
  3575. Assert.AreEqual(1, Consume(query))
  3576. End Sub
  3577. <Test()> _
  3578. Public Sub TestWhereSEqualsStaticMethodAbcNot()
  3579. Dim query = From c In _collection.AsQueryable(Of C)()
  3580. Where Not String.Equals(c.S, "abc")
  3581. Select c
  3582. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3583. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3584. Assert.AreSame(_collection, translatedQuery.Collection)
  3585. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3586. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3587. Assert.IsNull(selectQuery.OrderBy)
  3588. Assert.IsNull(selectQuery.Projection)
  3589. Assert.IsNull(selectQuery.Skip)
  3590. Assert.IsNull(selectQuery.Take)
  3591. Assert.AreEqual("{ ""s"" : { ""$ne"" : ""abc"" } }", selectQuery.BuildQuery().ToJson())
  3592. Assert.AreEqual(4, Consume(query))
  3593. End Sub
  3594. <Test()> _
  3595. Public Sub TestWhereSEndsWithAbc()
  3596. Dim query = From c In _collection.AsQueryable(Of C)()
  3597. Where c.S.EndsWith("abc")
  3598. Select c
  3599. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3600. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3601. Assert.AreSame(_collection, translatedQuery.Collection)
  3602. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3603. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3604. Assert.IsNull(selectQuery.OrderBy)
  3605. Assert.IsNull(selectQuery.Projection)
  3606. Assert.IsNull(selectQuery.Skip)
  3607. Assert.IsNull(selectQuery.Take)
  3608. Assert.AreEqual("{ ""s"" : /abc$/s }", selectQuery.BuildQuery().ToJson())
  3609. Assert.AreEqual(1, Consume(query))
  3610. End Sub
  3611. <Test()> _
  3612. Public Sub TestWhereSEndsWithAbcNot()
  3613. Dim query = From c In _collection.AsQueryable(Of C)()
  3614. Where Not c.S.EndsWith("abc")
  3615. Select c
  3616. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3617. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3618. Assert.AreSame(_collection, translatedQuery.Collection)
  3619. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3620. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3621. Assert.IsNull(selectQuery.OrderBy)
  3622. Assert.IsNull(selectQuery.Projection)
  3623. Assert.IsNull(selectQuery.Skip)
  3624. Assert.IsNull(selectQuery.Take)
  3625. Assert.AreEqual("{ ""s"" : { ""$not"" : /abc$/s } }", selectQuery.BuildQuery().ToJson())
  3626. Assert.AreEqual(4, Consume(query))
  3627. End Sub
  3628. <Test()> _
  3629. Public Sub TestWhereSIndexOfAnyBC()
  3630. Dim tempCollection = _database.GetCollection("temp")
  3631. tempCollection.Drop()
  3632. tempCollection.Insert(New C() With {.S = "bxxx"})
  3633. tempCollection.Insert(New C() With {.S = "xbxx"})
  3634. tempCollection.Insert(New C() With {.S = "xxbx"})
  3635. tempCollection.Insert(New C() With {.S = "xxxb"})
  3636. tempCollection.Insert(New C() With {.S = "bxbx"})
  3637. tempCollection.Insert(New C() With {.S = "xbbx"})
  3638. tempCollection.Insert(New C() With {.S = "xxbb"})
  3639. Dim query1 = From c In tempCollection.AsQueryable(Of C)()
  3640. Where c.S.IndexOfAny(New Char() {"b"c, "c"c}) = 2
  3641. Select c
  3642. Assert.AreEqual(2, Consume(query1))
  3643. Dim query2 = From c In tempCollection.AsQueryable(Of C)()
  3644. Where c.S.IndexOfAny(New Char() {"b"c, "c"c}, 1) = 2
  3645. Select c
  3646. Assert.AreEqual(3, Consume(query2))
  3647. Dim query3 = From c In tempCollection.AsQueryable(Of C)()
  3648. Where c.S.IndexOfAny(New Char() {"b"c, "c"c}, 1, 1) = 2
  3649. Select c
  3650. Assert.AreEqual(0, Consume(query3))
  3651. Dim query4 = From c In tempCollection.AsQueryable(Of C)()
  3652. Where c.S.IndexOfAny(New Char() {"b"c, "c"c}, 1, 2) = 2
  3653. Select c
  3654. Assert.AreEqual(3, Consume(query4))
  3655. End Sub
  3656. <Test()> _
  3657. Public Sub TestWhereSIndexOfAnyBDashCEquals1()
  3658. Dim query = From c In _collection.AsQueryable(Of C)()
  3659. Where c.S.IndexOfAny(New Char() {"b"c, "-"c, "c"c}) = 1
  3660. Select c
  3661. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3662. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3663. Assert.AreSame(_collection, translatedQuery.Collection)
  3664. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3665. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3666. Assert.IsNull(selectQuery.OrderBy)
  3667. Assert.IsNull(selectQuery.Projection)
  3668. Assert.IsNull(selectQuery.Skip)
  3669. Assert.IsNull(selectQuery.Take)
  3670. Assert.AreEqual("{ ""s"" : /^[^b\-c]{1}[b\-c]/s }", selectQuery.BuildQuery().ToJson())
  3671. Assert.AreEqual(1, Consume(query))
  3672. End Sub
  3673. <Test()> _
  3674. Public Sub TestWhereSIndexOfAnyBCStartIndex1Equals1()
  3675. Dim query = From c In _collection.AsQueryable(Of C)()
  3676. Where c.S.IndexOfAny(New Char() {"b"c, "-"c, "c"c}, 1) = 1
  3677. Select c
  3678. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3679. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3680. Assert.AreSame(_collection, translatedQuery.Collection)
  3681. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3682. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3683. Assert.IsNull(selectQuery.OrderBy)
  3684. Assert.IsNull(selectQuery.Projection)
  3685. Assert.IsNull(selectQuery.Skip)
  3686. Assert.IsNull(selectQuery.Take)
  3687. Assert.AreEqual("{ ""s"" : /^.{1}[^b\-c]{0}[b\-c]/s }", selectQuery.BuildQuery().ToJson())
  3688. Assert.AreEqual(1, Consume(query))
  3689. End Sub
  3690. <Test()> _
  3691. Public Sub TestWhereSIndexOfAnyBCStartIndex1Count2Equals1()
  3692. Dim query = From c In _collection.AsQueryable(Of C)()
  3693. Where c.S.IndexOfAny(New Char() {"b"c, "-"c, "c"c}, 1, 2) = 1
  3694. Select c
  3695. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3696. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3697. Assert.AreSame(_collection, translatedQuery.Collection)
  3698. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3699. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3700. Assert.IsNull(selectQuery.OrderBy)
  3701. Assert.IsNull(selectQuery.Projection)
  3702. Assert.IsNull(selectQuery.Skip)
  3703. Assert.IsNull(selectQuery.Take)
  3704. Assert.AreEqual("{ ""s"" : /^.{1}(?=.{2})[^b\-c]{0}[b\-c]/s }", selectQuery.BuildQuery().ToJson())
  3705. Assert.AreEqual(1, Consume(query))
  3706. End Sub
  3707. <Test()> _
  3708. Public Sub TestWhereSIndexOfB()
  3709. Dim tempCollection = _database.GetCollection("temp")
  3710. tempCollection.Drop()
  3711. tempCollection.Insert(New C() With { _
  3712. .S = "bxxx" _
  3713. })
  3714. tempCollection.Insert(New C() With { _
  3715. .S = "xbxx" _
  3716. })
  3717. tempCollection.Insert(New C() With { _
  3718. .S = "xxbx" _
  3719. })
  3720. tempCollection.Insert(New C() With { _
  3721. .S = "xxxb" _
  3722. })
  3723. tempCollection.Insert(New C() With { _
  3724. .S = "bxbx" _
  3725. })
  3726. tempCollection.Insert(New C() With { _
  3727. .S = "xbbx" _
  3728. })
  3729. tempCollection.Insert(New C() With { _
  3730. .S = "xxbb" _
  3731. })
  3732. Dim query1 = From c In tempCollection.AsQueryable(Of C)()
  3733. Where c.S.IndexOf("b"c) = 2
  3734. Select c
  3735. Assert.AreEqual(2, Consume(query1))
  3736. Dim query2 = From c In tempCollection.AsQueryable(Of C)()
  3737. Where c.S.IndexOf("b"c, 1) = 2
  3738. Select c
  3739. Assert.AreEqual(3, Consume(query2))
  3740. Dim query3 = From c In tempCollection.AsQueryable(Of C)()
  3741. Where c.S.IndexOf("b"c, 1, 1) = 2
  3742. Select c
  3743. Assert.AreEqual(0, Consume(query3))
  3744. Dim query4 = From c In tempCollection.AsQueryable(Of C)()
  3745. Where c.S.IndexOf("b"c, 1, 2) = 2
  3746. Select c
  3747. Assert.AreEqual(3, Consume(query4))
  3748. End Sub
  3749. <Test()> _
  3750. Public Sub TestWhereSIndexOfBEquals1()
  3751. Dim query = From c In _collection.AsQueryable(Of C)()
  3752. Where c.S.IndexOf("b"c) = 1
  3753. Select c
  3754. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3755. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3756. Assert.AreSame(_collection, translatedQuery.Collection)
  3757. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3758. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3759. Assert.IsNull(selectQuery.OrderBy)
  3760. Assert.IsNull(selectQuery.Projection)
  3761. Assert.IsNull(selectQuery.Skip)
  3762. Assert.IsNull(selectQuery.Take)
  3763. Assert.AreEqual("{ ""s"" : /^[^b]{1}b/s }", selectQuery.BuildQuery().ToJson())
  3764. Assert.AreEqual(1, Consume(query))
  3765. End Sub
  3766. <Test()> _
  3767. Public Sub TestWhereSIndexOfBStartIndex1Equals1()
  3768. Dim query = From c In _collection.AsQueryable(Of C)()
  3769. Where c.S.IndexOf("b"c, 1) = 1
  3770. Select c
  3771. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3772. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3773. Assert.AreSame(_collection, translatedQuery.Collection)
  3774. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3775. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3776. Assert.IsNull(selectQuery.OrderBy)
  3777. Assert.IsNull(selectQuery.Projection)
  3778. Assert.IsNull(selectQuery.Skip)
  3779. Assert.IsNull(selectQuery.Take)
  3780. Assert.AreEqual("{ ""s"" : /^.{1}[^b]{0}b/s }", selectQuery.BuildQuery().ToJson())
  3781. Assert.AreEqual(1, Consume(query))
  3782. End Sub
  3783. <Test()> _
  3784. Public Sub TestWhereSIndexOfBStartIndex1Count2Equals1()
  3785. Dim query = From c In _collection.AsQueryable(Of C)()
  3786. Where c.S.IndexOf("b"c, 1, 2) = 1
  3787. Select c
  3788. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3789. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3790. Assert.AreSame(_collection, translatedQuery.Collection)
  3791. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3792. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3793. Assert.IsNull(selectQuery.OrderBy)
  3794. Assert.IsNull(selectQuery.Projection)
  3795. Assert.IsNull(selectQuery.Skip)
  3796. Assert.IsNull(selectQuery.Take)
  3797. Assert.AreEqual("{ ""s"" : /^.{1}(?=.{2})[^b]{0}b/s }", selectQuery.BuildQuery().ToJson())
  3798. Assert.AreEqual(1, Consume(query))
  3799. End Sub
  3800. <Test()> _
  3801. Public Sub TestWhereSIndexOfXyz()
  3802. Dim tempCollection = _database.GetCollection("temp")
  3803. tempCollection.Drop()
  3804. tempCollection.Insert(New C() With { _
  3805. .S = "xyzaaa" _
  3806. })
  3807. tempCollection.Insert(New C() With { _
  3808. .S = "axyzaa" _
  3809. })
  3810. tempCollection.Insert(New C() With { _
  3811. .S = "aaxyza" _
  3812. })
  3813. tempCollection.Insert(New C() With { _
  3814. .S = "aaaxyz" _
  3815. })
  3816. tempCollection.Insert(New C() With { _
  3817. .S = "aaaaxy" _
  3818. })
  3819. tempCollection.Insert(New C() With { _
  3820. .S = "xyzxyz" _
  3821. })
  3822. Dim query1 = From c In tempCollection.AsQueryable(Of C)()
  3823. Where c.S.IndexOf("xyz") = 3
  3824. Select c
  3825. Assert.AreEqual(1, Consume(query1))
  3826. Dim query2 = From c In tempCollection.AsQueryable(Of C)()
  3827. Where c.S.IndexOf("xyz", 1) = 3
  3828. Select c
  3829. Assert.AreEqual(2, Consume(query2))
  3830. Dim query3 = From c In tempCollection.AsQueryable(Of C)()
  3831. Where c.S.IndexOf("xyz", 1, 4) = 3
  3832. Select c
  3833. Assert.AreEqual(0, Consume(query3))
  3834. ' substring isn't long enough to match
  3835. Dim query4 = From c In tempCollection.AsQueryable(Of C)()
  3836. Where c.S.IndexOf("xyz", 1, 5) = 3
  3837. Select c
  3838. Assert.AreEqual(2, Consume(query4))
  3839. End Sub
  3840. <Test()> _
  3841. Public Sub TestWhereSIndexOfXyzEquals3()
  3842. Dim query = From c In _collection.AsQueryable(Of C)()
  3843. Where c.S.IndexOf("xyz") = 3
  3844. Select c
  3845. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3846. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3847. Assert.AreSame(_collection, translatedQuery.Collection)
  3848. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3849. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3850. Assert.IsNull(selectQuery.OrderBy)
  3851. Assert.IsNull(selectQuery.Projection)
  3852. Assert.IsNull(selectQuery.Skip)
  3853. Assert.IsNull(selectQuery.Take)
  3854. Assert.AreEqual("{ ""s"" : /^(?!.{0,2}xyz).{3}xyz/s }", selectQuery.BuildQuery().ToJson())
  3855. Assert.AreEqual(1, Consume(query))
  3856. End Sub
  3857. <Test()> _
  3858. Public Sub TestWhereSIndexOfXyzStartIndex1Equals3()
  3859. Dim query = From c In _collection.AsQueryable(Of C)()
  3860. Where c.S.IndexOf("xyz", 1) = 3
  3861. Select c
  3862. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3863. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3864. Assert.AreSame(_collection, translatedQuery.Collection)
  3865. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3866. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3867. Assert.IsNull(selectQuery.OrderBy)
  3868. Assert.IsNull(selectQuery.Projection)
  3869. Assert.IsNull(selectQuery.Skip)
  3870. Assert.IsNull(selectQuery.Take)
  3871. Assert.AreEqual("{ ""s"" : /^.{1}(?!.{0,1}xyz).{2}xyz/s }", selectQuery.BuildQuery().ToJson())
  3872. Assert.AreEqual(1, Consume(query))
  3873. End Sub
  3874. <Test()> _
  3875. Public Sub TestWhereSIndexOfXyzStartIndex1Count5Equals3()
  3876. Dim query = From c In _collection.AsQueryable(Of C)()
  3877. Where c.S.IndexOf("xyz", 1, 5) = 3
  3878. Select c
  3879. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3880. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3881. Assert.AreSame(_collection, translatedQuery.Collection)
  3882. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3883. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3884. Assert.IsNull(selectQuery.OrderBy)
  3885. Assert.IsNull(selectQuery.Projection)
  3886. Assert.IsNull(selectQuery.Skip)
  3887. Assert.IsNull(selectQuery.Take)
  3888. Assert.AreEqual("{ ""s"" : /^.{1}(?=.{5})(?!.{0,1}xyz).{2}xyz/s }", selectQuery.BuildQuery().ToJson())
  3889. Assert.AreEqual(1, Consume(query))
  3890. End Sub
  3891. <Test()> _
  3892. Public Sub TestWhereSIsMatch()
  3893. Dim regex = New Regex("^abc")
  3894. Dim query = From c In _collection.AsQueryable(Of C)()
  3895. Where regex.IsMatch(c.S)
  3896. Select c
  3897. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3898. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3899. Assert.AreSame(_collection, translatedQuery.Collection)
  3900. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3901. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3902. Assert.IsNull(selectQuery.OrderBy)
  3903. Assert.IsNull(selectQuery.Projection)
  3904. Assert.IsNull(selectQuery.Skip)
  3905. Assert.IsNull(selectQuery.Take)
  3906. Assert.AreEqual("{ ""s"" : /^abc/ }", selectQuery.BuildQuery().ToJson())
  3907. Assert.AreEqual(1, Consume(query))
  3908. End Sub
  3909. <Test()> _
  3910. Public Sub TestWhereSIsMatchNot()
  3911. Dim regex = New Regex("^abc")
  3912. Dim query = From c In _collection.AsQueryable(Of C)()
  3913. Where Not regex.IsMatch(c.S)
  3914. Select c
  3915. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3916. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3917. Assert.AreSame(_collection, translatedQuery.Collection)
  3918. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3919. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3920. Assert.IsNull(selectQuery.OrderBy)
  3921. Assert.IsNull(selectQuery.Projection)
  3922. Assert.IsNull(selectQuery.Skip)
  3923. Assert.IsNull(selectQuery.Take)
  3924. Assert.AreEqual("{ ""s"" : { ""$not"" : /^abc/ } }", selectQuery.BuildQuery().ToJson())
  3925. Assert.AreEqual(4, Consume(query))
  3926. End Sub
  3927. <Test()> _
  3928. Public Sub TestWhereSIsMatchStatic()
  3929. Dim query = From c In _collection.AsQueryable(Of C)()
  3930. Where Regex.IsMatch(c.S, "^abc")
  3931. Select c
  3932. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3933. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3934. Assert.AreSame(_collection, translatedQuery.Collection)
  3935. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3936. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3937. Assert.IsNull(selectQuery.OrderBy)
  3938. Assert.IsNull(selectQuery.Projection)
  3939. Assert.IsNull(selectQuery.Skip)
  3940. Assert.IsNull(selectQuery.Take)
  3941. Assert.AreEqual("{ ""s"" : /^abc/ }", selectQuery.BuildQuery().ToJson())
  3942. Assert.AreEqual(1, Consume(query))
  3943. End Sub
  3944. <Test()> _
  3945. Public Sub TestWhereSIsMatchStaticNot()
  3946. Dim query = From c In _collection.AsQueryable(Of C)()
  3947. Where Not Regex.IsMatch(c.S, "^abc")
  3948. Select c
  3949. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3950. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3951. Assert.AreSame(_collection, translatedQuery.Collection)
  3952. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3953. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3954. Assert.IsNull(selectQuery.OrderBy)
  3955. Assert.IsNull(selectQuery.Projection)
  3956. Assert.IsNull(selectQuery.Skip)
  3957. Assert.IsNull(selectQuery.Take)
  3958. Assert.AreEqual("{ ""s"" : { ""$not"" : /^abc/ } }", selectQuery.BuildQuery().ToJson())
  3959. Assert.AreEqual(4, Consume(query))
  3960. End Sub
  3961. <Test()> _
  3962. Public Sub TestWhereSIsMatchStaticWithOptions()
  3963. Dim query = From c In _collection.AsQueryable(Of C)()
  3964. Where Regex.IsMatch(c.S, "^abc", RegexOptions.IgnoreCase)
  3965. Select c
  3966. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3967. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3968. Assert.AreSame(_collection, translatedQuery.Collection)
  3969. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3970. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  3971. Assert.IsNull(selectQuery.OrderBy)
  3972. Assert.IsNull(selectQuery.Projection)
  3973. Assert.IsNull(selectQuery.Skip)
  3974. Assert.IsNull(selectQuery.Take)
  3975. Assert.AreEqual("{ ""s"" : /^abc/i }", selectQuery.BuildQuery().ToJson())
  3976. Assert.AreEqual(1, Consume(query))
  3977. End Sub
  3978. <Test()> _
  3979. Public Sub TestWhereSIsNullOrEmpty()
  3980. Dim tempCollection = _database.GetCollection("temp")
  3981. tempCollection.Drop()
  3982. tempCollection.Insert(New C())
  3983. ' serialized document will have no "s" field
  3984. tempCollection.Insert(New BsonDocument("s", BsonNull.Value))
  3985. ' work around [BsonIgnoreIfNull] on S
  3986. tempCollection.Insert(New C() With { _
  3987. .S = "" _
  3988. })
  3989. tempCollection.Insert(New C() With { _
  3990. .S = "x" _
  3991. })
  3992. Dim query = From c In tempCollection.AsQueryable(Of C)()
  3993. Where String.IsNullOrEmpty(c.S)
  3994. Select c
  3995. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  3996. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  3997. Assert.AreSame(tempCollection, translatedQuery.Collection)
  3998. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  3999. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4000. Assert.IsNull(selectQuery.OrderBy)
  4001. Assert.IsNull(selectQuery.Projection)
  4002. Assert.IsNull(selectQuery.Skip)
  4003. Assert.IsNull(selectQuery.Take)
  4004. Assert.AreEqual("{ ""$or"" : [{ ""s"" : { ""$type"" : 10 } }, { ""s"" : """" }] }", selectQuery.BuildQuery().ToJson())
  4005. Assert.AreEqual(2, Consume(query))
  4006. End Sub
  4007. <Test()> _
  4008. Public Sub TestWhereSLengthEquals3()
  4009. Dim query = From c In _collection.AsQueryable(Of C)()
  4010. Where c.S.Length = 3
  4011. Select c
  4012. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4013. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4014. Assert.AreSame(_collection, translatedQuery.Collection)
  4015. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4016. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4017. Assert.IsNull(selectQuery.OrderBy)
  4018. Assert.IsNull(selectQuery.Projection)
  4019. Assert.IsNull(selectQuery.Skip)
  4020. Assert.IsNull(selectQuery.Take)
  4021. Assert.AreEqual("{ ""s"" : /^.{3}$/s }", selectQuery.BuildQuery().ToJson())
  4022. Assert.AreEqual(1, Consume(query))
  4023. End Sub
  4024. <Test()> _
  4025. Public Sub TestWhereSLengthEquals3Not()
  4026. Dim query = From c In _collection.AsQueryable(Of C)()
  4027. Where Not (c.S.Length = 3)
  4028. Select c
  4029. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4030. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4031. Assert.AreSame(_collection, translatedQuery.Collection)
  4032. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4033. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4034. Assert.IsNull(selectQuery.OrderBy)
  4035. Assert.IsNull(selectQuery.Projection)
  4036. Assert.IsNull(selectQuery.Skip)
  4037. Assert.IsNull(selectQuery.Take)
  4038. Assert.AreEqual("{ ""s"" : { ""$not"" : /^.{3}$/s } }", selectQuery.BuildQuery().ToJson())
  4039. Assert.AreEqual(4, Consume(query))
  4040. End Sub
  4041. <Test()> _
  4042. Public Sub TestWhereSLengthGreaterThan3()
  4043. Dim query = From c In _collection.AsQueryable(Of C)()
  4044. Where c.S.Length > 3
  4045. Select c
  4046. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4047. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4048. Assert.AreSame(_collection, translatedQuery.Collection)
  4049. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4050. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4051. Assert.IsNull(selectQuery.OrderBy)
  4052. Assert.IsNull(selectQuery.Projection)
  4053. Assert.IsNull(selectQuery.Skip)
  4054. Assert.IsNull(selectQuery.Take)
  4055. Assert.AreEqual("{ ""s"" : /^.{4,}$/s }", selectQuery.BuildQuery().ToJson())
  4056. Assert.AreEqual(1, Consume(query))
  4057. End Sub
  4058. <Test()> _
  4059. Public Sub TestWhereSLengthGreaterThanOrEquals3()
  4060. Dim query = From c In _collection.AsQueryable(Of C)()
  4061. Where c.S.Length >= 3
  4062. Select c
  4063. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4064. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4065. Assert.AreSame(_collection, translatedQuery.Collection)
  4066. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4067. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4068. Assert.IsNull(selectQuery.OrderBy)
  4069. Assert.IsNull(selectQuery.Projection)
  4070. Assert.IsNull(selectQuery.Skip)
  4071. Assert.IsNull(selectQuery.Take)
  4072. Assert.AreEqual("{ ""s"" : /^.{3,}$/s }", selectQuery.BuildQuery().ToJson())
  4073. Assert.AreEqual(2, Consume(query))
  4074. End Sub
  4075. <Test()> _
  4076. Public Sub TestWhereSLengthLessThan3()
  4077. Dim query = From c In _collection.AsQueryable(Of C)()
  4078. Where c.S.Length < 3
  4079. Select c
  4080. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4081. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4082. Assert.AreSame(_collection, translatedQuery.Collection)
  4083. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4084. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4085. Assert.IsNull(selectQuery.OrderBy)
  4086. Assert.IsNull(selectQuery.Projection)
  4087. Assert.IsNull(selectQuery.Skip)
  4088. Assert.IsNull(selectQuery.Take)
  4089. Assert.AreEqual("{ ""s"" : /^.{0,2}$/s }", selectQuery.BuildQuery().ToJson())
  4090. Assert.AreEqual(0, Consume(query))
  4091. End Sub
  4092. <Test()> _
  4093. Public Sub TestWhereSLengthLessThanOrEquals3()
  4094. Dim query = From c In _collection.AsQueryable(Of C)()
  4095. Where c.S.Length <= 3
  4096. Select c
  4097. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4098. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4099. Assert.AreSame(_collection, translatedQuery.Collection)
  4100. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4101. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4102. Assert.IsNull(selectQuery.OrderBy)
  4103. Assert.IsNull(selectQuery.Projection)
  4104. Assert.IsNull(selectQuery.Skip)
  4105. Assert.IsNull(selectQuery.Take)
  4106. Assert.AreEqual("{ ""s"" : /^.{0,3}$/s }", selectQuery.BuildQuery().ToJson())
  4107. Assert.AreEqual(1, Consume(query))
  4108. End Sub
  4109. <Test()> _
  4110. Public Sub TestWhereSLengthNotEquals3()
  4111. Dim query = From c In _collection.AsQueryable(Of C)()
  4112. Where c.S.Length <> 3
  4113. Select c
  4114. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4115. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4116. Assert.AreSame(_collection, translatedQuery.Collection)
  4117. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4118. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4119. Assert.IsNull(selectQuery.OrderBy)
  4120. Assert.IsNull(selectQuery.Projection)
  4121. Assert.IsNull(selectQuery.Skip)
  4122. Assert.IsNull(selectQuery.Take)
  4123. Assert.AreEqual("{ ""s"" : { ""$not"" : /^.{3}$/s } }", selectQuery.BuildQuery().ToJson())
  4124. Assert.AreEqual(4, Consume(query))
  4125. End Sub
  4126. <Test()> _
  4127. Public Sub TestWhereSLengthNotEquals3Not()
  4128. Dim query = From c In _collection.AsQueryable(Of C)()
  4129. Where Not (c.S.Length <> 3)
  4130. Select c
  4131. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4132. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4133. Assert.AreSame(_collection, translatedQuery.Collection)
  4134. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4135. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4136. Assert.IsNull(selectQuery.OrderBy)
  4137. Assert.IsNull(selectQuery.Projection)
  4138. Assert.IsNull(selectQuery.Skip)
  4139. Assert.IsNull(selectQuery.Take)
  4140. Assert.AreEqual("{ ""s"" : /^.{3}$/s }", selectQuery.BuildQuery().ToJson())
  4141. Assert.AreEqual(1, Consume(query))
  4142. End Sub
  4143. <Test()> _
  4144. Public Sub TestWhereSNotEqualsAbc()
  4145. Dim query = From c In _collection.AsQueryable(Of C)()
  4146. Where c.S <> "abc"
  4147. Select c
  4148. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4149. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4150. Assert.AreSame(_collection, translatedQuery.Collection)
  4151. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4152. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4153. Assert.IsNull(selectQuery.OrderBy)
  4154. Assert.IsNull(selectQuery.Projection)
  4155. Assert.IsNull(selectQuery.Skip)
  4156. Assert.IsNull(selectQuery.Take)
  4157. Assert.AreEqual("{ ""s"" : { ""$ne"" : ""abc"" } }", selectQuery.BuildQuery().ToJson())
  4158. Assert.AreEqual(4, Consume(query))
  4159. End Sub
  4160. <Test()> _
  4161. Public Sub TestWhereSNotEqualsAbcNot()
  4162. Dim query = From c In _collection.AsQueryable(Of C)()
  4163. Where Not (c.S <> "abc")
  4164. Select c
  4165. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4166. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4167. Assert.AreSame(_collection, translatedQuery.Collection)
  4168. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4169. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4170. Assert.IsNull(selectQuery.OrderBy)
  4171. Assert.IsNull(selectQuery.Projection)
  4172. Assert.IsNull(selectQuery.Skip)
  4173. Assert.IsNull(selectQuery.Take)
  4174. Assert.AreEqual("{ ""s"" : ""abc"" }", selectQuery.BuildQuery().ToJson())
  4175. Assert.AreEqual(1, Consume(query))
  4176. End Sub
  4177. <Test()> _
  4178. Public Sub TestWhereSStartsWithAbc()
  4179. Dim query = From c In _collection.AsQueryable(Of C)()
  4180. Where c.S.StartsWith("abc")
  4181. Select c
  4182. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4183. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4184. Assert.AreSame(_collection, translatedQuery.Collection)
  4185. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4186. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4187. Assert.IsNull(selectQuery.OrderBy)
  4188. Assert.IsNull(selectQuery.Projection)
  4189. Assert.IsNull(selectQuery.Skip)
  4190. Assert.IsNull(selectQuery.Take)
  4191. Assert.AreEqual("{ ""s"" : /^abc/s }", selectQuery.BuildQuery().ToJson())
  4192. Assert.AreEqual(1, Consume(query))
  4193. End Sub
  4194. <Test()> _
  4195. Public Sub TestWhereSStartsWithAbcNot()
  4196. Dim query = From c In _collection.AsQueryable(Of C)()
  4197. Where Not c.S.StartsWith("abc")
  4198. Select c
  4199. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4200. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4201. Assert.AreSame(_collection, translatedQuery.Collection)
  4202. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4203. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4204. Assert.IsNull(selectQuery.OrderBy)
  4205. Assert.IsNull(selectQuery.Projection)
  4206. Assert.IsNull(selectQuery.Skip)
  4207. Assert.IsNull(selectQuery.Take)
  4208. Assert.AreEqual("{ ""s"" : { ""$not"" : /^abc/s } }", selectQuery.BuildQuery().ToJson())
  4209. Assert.AreEqual(4, Consume(query))
  4210. End Sub
  4211. <Test()> _
  4212. Public Sub TestWhereSSub1EqualsB()
  4213. Dim query = From c In _collection.AsQueryable(Of C)()
  4214. Where c.S(1) = "b"c
  4215. Select c
  4216. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4217. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4218. Assert.AreSame(_collection, translatedQuery.Collection)
  4219. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4220. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4221. Assert.IsNull(selectQuery.OrderBy)
  4222. Assert.IsNull(selectQuery.Projection)
  4223. Assert.IsNull(selectQuery.Skip)
  4224. Assert.IsNull(selectQuery.Take)
  4225. Assert.AreEqual("{ ""s"" : /^.{1}b/s }", selectQuery.BuildQuery().ToJson())
  4226. Assert.AreEqual(1, Consume(query))
  4227. End Sub
  4228. <Test()> _
  4229. Public Sub TestWhereSSub1NotEqualsB()
  4230. Dim query = From c In _collection.AsQueryable(Of C)()
  4231. Where c.S(1) <> "b"c
  4232. Select c
  4233. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4234. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4235. Assert.AreSame(_collection, translatedQuery.Collection)
  4236. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4237. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4238. Assert.IsNull(selectQuery.OrderBy)
  4239. Assert.IsNull(selectQuery.Projection)
  4240. Assert.IsNull(selectQuery.Skip)
  4241. Assert.IsNull(selectQuery.Take)
  4242. Assert.AreEqual("{ ""s"" : /^.{1}[^b]/s }", selectQuery.BuildQuery().ToJson())
  4243. Assert.AreEqual(1, Consume(query))
  4244. End Sub
  4245. <Test()> _
  4246. Public Sub TestWhereSTrimContainsXyz()
  4247. Dim query = From c In _collection.AsQueryable(Of C)()
  4248. Where c.S.Trim().Contains("xyz")
  4249. Select c
  4250. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4251. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4252. Assert.AreSame(_collection, translatedQuery.Collection)
  4253. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4254. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4255. Assert.IsNull(selectQuery.OrderBy)
  4256. Assert.IsNull(selectQuery.Projection)
  4257. Assert.IsNull(selectQuery.Skip)
  4258. Assert.IsNull(selectQuery.Take)
  4259. Assert.AreEqual("{ ""s"" : /^\s*.*xyz.*\s*$/s }", selectQuery.BuildQuery().ToJson())
  4260. Assert.AreEqual(1, Consume(query))
  4261. End Sub
  4262. <Test()> _
  4263. Public Sub TestWhereSTrimContainsXyzNot()
  4264. Dim query = From c In _collection.AsQueryable(Of C)()
  4265. Where Not c.S.Trim().Contains("xyz")
  4266. Select c
  4267. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4268. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4269. Assert.AreSame(_collection, translatedQuery.Collection)
  4270. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4271. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4272. Assert.IsNull(selectQuery.OrderBy)
  4273. Assert.IsNull(selectQuery.Projection)
  4274. Assert.IsNull(selectQuery.Skip)
  4275. Assert.IsNull(selectQuery.Take)
  4276. Assert.AreEqual("{ ""s"" : { ""$not"" : /^\s*.*xyz.*\s*$/s } }", selectQuery.BuildQuery().ToJson())
  4277. Assert.AreEqual(4, Consume(query))
  4278. End Sub
  4279. <Test()> _
  4280. Public Sub TestWhereSTrimEndsWithXyz()
  4281. Dim query = From c In _collection.AsQueryable(Of C)()
  4282. Where c.S.Trim().EndsWith("xyz")
  4283. Select c
  4284. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4285. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4286. Assert.AreSame(_collection, translatedQuery.Collection)
  4287. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4288. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4289. Assert.IsNull(selectQuery.OrderBy)
  4290. Assert.IsNull(selectQuery.Projection)
  4291. Assert.IsNull(selectQuery.Skip)
  4292. Assert.IsNull(selectQuery.Take)
  4293. Assert.AreEqual("{ ""s"" : /^\s*.*xyz\s*$/s }", selectQuery.BuildQuery().ToJson())
  4294. Assert.AreEqual(1, Consume(query))
  4295. End Sub
  4296. <Test()> _
  4297. Public Sub TestWhereSTrimEndsWithXyzNot()
  4298. Dim query = From c In _collection.AsQueryable(Of C)()
  4299. Where Not c.S.Trim().EndsWith("xyz")
  4300. Select c
  4301. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4302. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4303. Assert.AreSame(_collection, translatedQuery.Collection)
  4304. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4305. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4306. Assert.IsNull(selectQuery.OrderBy)
  4307. Assert.IsNull(selectQuery.Projection)
  4308. Assert.IsNull(selectQuery.Skip)
  4309. Assert.IsNull(selectQuery.Take)
  4310. Assert.AreEqual("{ ""s"" : { ""$not"" : /^\s*.*xyz\s*$/s } }", selectQuery.BuildQuery().ToJson())
  4311. Assert.AreEqual(4, Consume(query))
  4312. End Sub
  4313. <Test()> _
  4314. Public Sub TestWhereSTrimStartsWithXyz()
  4315. Dim query = From c In _collection.AsQueryable(Of C)()
  4316. Where c.S.Trim().StartsWith("xyz")
  4317. Select c
  4318. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4319. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4320. Assert.AreSame(_collection, translatedQuery.Collection)
  4321. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4322. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4323. Assert.IsNull(selectQuery.OrderBy)
  4324. Assert.IsNull(selectQuery.Projection)
  4325. Assert.IsNull(selectQuery.Skip)
  4326. Assert.IsNull(selectQuery.Take)
  4327. Assert.AreEqual("{ ""s"" : /^\s*xyz.*\s*$/s }", selectQuery.BuildQuery().ToJson())
  4328. Assert.AreEqual(1, Consume(query))
  4329. End Sub
  4330. <Test()> _
  4331. Public Sub TestWhereSTrimStartsWithXyzNot()
  4332. Dim query = From c In _collection.AsQueryable(Of C)()
  4333. Where Not c.S.Trim().StartsWith("xyz")
  4334. Select c
  4335. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4336. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4337. Assert.AreSame(_collection, translatedQuery.Collection)
  4338. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4339. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4340. Assert.IsNull(selectQuery.OrderBy)
  4341. Assert.IsNull(selectQuery.Projection)
  4342. Assert.IsNull(selectQuery.Skip)
  4343. Assert.IsNull(selectQuery.Take)
  4344. Assert.AreEqual("{ ""s"" : { ""$not"" : /^\s*xyz.*\s*$/s } }", selectQuery.BuildQuery().ToJson())
  4345. Assert.AreEqual(4, Consume(query))
  4346. End Sub
  4347. <Test()> _
  4348. Public Sub TestWhereSTrimStartTrimEndToLowerContainsXyz()
  4349. Dim query = From c In _collection.AsQueryable(Of C)()
  4350. Where c.S.TrimStart(" "c, "."c, "-"c, ControlChars.Tab).TrimEnd().ToLower().Contains("xyz")
  4351. Select c
  4352. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4353. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4354. Assert.AreSame(_collection, translatedQuery.Collection)
  4355. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4356. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4357. Assert.IsNull(selectQuery.OrderBy)
  4358. Assert.IsNull(selectQuery.Projection)
  4359. Assert.IsNull(selectQuery.Skip)
  4360. Assert.IsNull(selectQuery.Take)
  4361. Assert.AreEqual("{ ""s"" : /^[\ \.\-\t]*.*xyz.*\s*$/is }", selectQuery.BuildQuery().ToJson())
  4362. Assert.AreEqual(1, Consume(query))
  4363. End Sub
  4364. <Test()> _
  4365. Public Sub TestWhereSToLowerEqualsConstantLowerCaseValue()
  4366. Dim query = From c In _collection.AsQueryable(Of C)()
  4367. Where c.S.ToLower() = "abc"
  4368. Select c
  4369. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4370. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4371. Assert.AreSame(_collection, translatedQuery.Collection)
  4372. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4373. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4374. Assert.AreEqual("(C c) => (c.S.ToLower() == ""abc"")", ExpressionFormatter.ToString(selectQuery.Where))
  4375. Assert.IsNull(selectQuery.OrderBy)
  4376. Assert.IsNull(selectQuery.Projection)
  4377. Assert.IsNull(selectQuery.Skip)
  4378. Assert.IsNull(selectQuery.Take)
  4379. Assert.AreEqual("{ ""s"" : /^abc$/i }", selectQuery.BuildQuery().ToJson())
  4380. Assert.AreEqual(1, Consume(query))
  4381. End Sub
  4382. <Test()> _
  4383. Public Sub TestWhereSToLowerDoesNotEqualConstantLowerCaseValue()
  4384. Dim query = From c In _collection.AsQueryable(Of C)()
  4385. Where c.S.ToLower() <> "abc"
  4386. Select c
  4387. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4388. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4389. Assert.AreSame(_collection, translatedQuery.Collection)
  4390. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4391. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4392. Assert.AreEqual("(C c) => (c.S.ToLower() != ""abc"")", ExpressionFormatter.ToString(selectQuery.Where))
  4393. Assert.IsNull(selectQuery.OrderBy)
  4394. Assert.IsNull(selectQuery.Projection)
  4395. Assert.IsNull(selectQuery.Skip)
  4396. Assert.IsNull(selectQuery.Take)
  4397. Assert.AreEqual("{ ""s"" : { ""$not"" : /^abc$/i } }", selectQuery.BuildQuery().ToJson())
  4398. Assert.AreEqual(4, Consume(query))
  4399. End Sub
  4400. <Test()> _
  4401. Public Sub TestWhereSToLowerEqualsConstantMixedCaseValue()
  4402. Dim query = From c In _collection.AsQueryable(Of C)()
  4403. Where c.S.ToLower() = "Abc"
  4404. Select c
  4405. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4406. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4407. Assert.AreSame(_collection, translatedQuery.Collection)
  4408. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4409. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4410. Assert.AreEqual("(C c) => (c.S.ToLower() == ""Abc"")", ExpressionFormatter.ToString(selectQuery.Where))
  4411. Assert.IsNull(selectQuery.OrderBy)
  4412. Assert.IsNull(selectQuery.Projection)
  4413. Assert.IsNull(selectQuery.Skip)
  4414. Assert.IsNull(selectQuery.Take)
  4415. Assert.AreEqual("{ ""_id"" : { ""$type"" : -1 } }", selectQuery.BuildQuery().ToJson())
  4416. Assert.AreEqual(0, Consume(query))
  4417. End Sub
  4418. <Test()> _
  4419. Public Sub TestWhereSToLowerDoesNotEqualConstantMixedCaseValue()
  4420. Dim query = From c In _collection.AsQueryable(Of C)()
  4421. Where c.S.ToLower() <> "Abc"
  4422. Select c
  4423. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4424. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4425. Assert.AreSame(_collection, translatedQuery.Collection)
  4426. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4427. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4428. Assert.AreEqual("(C c) => (c.S.ToLower() != ""Abc"")", ExpressionFormatter.ToString(selectQuery.Where))
  4429. Assert.IsNull(selectQuery.OrderBy)
  4430. Assert.IsNull(selectQuery.Projection)
  4431. Assert.IsNull(selectQuery.Skip)
  4432. Assert.IsNull(selectQuery.Take)
  4433. Assert.AreEqual("{ }", selectQuery.BuildQuery().ToJson())
  4434. Assert.AreEqual(5, Consume(query))
  4435. End Sub
  4436. <Test()> _
  4437. Public Sub TestWhereSToLowerEqualsNullValue()
  4438. Dim query = From c In _collection.AsQueryable(Of C)()
  4439. Where c.S.ToLower() = Nothing
  4440. Select c
  4441. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4442. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4443. Assert.AreSame(_collection, translatedQuery.Collection)
  4444. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4445. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4446. Assert.IsNull(selectQuery.OrderBy)
  4447. Assert.IsNull(selectQuery.Projection)
  4448. Assert.IsNull(selectQuery.Skip)
  4449. Assert.IsNull(selectQuery.Take)
  4450. Assert.AreEqual("{ ""s"" : null }", selectQuery.BuildQuery().ToJson())
  4451. Assert.AreEqual(3, Consume(query))
  4452. End Sub
  4453. <Test()> _
  4454. Public Sub TestWhereSToLowerDoesNotEqualNullValue()
  4455. Dim query = From c In _collection.AsQueryable(Of C)()
  4456. Where c.S.ToLower() <> Nothing
  4457. Select c
  4458. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4459. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4460. Assert.AreSame(_collection, translatedQuery.Collection)
  4461. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4462. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4463. Assert.IsNull(selectQuery.OrderBy)
  4464. Assert.IsNull(selectQuery.Projection)
  4465. Assert.IsNull(selectQuery.Skip)
  4466. Assert.IsNull(selectQuery.Take)
  4467. Assert.AreEqual("{ ""s"" : { ""$ne"" : null } }", selectQuery.BuildQuery().ToJson())
  4468. Assert.AreEqual(2, Consume(query))
  4469. End Sub
  4470. <Test()> _
  4471. Public Sub TestWhereSToUpperEqualsConstantLowerCaseValue()
  4472. Dim query = From c In _collection.AsQueryable(Of C)()
  4473. Where c.S.ToUpper() = "abc"
  4474. Select c
  4475. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4476. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4477. Assert.AreSame(_collection, translatedQuery.Collection)
  4478. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4479. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4480. Assert.AreEqual("(C c) => (c.S.ToUpper() == ""abc"")", ExpressionFormatter.ToString(selectQuery.Where))
  4481. Assert.IsNull(selectQuery.OrderBy)
  4482. Assert.IsNull(selectQuery.Projection)
  4483. Assert.IsNull(selectQuery.Skip)
  4484. Assert.IsNull(selectQuery.Take)
  4485. Assert.AreEqual("{ ""_id"" : { ""$type"" : -1 } }", selectQuery.BuildQuery().ToJson())
  4486. Assert.AreEqual(0, Consume(query))
  4487. End Sub
  4488. <Test()> _
  4489. Public Sub TestWhereSToUpperDoesNotEqualConstantLowerCaseValue()
  4490. Dim query = From c In _collection.AsQueryable(Of C)()
  4491. Where c.S.ToUpper() <> "abc"
  4492. Select c
  4493. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4494. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4495. Assert.AreSame(_collection, translatedQuery.Collection)
  4496. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4497. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4498. Assert.AreEqual("(C c) => (c.S.ToUpper() != ""abc"")", ExpressionFormatter.ToString(selectQuery.Where))
  4499. Assert.IsNull(selectQuery.OrderBy)
  4500. Assert.IsNull(selectQuery.Projection)
  4501. Assert.IsNull(selectQuery.Skip)
  4502. Assert.IsNull(selectQuery.Take)
  4503. Assert.AreEqual("{ }", selectQuery.BuildQuery().ToJson())
  4504. Assert.AreEqual(5, Consume(query))
  4505. End Sub
  4506. <Test()> _
  4507. Public Sub TestWhereSToUpperEqualsConstantMixedCaseValue()
  4508. Dim query = From c In _collection.AsQueryable(Of C)()
  4509. Where c.S.ToUpper() = "Abc"
  4510. Select c
  4511. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4512. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4513. Assert.AreSame(_collection, translatedQuery.Collection)
  4514. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4515. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4516. Assert.AreEqual("(C c) => (c.S.ToUpper() == ""Abc"")", ExpressionFormatter.ToString(selectQuery.Where))
  4517. Assert.IsNull(selectQuery.OrderBy)
  4518. Assert.IsNull(selectQuery.Projection)
  4519. Assert.IsNull(selectQuery.Skip)
  4520. Assert.IsNull(selectQuery.Take)
  4521. Assert.AreEqual("{ ""_id"" : { ""$type"" : -1 } }", selectQuery.BuildQuery().ToJson())
  4522. Assert.AreEqual(0, Consume(query))
  4523. End Sub
  4524. <Test()> _
  4525. Public Sub TestWhereSToUpperDoesNotEqualConstantMixedCaseValue()
  4526. Dim query = From c In _collection.AsQueryable(Of C)()
  4527. Where c.S.ToUpper() <> "Abc"
  4528. Select c
  4529. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4530. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4531. Assert.AreSame(_collection, translatedQuery.Collection)
  4532. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4533. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4534. Assert.AreEqual("(C c) => (c.S.ToUpper() != ""Abc"")", ExpressionFormatter.ToString(selectQuery.Where))
  4535. Assert.IsNull(selectQuery.OrderBy)
  4536. Assert.IsNull(selectQuery.Projection)
  4537. Assert.IsNull(selectQuery.Skip)
  4538. Assert.IsNull(selectQuery.Take)
  4539. Assert.AreEqual("{ }", selectQuery.BuildQuery().ToJson())
  4540. Assert.AreEqual(5, Consume(query))
  4541. End Sub
  4542. <Test()> _
  4543. Public Sub TestWhereSToUpperEqualsNullValue()
  4544. Dim query = From c In _collection.AsQueryable(Of C)()
  4545. Where c.S.ToUpper() = Nothing
  4546. Select c
  4547. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4548. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4549. Assert.AreSame(_collection, translatedQuery.Collection)
  4550. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4551. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4552. Assert.IsNull(selectQuery.OrderBy)
  4553. Assert.IsNull(selectQuery.Projection)
  4554. Assert.IsNull(selectQuery.Skip)
  4555. Assert.IsNull(selectQuery.Take)
  4556. Assert.AreEqual("{ ""s"" : null }", selectQuery.BuildQuery().ToJson())
  4557. Assert.AreEqual(3, Consume(query))
  4558. End Sub
  4559. <Test()> _
  4560. Public Sub TestWhereSToUpperDoesNotEqualNullValue()
  4561. Dim query = From c In _collection.AsQueryable(Of C)()
  4562. Where c.S.ToUpper() <> Nothing
  4563. Select c
  4564. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4565. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4566. Assert.AreSame(_collection, translatedQuery.Collection)
  4567. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4568. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4569. Assert.IsNull(selectQuery.OrderBy)
  4570. Assert.IsNull(selectQuery.Projection)
  4571. Assert.IsNull(selectQuery.Skip)
  4572. Assert.IsNull(selectQuery.Take)
  4573. Assert.AreEqual("{ ""s"" : { ""$ne"" : null } }", selectQuery.BuildQuery().ToJson())
  4574. Assert.AreEqual(2, Consume(query))
  4575. End Sub
  4576. <Test()> _
  4577. Public Sub TestWhereSystemProfileInfoDurationGreatherThan10Seconds()
  4578. Dim query = From pi In _systemProfileCollection.AsQueryable(Of SystemProfileInfo)()
  4579. Where pi.Duration > TimeSpan.FromSeconds(10)
  4580. Select pi
  4581. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4582. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4583. Assert.AreSame(_systemProfileCollection, translatedQuery.Collection)
  4584. Assert.AreSame(GetType(SystemProfileInfo), translatedQuery.DocumentType)
  4585. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4586. Assert.AreEqual("(SystemProfileInfo pi) => (pi.Duration > TimeSpan:(00:00:10))", ExpressionFormatter.ToString(selectQuery.Where))
  4587. Assert.IsNull(selectQuery.OrderBy)
  4588. Assert.IsNull(selectQuery.Projection)
  4589. Assert.IsNull(selectQuery.Skip)
  4590. Assert.IsNull(selectQuery.Take)
  4591. Assert.AreEqual("{ ""millis"" : { ""$gt"" : 10000.0 } }", selectQuery.BuildQuery().ToJson())
  4592. End Sub
  4593. <Test()> _
  4594. Public Sub TestWhereSystemProfileInfoNamespaceEqualsNs()
  4595. Dim query = From pi In _systemProfileCollection.AsQueryable(Of SystemProfileInfo)()
  4596. Where pi.[Namespace] = "ns"
  4597. Select pi
  4598. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4599. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4600. Assert.AreSame(_systemProfileCollection, translatedQuery.Collection)
  4601. Assert.AreSame(GetType(SystemProfileInfo), translatedQuery.DocumentType)
  4602. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4603. Assert.AreEqual("(SystemProfileInfo pi) => (pi.Namespace == ""ns"")", ExpressionFormatter.ToString(selectQuery.Where))
  4604. Assert.IsNull(selectQuery.OrderBy)
  4605. Assert.IsNull(selectQuery.Projection)
  4606. Assert.IsNull(selectQuery.Skip)
  4607. Assert.IsNull(selectQuery.Take)
  4608. Assert.AreEqual("{ ""ns"" : ""ns"" }", selectQuery.BuildQuery().ToJson())
  4609. End Sub
  4610. <Test()> _
  4611. Public Sub TestWhereSystemProfileInfoNumberScannedGreaterThan1000()
  4612. Dim query = From pi In _systemProfileCollection.AsQueryable(Of SystemProfileInfo)()
  4613. Where pi.NumberScanned > 1000
  4614. Select pi
  4615. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4616. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4617. Assert.AreSame(_systemProfileCollection, translatedQuery.Collection)
  4618. Assert.AreSame(GetType(SystemProfileInfo), translatedQuery.DocumentType)
  4619. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4620. Assert.AreEqual("(SystemProfileInfo pi) => (pi.NumberScanned > 1000)", ExpressionFormatter.ToString(selectQuery.Where))
  4621. Assert.IsNull(selectQuery.OrderBy)
  4622. Assert.IsNull(selectQuery.Projection)
  4623. Assert.IsNull(selectQuery.Skip)
  4624. Assert.IsNull(selectQuery.Take)
  4625. Assert.AreEqual("{ ""nscanned"" : { ""$gt"" : 1000 } }", selectQuery.BuildQuery().ToJson())
  4626. End Sub
  4627. <Test()> _
  4628. Public Sub TestWhereSystemProfileInfoTimeStampGreatherThanJan12012()
  4629. Dim query = From pi In _systemProfileCollection.AsQueryable(Of SystemProfileInfo)()
  4630. Where pi.Timestamp > New DateTime(2012, 1, 1, 0, 0, 0, DateTimeKind.Utc)
  4631. Select pi
  4632. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4633. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4634. Assert.AreSame(_systemProfileCollection, translatedQuery.Collection)
  4635. Assert.AreSame(GetType(SystemProfileInfo), translatedQuery.DocumentType)
  4636. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4637. Assert.AreEqual("(SystemProfileInfo pi) => (pi.Timestamp > DateTime:(2012-01-01T00:00:00Z))", ExpressionFormatter.ToString(selectQuery.Where))
  4638. Assert.IsNull(selectQuery.OrderBy)
  4639. Assert.IsNull(selectQuery.Projection)
  4640. Assert.IsNull(selectQuery.Skip)
  4641. Assert.IsNull(selectQuery.Take)
  4642. Assert.AreEqual("{ ""ts"" : { ""$gt"" : ISODate(""2012-01-01T00:00:00Z"") } }", selectQuery.BuildQuery().ToJson())
  4643. End Sub
  4644. <Test()> _
  4645. Public Sub TestWhereTripleAnd()
  4646. If _server.BuildInfo.Version >= New Version(2, 0) Then
  4647. ' the query is a bit odd in order to force the built query to be promoted to $and form
  4648. Dim query = From c In _collection.AsQueryable(Of C)()
  4649. Where c.X >= 0 AndAlso c.X >= 1 AndAlso c.Y = 11
  4650. Select c
  4651. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4652. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4653. Assert.AreSame(_collection, translatedQuery.Collection)
  4654. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4655. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4656. Assert.IsNull(selectQuery.OrderBy)
  4657. Assert.IsNull(selectQuery.Projection)
  4658. Assert.IsNull(selectQuery.Skip)
  4659. Assert.IsNull(selectQuery.Take)
  4660. Assert.AreEqual("{ ""$and"" : [{ ""x"" : { ""$gte"" : 0 } }, { ""x"" : { ""$gte"" : 1 } }, { ""y"" : 11 }] }", selectQuery.BuildQuery().ToJson())
  4661. Assert.AreEqual(2, Consume(query))
  4662. End If
  4663. End Sub
  4664. <Test()> _
  4665. Public Sub TestWhereTripleOr()
  4666. Dim query = From c In _collection.AsQueryable(Of C)()
  4667. Where c.X = 1 OrElse c.Y = 33 OrElse c.S = "x is 1"
  4668. Select c
  4669. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4670. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4671. Assert.AreSame(_collection, translatedQuery.Collection)
  4672. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4673. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4674. Assert.IsNull(selectQuery.OrderBy)
  4675. Assert.IsNull(selectQuery.Projection)
  4676. Assert.IsNull(selectQuery.Skip)
  4677. Assert.IsNull(selectQuery.Take)
  4678. Assert.AreEqual("{ ""$or"" : [{ ""x"" : 1 }, { ""y"" : 33 }, { ""s"" : ""x is 1"" }] }", selectQuery.BuildQuery().ToJson())
  4679. Assert.AreEqual(2, Consume(query))
  4680. End Sub
  4681. <Test()> _
  4682. <ExpectedException(GetType(NotSupportedException), ExpectedMessage:="The indexed version of the Where query operator is not supported.")> _
  4683. Public Sub TestWhereWithIndex()
  4684. Dim query = _collection.AsQueryable(Of C)().Where(Function(c, i) True)
  4685. query.ToList()
  4686. ' execute query
  4687. End Sub
  4688. <Test()> _
  4689. Public Sub TestWhereXEquals1()
  4690. Dim query = From c In _collection.AsQueryable(Of C)()
  4691. Where c.X = 1
  4692. Select c
  4693. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4694. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4695. Assert.AreSame(_collection, translatedQuery.Collection)
  4696. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4697. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4698. Assert.IsNull(selectQuery.OrderBy)
  4699. Assert.IsNull(selectQuery.Projection)
  4700. Assert.IsNull(selectQuery.Skip)
  4701. Assert.IsNull(selectQuery.Take)
  4702. Assert.AreEqual("{ ""x"" : 1 }", selectQuery.BuildQuery().ToJson())
  4703. Assert.AreEqual(1, Consume(query))
  4704. End Sub
  4705. <Test()> _
  4706. Public Sub TestWhereXEquals1AndYEquals11()
  4707. Dim query = From c In _collection.AsQueryable(Of C)()
  4708. Where c.X = 1 AndAlso c.Y = 11
  4709. Select c
  4710. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4711. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4712. Assert.AreSame(_collection, translatedQuery.Collection)
  4713. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4714. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4715. Assert.IsNull(selectQuery.OrderBy)
  4716. Assert.IsNull(selectQuery.Projection)
  4717. Assert.IsNull(selectQuery.Skip)
  4718. Assert.IsNull(selectQuery.Take)
  4719. Assert.AreEqual("{ ""x"" : 1, ""y"" : 11 }", selectQuery.BuildQuery().ToJson())
  4720. Assert.AreEqual(1, Consume(query))
  4721. End Sub
  4722. <Test()> _
  4723. Public Sub TestWhereXEquals1AndYEquals11UsingTwoWhereClauses()
  4724. ' note: using different variable names in the two where clauses to test parameter replacement when combining predicates
  4725. Dim query = _collection.AsQueryable(Of C)().Where(Function(c) c.X = 1).Where(Function(d) d.Y = 11)
  4726. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4727. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4728. Assert.AreSame(_collection, translatedQuery.Collection)
  4729. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4730. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4731. ' note parameter replacement from c to d in second clause
  4732. Assert.IsNull(selectQuery.OrderBy)
  4733. Assert.IsNull(selectQuery.Projection)
  4734. Assert.IsNull(selectQuery.Skip)
  4735. Assert.IsNull(selectQuery.Take)
  4736. Assert.AreEqual("{ ""x"" : 1, ""y"" : 11 }", selectQuery.BuildQuery().ToJson())
  4737. Assert.AreEqual(1, Consume(query))
  4738. End Sub
  4739. <Test()> _
  4740. Public Sub TestWhereXEquals1AndYEquals11Not()
  4741. Dim query = From c In _collection.AsQueryable(Of C)()
  4742. Where Not (c.X = 1 AndAlso c.Y = 11)
  4743. Select c
  4744. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4745. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4746. Assert.AreSame(_collection, translatedQuery.Collection)
  4747. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4748. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4749. Assert.IsNull(selectQuery.OrderBy)
  4750. Assert.IsNull(selectQuery.Projection)
  4751. Assert.IsNull(selectQuery.Skip)
  4752. Assert.IsNull(selectQuery.Take)
  4753. Assert.AreEqual("{ ""$or"" : [{ ""x"" : { ""$ne"" : 1 } }, { ""y"" : { ""$ne"" : 11 } }] }", selectQuery.BuildQuery().ToJson())
  4754. Assert.AreEqual(4, Consume(query))
  4755. End Sub
  4756. <Test()> _
  4757. Public Sub TestWhereXEquals1AndYEquals11AndZEquals11()
  4758. Dim query = From c In _collection.AsQueryable(Of C)()
  4759. Where c.X = 1 AndAlso c.Y = 11 AndAlso c.D.Z = 11
  4760. Select c
  4761. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4762. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4763. Assert.AreSame(_collection, translatedQuery.Collection)
  4764. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4765. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4766. Assert.IsNull(selectQuery.OrderBy)
  4767. Assert.IsNull(selectQuery.Projection)
  4768. Assert.IsNull(selectQuery.Skip)
  4769. Assert.IsNull(selectQuery.Take)
  4770. Assert.AreEqual("{ ""x"" : 1, ""y"" : 11, ""d.z"" : 11 }", selectQuery.BuildQuery().ToJson())
  4771. Assert.AreEqual(1, Consume(query))
  4772. End Sub
  4773. <Test()> _
  4774. Public Sub TestWhereXEquals1Not()
  4775. Dim query = From c In _collection.AsQueryable(Of C)()
  4776. Where Not (c.X = 1)
  4777. Select c
  4778. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4779. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4780. Assert.AreSame(_collection, translatedQuery.Collection)
  4781. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4782. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4783. Assert.IsNull(selectQuery.OrderBy)
  4784. Assert.IsNull(selectQuery.Projection)
  4785. Assert.IsNull(selectQuery.Skip)
  4786. Assert.IsNull(selectQuery.Take)
  4787. Assert.AreEqual("{ ""x"" : { ""$ne"" : 1 } }", selectQuery.BuildQuery().ToJson())
  4788. Assert.AreEqual(4, Consume(query))
  4789. End Sub
  4790. <Test()> _
  4791. Public Sub TestWhereXEquals1OrYEquals33()
  4792. Dim query = From c In _collection.AsQueryable(Of C)()
  4793. Where c.X = 1 OrElse c.Y = 33
  4794. Select c
  4795. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4796. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4797. Assert.AreSame(_collection, translatedQuery.Collection)
  4798. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4799. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4800. Assert.IsNull(selectQuery.OrderBy)
  4801. Assert.IsNull(selectQuery.Projection)
  4802. Assert.IsNull(selectQuery.Skip)
  4803. Assert.IsNull(selectQuery.Take)
  4804. Assert.AreEqual("{ ""$or"" : [{ ""x"" : 1 }, { ""y"" : 33 }] }", selectQuery.BuildQuery().ToJson())
  4805. Assert.AreEqual(2, Consume(query))
  4806. End Sub
  4807. <Test()> _
  4808. Public Sub TestWhereXEquals1OrYEquals33Not()
  4809. Dim query = From c In _collection.AsQueryable(Of C)()
  4810. Where Not (c.X = 1 OrElse c.Y = 33)
  4811. Select c
  4812. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4813. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4814. Assert.AreSame(_collection, translatedQuery.Collection)
  4815. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4816. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4817. Assert.IsNull(selectQuery.OrderBy)
  4818. Assert.IsNull(selectQuery.Projection)
  4819. Assert.IsNull(selectQuery.Skip)
  4820. Assert.IsNull(selectQuery.Take)
  4821. 'Assert.AreEqual("{ ""$nor"" : [{ ""x"" : 1 }, { ""y"" : 33 }] }", selectQuery.BuildQuery().ToJson())
  4822. Assert.AreEqual("{ ""x"" : { ""$ne"" : 1 }, ""y"" : { ""$ne"" : 33 } }", selectQuery.BuildQuery().ToJson())
  4823. Assert.AreEqual(3, Consume(query))
  4824. End Sub
  4825. <Test()> _
  4826. Public Sub TestWhereXEquals1OrYEquals33NotNot()
  4827. Dim query = From c In _collection.AsQueryable(Of C)()
  4828. Where Not Not (c.X = 1 OrElse c.Y = 33)
  4829. Select c
  4830. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4831. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4832. Assert.AreSame(_collection, translatedQuery.Collection)
  4833. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4834. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4835. Assert.IsNull(selectQuery.OrderBy)
  4836. Assert.IsNull(selectQuery.Projection)
  4837. Assert.IsNull(selectQuery.Skip)
  4838. Assert.IsNull(selectQuery.Take)
  4839. Assert.AreEqual("{ ""$or"" : [{ ""x"" : 1 }, { ""y"" : 33 }] }", selectQuery.BuildQuery().ToJson())
  4840. Assert.AreEqual(2, Consume(query))
  4841. End Sub
  4842. <Test()> _
  4843. Public Sub TestWhereXEquals1UsingJavaScript()
  4844. Dim query__1 = From c In _collection.AsQueryable(Of C)()
  4845. Where c.X = 1 AndAlso Query.Where("this.x < 9").Inject()
  4846. Select c
  4847. Dim translatedQuery = MongoQueryTranslator.Translate(query__1)
  4848. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4849. Assert.AreSame(_collection, translatedQuery.Collection)
  4850. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4851. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4852. Assert.IsNull(selectQuery.OrderBy)
  4853. Assert.IsNull(selectQuery.Projection)
  4854. Assert.IsNull(selectQuery.Skip)
  4855. Assert.IsNull(selectQuery.Take)
  4856. Assert.AreEqual("{ ""x"" : 1, ""$where"" : { ""$code"" : ""this.x < 9"" } }", selectQuery.BuildQuery().ToJson())
  4857. Assert.AreEqual(1, Consume(query__1))
  4858. End Sub
  4859. <Test()> _
  4860. Public Sub TestWhereXGreaterThan1()
  4861. Dim query = From c In _collection.AsQueryable(Of C)()
  4862. Where c.X > 1
  4863. Select c
  4864. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4865. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4866. Assert.AreSame(_collection, translatedQuery.Collection)
  4867. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4868. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4869. Assert.IsNull(selectQuery.OrderBy)
  4870. Assert.IsNull(selectQuery.Projection)
  4871. Assert.IsNull(selectQuery.Skip)
  4872. Assert.IsNull(selectQuery.Take)
  4873. Assert.AreEqual("{ ""x"" : { ""$gt"" : 1 } }", selectQuery.BuildQuery().ToJson())
  4874. Assert.AreEqual(4, Consume(query))
  4875. End Sub
  4876. <Test()> _
  4877. Public Sub TestWhereXGreaterThan1AndLessThan3()
  4878. Dim query = From c In _collection.AsQueryable(Of C)()
  4879. Where c.X > 1 AndAlso c.X < 3
  4880. Select c
  4881. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4882. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4883. Assert.AreSame(_collection, translatedQuery.Collection)
  4884. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4885. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4886. Assert.IsNull(selectQuery.OrderBy)
  4887. Assert.IsNull(selectQuery.Projection)
  4888. Assert.IsNull(selectQuery.Skip)
  4889. Assert.IsNull(selectQuery.Take)
  4890. Assert.AreEqual("{ ""x"" : { ""$gt"" : 1, ""$lt"" : 3 } }", selectQuery.BuildQuery().ToJson())
  4891. Assert.AreEqual(1, Consume(query))
  4892. End Sub
  4893. <Test()> _
  4894. Public Sub TestWhereXGreaterThan1AndLessThan3Not()
  4895. Dim query = From c In _collection.AsQueryable(Of C)()
  4896. Where Not (c.X > 1 AndAlso c.X < 3)
  4897. Select c
  4898. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4899. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4900. Assert.AreSame(_collection, translatedQuery.Collection)
  4901. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4902. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4903. Assert.IsNull(selectQuery.OrderBy)
  4904. Assert.IsNull(selectQuery.Projection)
  4905. Assert.IsNull(selectQuery.Skip)
  4906. Assert.IsNull(selectQuery.Take)
  4907. Assert.AreEqual("{ ""$or"" : [{ ""x"" : { ""$lte"" : 1 } }, { ""x"" : { ""$gte"" : 3 } }] }", selectQuery.BuildQuery().ToJson())
  4908. Assert.AreEqual(4, Consume(query))
  4909. End Sub
  4910. <Test()> _
  4911. Public Sub TestWhereXGreaterThan1Not()
  4912. Dim query = From c In _collection.AsQueryable(Of C)()
  4913. Where Not (c.X > 1)
  4914. Select c
  4915. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4916. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4917. Assert.AreSame(_collection, translatedQuery.Collection)
  4918. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4919. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4920. Assert.IsNull(selectQuery.OrderBy)
  4921. Assert.IsNull(selectQuery.Projection)
  4922. Assert.IsNull(selectQuery.Skip)
  4923. Assert.IsNull(selectQuery.Take)
  4924. Assert.AreEqual("{ ""x"" : { ""$lte"" : 1 } }", selectQuery.BuildQuery().ToJson())
  4925. Assert.AreEqual(1, Consume(query))
  4926. End Sub
  4927. <Test()> _
  4928. Public Sub TestWhereXGreaterThan1Reversed()
  4929. Dim query = From c In _collection.AsQueryable(Of C)()
  4930. Where 1 < c.X
  4931. Select c
  4932. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4933. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4934. Assert.AreSame(_collection, translatedQuery.Collection)
  4935. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4936. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4937. Assert.IsNull(selectQuery.OrderBy)
  4938. Assert.IsNull(selectQuery.Projection)
  4939. Assert.IsNull(selectQuery.Skip)
  4940. Assert.IsNull(selectQuery.Take)
  4941. Assert.AreEqual("{ ""x"" : { ""$gt"" : 1 } }", selectQuery.BuildQuery().ToJson())
  4942. Assert.AreEqual(4, Consume(query))
  4943. End Sub
  4944. <Test()> _
  4945. Public Sub TestWhereXGreaterThanOrEquals1()
  4946. Dim query = From c In _collection.AsQueryable(Of C)()
  4947. Where c.X >= 1
  4948. Select c
  4949. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4950. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4951. Assert.AreSame(_collection, translatedQuery.Collection)
  4952. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4953. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4954. Assert.IsNull(selectQuery.OrderBy)
  4955. Assert.IsNull(selectQuery.Projection)
  4956. Assert.IsNull(selectQuery.Skip)
  4957. Assert.IsNull(selectQuery.Take)
  4958. Assert.AreEqual("{ ""x"" : { ""$gte"" : 1 } }", selectQuery.BuildQuery().ToJson())
  4959. Assert.AreEqual(5, Consume(query))
  4960. End Sub
  4961. <Test()> _
  4962. Public Sub TestWhereXGreaterThanOrEquals1Not()
  4963. Dim query = From c In _collection.AsQueryable(Of C)()
  4964. Where Not (c.X >= 1)
  4965. Select c
  4966. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4967. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4968. Assert.AreSame(_collection, translatedQuery.Collection)
  4969. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4970. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4971. Assert.IsNull(selectQuery.OrderBy)
  4972. Assert.IsNull(selectQuery.Projection)
  4973. Assert.IsNull(selectQuery.Skip)
  4974. Assert.IsNull(selectQuery.Take)
  4975. Assert.AreEqual("{ ""x"" : { ""$lt"" : 1 } }", selectQuery.BuildQuery().ToJson())
  4976. Assert.AreEqual(0, Consume(query))
  4977. End Sub
  4978. <Test()> _
  4979. Public Sub TestWhereXGreaterThanOrEquals1Reversed()
  4980. Dim query = From c In _collection.AsQueryable(Of C)()
  4981. Where 1 <= c.X
  4982. Select c
  4983. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  4984. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  4985. Assert.AreSame(_collection, translatedQuery.Collection)
  4986. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  4987. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  4988. Assert.IsNull(selectQuery.OrderBy)
  4989. Assert.IsNull(selectQuery.Projection)
  4990. Assert.IsNull(selectQuery.Skip)
  4991. Assert.IsNull(selectQuery.Take)
  4992. Assert.AreEqual("{ ""x"" : { ""$gte"" : 1 } }", selectQuery.BuildQuery().ToJson())
  4993. Assert.AreEqual(5, Consume(query))
  4994. End Sub
  4995. <Test()> _
  4996. Public Sub TestWhereXIn1Or9()
  4997. Dim query = From c In _collection.AsQueryable(Of C)()
  4998. Where c.X.[In]({1, 9})
  4999. Select c
  5000. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5001. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5002. Assert.AreSame(_collection, translatedQuery.Collection)
  5003. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5004. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5005. Assert.IsNull(selectQuery.OrderBy)
  5006. Assert.IsNull(selectQuery.Projection)
  5007. Assert.IsNull(selectQuery.Skip)
  5008. Assert.IsNull(selectQuery.Take)
  5009. Assert.AreEqual("{ ""x"" : { ""$in"" : [1, 9] } }", selectQuery.BuildQuery().ToJson())
  5010. Assert.AreEqual(1, Consume(query))
  5011. End Sub
  5012. <Test()> _
  5013. Public Sub TestWhereXIn1Or9Not()
  5014. Dim query = From c In _collection.AsQueryable(Of C)()
  5015. Where Not c.X.[In]({1, 9})
  5016. Select c
  5017. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5018. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5019. Assert.AreSame(_collection, translatedQuery.Collection)
  5020. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5021. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5022. Assert.IsNull(selectQuery.OrderBy)
  5023. Assert.IsNull(selectQuery.Projection)
  5024. Assert.IsNull(selectQuery.Skip)
  5025. Assert.IsNull(selectQuery.Take)
  5026. Assert.AreEqual("{ ""x"" : { ""$nin"" : [1, 9] } }", selectQuery.BuildQuery().ToJson())
  5027. Assert.AreEqual(4, Consume(query))
  5028. End Sub
  5029. <Test()> _
  5030. Public Sub TestWhereXIsTypeInt32()
  5031. Dim query__1 = From c In _collection.AsQueryable(Of C)()
  5032. Where Query.Type("x", BsonType.Int32).Inject()
  5033. Select c
  5034. Dim translatedQuery = MongoQueryTranslator.Translate(query__1)
  5035. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5036. Assert.AreSame(_collection, translatedQuery.Collection)
  5037. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5038. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5039. Assert.IsNull(selectQuery.OrderBy)
  5040. Assert.IsNull(selectQuery.Projection)
  5041. Assert.IsNull(selectQuery.Skip)
  5042. Assert.IsNull(selectQuery.Take)
  5043. Assert.AreEqual("{ ""x"" : { ""$type"" : 16 } }", selectQuery.BuildQuery().ToJson())
  5044. Assert.AreEqual(5, Consume(query__1))
  5045. End Sub
  5046. <Test()> _
  5047. Public Sub TestWhereXIsTypeInt32Not()
  5048. Dim query__1 = From c In _collection.AsQueryable(Of C)()
  5049. Where Not Query.Type("x", BsonType.Int32).Inject()
  5050. Select c
  5051. Dim translatedQuery = MongoQueryTranslator.Translate(query__1)
  5052. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5053. Assert.AreSame(_collection, translatedQuery.Collection)
  5054. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5055. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5056. Assert.IsNull(selectQuery.OrderBy)
  5057. Assert.IsNull(selectQuery.Projection)
  5058. Assert.IsNull(selectQuery.Skip)
  5059. Assert.IsNull(selectQuery.Take)
  5060. Assert.AreEqual("{ ""x"" : { ""$not"" : { ""$type"" : 16 } } }", selectQuery.BuildQuery().ToJson())
  5061. Assert.AreEqual(0, Consume(query__1))
  5062. End Sub
  5063. <Test()> _
  5064. Public Sub TestWhereXLessThan1()
  5065. Dim query = From c In _collection.AsQueryable(Of C)()
  5066. Where c.X < 1
  5067. Select c
  5068. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5069. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5070. Assert.AreSame(_collection, translatedQuery.Collection)
  5071. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5072. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5073. Assert.IsNull(selectQuery.OrderBy)
  5074. Assert.IsNull(selectQuery.Projection)
  5075. Assert.IsNull(selectQuery.Skip)
  5076. Assert.IsNull(selectQuery.Take)
  5077. Assert.AreEqual("{ ""x"" : { ""$lt"" : 1 } }", selectQuery.BuildQuery().ToJson())
  5078. Assert.AreEqual(0, Consume(query))
  5079. End Sub
  5080. <Test()> _
  5081. Public Sub TestWhereXLessThan1Not()
  5082. Dim query = From c In _collection.AsQueryable(Of C)()
  5083. Where Not (c.X < 1)
  5084. Select c
  5085. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5086. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5087. Assert.AreSame(_collection, translatedQuery.Collection)
  5088. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5089. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5090. Assert.IsNull(selectQuery.OrderBy)
  5091. Assert.IsNull(selectQuery.Projection)
  5092. Assert.IsNull(selectQuery.Skip)
  5093. Assert.IsNull(selectQuery.Take)
  5094. Assert.AreEqual("{ ""x"" : { ""$gte"" : 1 } }", selectQuery.BuildQuery().ToJson())
  5095. Assert.AreEqual(5, Consume(query))
  5096. End Sub
  5097. <Test()> _
  5098. Public Sub TestWhereXLessThan1Reversed()
  5099. Dim query = From c In _collection.AsQueryable(Of C)()
  5100. Where 1 > c.X
  5101. Select c
  5102. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5103. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5104. Assert.AreSame(_collection, translatedQuery.Collection)
  5105. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5106. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5107. Assert.IsNull(selectQuery.OrderBy)
  5108. Assert.IsNull(selectQuery.Projection)
  5109. Assert.IsNull(selectQuery.Skip)
  5110. Assert.IsNull(selectQuery.Take)
  5111. Assert.AreEqual("{ ""x"" : { ""$lt"" : 1 } }", selectQuery.BuildQuery().ToJson())
  5112. Assert.AreEqual(0, Consume(query))
  5113. End Sub
  5114. <Test()> _
  5115. Public Sub TestWhereXLessThanOrEquals1()
  5116. Dim query = From c In _collection.AsQueryable(Of C)()
  5117. Where c.X <= 1
  5118. Select c
  5119. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5120. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5121. Assert.AreSame(_collection, translatedQuery.Collection)
  5122. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5123. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5124. Assert.IsNull(selectQuery.OrderBy)
  5125. Assert.IsNull(selectQuery.Projection)
  5126. Assert.IsNull(selectQuery.Skip)
  5127. Assert.IsNull(selectQuery.Take)
  5128. Assert.AreEqual("{ ""x"" : { ""$lte"" : 1 } }", selectQuery.BuildQuery().ToJson())
  5129. Assert.AreEqual(1, Consume(query))
  5130. End Sub
  5131. <Test()> _
  5132. Public Sub TestWhereXLessThanOrEquals1Not()
  5133. Dim query = From c In _collection.AsQueryable(Of C)()
  5134. Where Not (c.X <= 1)
  5135. Select c
  5136. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5137. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5138. Assert.AreSame(_collection, translatedQuery.Collection)
  5139. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5140. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5141. Assert.IsNull(selectQuery.OrderBy)
  5142. Assert.IsNull(selectQuery.Projection)
  5143. Assert.IsNull(selectQuery.Skip)
  5144. Assert.IsNull(selectQuery.Take)
  5145. Assert.AreEqual("{ ""x"" : { ""$gt"" : 1 } }", selectQuery.BuildQuery().ToJson())
  5146. Assert.AreEqual(4, Consume(query))
  5147. End Sub
  5148. <Test()> _
  5149. Public Sub TestWhereXLessThanOrEquals1Reversed()
  5150. Dim query = From c In _collection.AsQueryable(Of C)()
  5151. Where 1 >= c.X
  5152. Select c
  5153. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5154. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5155. Assert.AreSame(_collection, translatedQuery.Collection)
  5156. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5157. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5158. Assert.IsNull(selectQuery.OrderBy)
  5159. Assert.IsNull(selectQuery.Projection)
  5160. Assert.IsNull(selectQuery.Skip)
  5161. Assert.IsNull(selectQuery.Take)
  5162. Assert.AreEqual("{ ""x"" : { ""$lte"" : 1 } }", selectQuery.BuildQuery().ToJson())
  5163. Assert.AreEqual(1, Consume(query))
  5164. End Sub
  5165. <Test()> _
  5166. Public Sub TestWhereXModOneEquals0AndXModTwoEquals0()
  5167. If _server.BuildInfo.Version >= New Version(2, 0) Then
  5168. Dim query = From c In _collection.AsQueryable(Of C)()
  5169. Where (c.X Mod 1 = 0) AndAlso (c.X Mod 2 = 0)
  5170. Select c
  5171. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5172. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5173. Assert.AreSame(_collection, translatedQuery.Collection)
  5174. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5175. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5176. Assert.IsNull(selectQuery.OrderBy)
  5177. Assert.IsNull(selectQuery.Projection)
  5178. Assert.IsNull(selectQuery.Skip)
  5179. Assert.IsNull(selectQuery.Take)
  5180. Assert.AreEqual("{ ""$and"" : [{ ""x"" : { ""$mod"" : [1, 0] } }, { ""x"" : { ""$mod"" : [2, 0] } }] }", selectQuery.BuildQuery().ToJson())
  5181. Assert.AreEqual(2, Consume(query))
  5182. End If
  5183. End Sub
  5184. <Test()> _
  5185. Public Sub TestWhereXModOneEquals0AndXModTwoEquals0Not()
  5186. If _server.BuildInfo.Version >= New Version(2, 0) Then
  5187. Dim query = From c In _collection.AsQueryable(Of C)()
  5188. Where Not ((c.X Mod 1 = 0) AndAlso (c.X Mod 2 = 0))
  5189. Select c
  5190. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5191. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5192. Assert.AreSame(_collection, translatedQuery.Collection)
  5193. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5194. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5195. Assert.IsNull(selectQuery.OrderBy)
  5196. Assert.IsNull(selectQuery.Projection)
  5197. Assert.IsNull(selectQuery.Skip)
  5198. Assert.IsNull(selectQuery.Take)
  5199. Dim json = selectQuery.BuildQuery().ToJson()
  5200. Assert.AreEqual("{ ""$or"" : [{ ""x"" : { ""$not"" : { ""$mod"" : [1, 0] } } }, { ""x"" : { ""$not"" : { ""$mod"" : [2, 0] } } }] }", selectQuery.BuildQuery().ToJson())
  5201. Assert.AreEqual(3, Consume(query))
  5202. End If
  5203. End Sub
  5204. <Test()> _
  5205. Public Sub TestWhereXModOneEquals0AndXModTwoEquals0NotNot()
  5206. If _server.BuildInfo.Version >= New Version(2, 0) Then
  5207. Dim query = From c In _collection.AsQueryable(Of C)()
  5208. Where Not Not ((c.X Mod 1 = 0) AndAlso (c.X Mod 2 = 0))
  5209. Select c
  5210. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5211. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5212. Assert.AreSame(_collection, translatedQuery.Collection)
  5213. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5214. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5215. Assert.IsNull(selectQuery.OrderBy)
  5216. Assert.IsNull(selectQuery.Projection)
  5217. Assert.IsNull(selectQuery.Skip)
  5218. Assert.IsNull(selectQuery.Take)
  5219. Assert.AreEqual("{ ""$and"" : [{ ""x"" : { ""$mod"" : [1, 0] } }, { ""x"" : { ""$mod"" : [2, 0] } }] }", selectQuery.BuildQuery().ToJson())
  5220. Assert.AreEqual(2, Consume(query))
  5221. End If
  5222. End Sub
  5223. <Test()> _
  5224. Public Sub TestWhereXModTwoEquals1()
  5225. Dim query = From c In _collection.AsQueryable(Of C)()
  5226. Where c.X Mod 2 = 1
  5227. Select c
  5228. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5229. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5230. Assert.AreSame(_collection, translatedQuery.Collection)
  5231. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5232. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5233. Assert.IsNull(selectQuery.OrderBy)
  5234. Assert.IsNull(selectQuery.Projection)
  5235. Assert.IsNull(selectQuery.Skip)
  5236. Assert.IsNull(selectQuery.Take)
  5237. Assert.AreEqual("{ ""x"" : { ""$mod"" : [2, 1] } }", selectQuery.BuildQuery().ToJson())
  5238. Assert.AreEqual(3, Consume(query))
  5239. End Sub
  5240. <Test()> _
  5241. Public Sub TestWhereXModTwoEquals1Not()
  5242. Dim query = From c In _collection.AsQueryable(Of C)()
  5243. Where Not (c.X Mod 2 = 1)
  5244. Select c
  5245. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5246. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5247. Assert.AreSame(_collection, translatedQuery.Collection)
  5248. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5249. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5250. Assert.IsNull(selectQuery.OrderBy)
  5251. Assert.IsNull(selectQuery.Projection)
  5252. Assert.IsNull(selectQuery.Skip)
  5253. Assert.IsNull(selectQuery.Take)
  5254. Assert.AreEqual("{ ""x"" : { ""$not"" : { ""$mod"" : [2, 1] } } }", selectQuery.BuildQuery().ToJson())
  5255. Assert.AreEqual(2, Consume(query))
  5256. End Sub
  5257. <Test()> _
  5258. Public Sub TestWhereXModTwoEquals1Reversed()
  5259. Dim query = From c In _collection.AsQueryable(Of C)()
  5260. Where 1 = c.X Mod 2
  5261. Select c
  5262. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5263. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5264. Assert.AreSame(_collection, translatedQuery.Collection)
  5265. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5266. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5267. Assert.IsNull(selectQuery.OrderBy)
  5268. Assert.IsNull(selectQuery.Projection)
  5269. Assert.IsNull(selectQuery.Skip)
  5270. Assert.IsNull(selectQuery.Take)
  5271. Assert.AreEqual("{ ""x"" : { ""$mod"" : [2, 1] } }", selectQuery.BuildQuery().ToJson())
  5272. Assert.AreEqual(3, Consume(query))
  5273. End Sub
  5274. <Test()> _
  5275. Public Sub TestWhereXModTwoNotEquals1()
  5276. Dim query = From c In _collection.AsQueryable(Of C)()
  5277. Where c.X Mod 2 <> 1
  5278. Select c
  5279. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5280. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5281. Assert.AreSame(_collection, translatedQuery.Collection)
  5282. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5283. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5284. Assert.IsNull(selectQuery.OrderBy)
  5285. Assert.IsNull(selectQuery.Projection)
  5286. Assert.IsNull(selectQuery.Skip)
  5287. Assert.IsNull(selectQuery.Take)
  5288. Assert.AreEqual("{ ""x"" : { ""$not"" : { ""$mod"" : [2, 1] } } }", selectQuery.BuildQuery().ToJson())
  5289. Assert.AreEqual(2, Consume(query))
  5290. End Sub
  5291. <Test()> _
  5292. Public Sub TestWhereXModTwoNotEquals1Not()
  5293. Dim query = From c In _collection.AsQueryable(Of C)()
  5294. Where Not (c.X Mod 2 <> 1)
  5295. Select c
  5296. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5297. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5298. Assert.AreSame(_collection, translatedQuery.Collection)
  5299. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5300. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5301. Assert.IsNull(selectQuery.OrderBy)
  5302. Assert.IsNull(selectQuery.Projection)
  5303. Assert.IsNull(selectQuery.Skip)
  5304. Assert.IsNull(selectQuery.Take)
  5305. Assert.AreEqual("{ ""x"" : { ""$mod"" : [2, 1] } }", selectQuery.BuildQuery().ToJson())
  5306. Assert.AreEqual(3, Consume(query))
  5307. End Sub
  5308. <Test()> _
  5309. Public Sub TestWhereXNotEquals1()
  5310. Dim query = From c In _collection.AsQueryable(Of C)()
  5311. Where c.X <> 1
  5312. Select c
  5313. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5314. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5315. Assert.AreSame(_collection, translatedQuery.Collection)
  5316. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5317. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5318. Assert.IsNull(selectQuery.OrderBy)
  5319. Assert.IsNull(selectQuery.Projection)
  5320. Assert.IsNull(selectQuery.Skip)
  5321. Assert.IsNull(selectQuery.Take)
  5322. Assert.AreEqual("{ ""x"" : { ""$ne"" : 1 } }", selectQuery.BuildQuery().ToJson())
  5323. Assert.AreEqual(4, Consume(query))
  5324. End Sub
  5325. <Test()> _
  5326. Public Sub TestWhereXNotEquals1Not()
  5327. Dim query = From c In _collection.AsQueryable(Of C)()
  5328. Where Not (c.X <> 1)
  5329. Select c
  5330. Dim translatedQuery = MongoQueryTranslator.Translate(query)
  5331. Assert.IsInstanceOf(Of SelectQuery)(translatedQuery)
  5332. Assert.AreSame(_collection, translatedQuery.Collection)
  5333. Assert.AreSame(GetType(C), translatedQuery.DocumentType)
  5334. Dim selectQuery = DirectCast(translatedQuery, SelectQuery)
  5335. Assert.IsNull(selectQuery.OrderBy)
  5336. Assert.IsNull(selectQuery.Projection)
  5337. Assert.IsNull(selectQuery.Skip)
  5338. Assert.IsNull(selectQuery.Take)
  5339. Assert.AreEqual("{ ""x"" : 1 }", selectQuery.BuildQuery().ToJson())
  5340. Assert.AreEqual(1, Consume(query))
  5341. End Sub
  5342. Private Function Consume(Of T)(ByVal query As IQueryable(Of T)) As Integer
  5343. Dim count = 0
  5344. For Each c In query
  5345. count += 1
  5346. Next
  5347. Return count
  5348. End Function
  5349. End Class
  5350. End Namespace