public void TestNestedFiltersWithEarlyBoundEntities()
        {
            XrmFakedContext      context = new XrmFakedContext();
            IOrganizationService service = context.GetOrganizationService();

            Crm.Account account = new Crm.Account()
            {
                Id = Guid.NewGuid()
            };
            account.Name = "test";

            Crm.Contact contact = new Crm.Contact()
            {
                Id = Guid.NewGuid()
            };
            contact["accountid"]  = account.ToEntityReference();
            contact.BirthDate     = null;
            contact.TerritoryCode = null;

            context.Initialize(new List <Entity>
            {
                account,
                contact
            });

            var query = new QueryExpression("account");

            query.ColumnSet = new ColumnSet("name");
            query.Criteria.AddCondition(new ConditionExpression("name", ConditionOperator.Like, "test"));

            var linkEntity = query.AddLink("contact", "accountid", "accountid", JoinOperator.Inner);

            linkEntity.LinkCriteria.AddFilter(new FilterExpression(LogicalOperator.Or)
            {
                Filters =
                {
                    new FilterExpression(LogicalOperator.And)
                    {
                        Conditions =
                        {
                            new ConditionExpression("birthdate",     ConditionOperator.Null),
                            new ConditionExpression("territorycode", ConditionOperator.Null)
                        }
                    },
                    new FilterExpression(LogicalOperator.And)
                    {
                        Conditions =
                        {
                            new ConditionExpression("birthdate",     ConditionOperator.NotNull),
                            new ConditionExpression("territorycode", ConditionOperator.NotNull)
                        }
                    }
                }
            });

            var results = service.RetrieveMultiple(query).Entities.Cast <Crm.Account>().ToList();

            Assert.Single(results);
        }
        public void TheCorrectResultIsReturnedWhenUsingConditionOperatorInWithGuid()
        {
            var context = new XrmFakedContext();
            var contact = new Crm.Contact()
            {
                Id = Guid.NewGuid()
            };

            context.Initialize(contact);

            var Ids = new string[] { Guid.NewGuid().ToString(), contact.Id.ToString() };

            var query = new QueryExpression("contact");

            query.Criteria.AddCondition("contactid", ConditionOperator.In, Ids);

            var result = context.GetOrganizationService().RetrieveMultiple(query).Entities;

            Assert.True(result.Any());
            Assert.Equal(contact.Id, result[0].Id);
        }