public void Find_UsingWhereWithAnd_ReturnsOnePerson()
        {
            using (var session = TestHelper.CreateSession())
            {
                var entityStore = new SimoEntityStore(session, DbName);

                var persons = entityStore.Query<Person>(q => q.Where(@"this.Name == 'Daniel' && this.Age == 21"));

                Assert.AreEqual(1, persons.Count);
                Assert.AreEqual(1, persons.Where(p => p.Name == "Daniel").Count());
            }
        }
        public void Find_UsingWhereWithOr_ReturnsThreePersons()
        {
            using (var session = TestHelper.CreateSession())
            {
                var entityStore = new SimoEntityStore(session, DbName);

                var persons = entityStore.Query<Person>(q => q.Where(@"this.Name == 'Daniel' || this.Name == 'Sue'"));

                Assert.AreEqual(6, persons.Count);
                Assert.AreEqual(3, persons.Where(p => p.Name == "Daniel").Count());
                Assert.AreEqual(3, persons.Where(p => p.Name == "Sue").Count());
            }
        }
        public void QueryFor_UsingAllQueryWithInts_ReturnsThreePersons()
        {
            using (var session = TestHelper.CreateSession())
            {
                var entityStore = new SimoEntityStore(session, DbName);

                var persons = entityStore.Query<Person>(q => q["TimeCodes"].HasAll(100, 200));

                Assert.AreEqual(3, persons.Count);
                Assert.AreEqual(1, persons.Where(p => p.Name == "Daniel").Count());
                Assert.AreEqual(1, persons.Where(p => p.Name == "Adam").Count());
                Assert.AreEqual(1, persons.Where(p => p.Name == "Sue").Count());
            }
        }
        public void QueryFor_IntervalUsingQueryLtAndGt_ReturnsThreePersons()
        {
            using (var session = TestHelper.CreateSession())
            {
                var entityStore = new SimoEntityStore(session, DbName);

                var persons = entityStore.Query<Person>(q => q["Age"].Gt(21).Lt(29));

                Assert.AreEqual(3, persons.Count);
                Assert.AreEqual(1, persons.Where(p => p.Name == "Daniel").Count());
                Assert.AreEqual(1, persons.Where(p => p.Name == "Adam").Count());
                Assert.AreEqual(1, persons.Where(p => p.Name == "Sue").Count());
            }
        }
        public void QueryFor_UsingBetweenQuery_ReturnsThreePersons()
        {
            using (var session = TestHelper.CreateSession())
            {
                var entityStore = new SimoEntityStore(session, DbName);

                var persons = entityStore.Query<Person>(q => q["Age"].Between(22, 28));

                Assert.AreEqual(3, persons.Count);
                Assert.AreEqual(1, persons.Where(p => p.Name == "Daniel").Count());
                Assert.AreEqual(1, persons.Where(p => p.Name == "Adam").Count());
                Assert.AreEqual(1, persons.Where(p => p.Name == "Sue").Count());
            }
        }
        public void QueryFor_UsingSizeQueryOnArrayWithStrings_ReturnsThreePersons()
        {
            using (var session = TestHelper.CreateSession())
            {
                var entityStore = new SimoEntityStore(session, DbName);

                var persons = entityStore.Query<Person>(q => q["Tags"].Size(2));

                Assert.AreEqual(3, persons.Count);
                Assert.AreEqual(1, persons.Where(p => p.Name == "Daniel").Count());
                Assert.AreEqual(1, persons.Where(p => p.Name == "Adam").Count());
                Assert.AreEqual(1, persons.Where(p => p.Name == "Sue").Count());
            }
        }
        public void QueryFor_UsingSizeQueryOnArrayWithNoStrings_ReturnsNoPersons()
        {
            using (var session = TestHelper.CreateSession())
            {
                var entityStore = new SimoEntityStore(session, DbName);

                var persons = entityStore.Query<Person>(q => q["Tags"].Size(0));

                Assert.AreEqual(0, persons.Count);
            }
        }
        public void QueryFor_UsingNotInQuery_ReturnsOnePerson()
        {
            using (var session = TestHelper.CreateSession())
            {
                var entityStore = new SimoEntityStore(session, DbName);

                var persons = entityStore.Query<Person>(q => q["Name"].NotIn("Daniel", "Sue").And("Age").NotIn(21, 23));

                Assert.AreEqual(1, persons.Count);
                Assert.AreEqual(1, persons.Where(p => p.Name == "Adam").Count());
            }
        }
        public void QueryFor_UsingNotExistsQueryWhereMemberExists_ReturnsNoPersons()
        {
            using (var session = TestHelper.CreateSession())
            {
                var entityStore = new SimoEntityStore(session, DbName);

                var persons = entityStore.Query<Person>(q => q["Tags"].NotExists());

                Assert.AreEqual(3, persons.Count);
            }
        }
        public void QueryFor_UsingMultipleInOnDifferentProps_ReturnsOnePerson()
        {
            using (var session = TestHelper.CreateSession())
            {
                var entityStore = new SimoEntityStore(session, DbName);

                var persons = entityStore.Query<Person>(q => q["Name"].In("Daniel").And("Age").In(21));

                Assert.AreEqual(1, persons.Count);
            }
        }