public void should_work_for_collections_and_other()
        {
            var orish = new OrOperation().GetPredicateBuilder<Contract>( c => c.Status, new List<string>{"open","closed"}, c=>c.Status, "x");

            var contract = new Contract();
            contract.Status = "x";

            orish.Compile()(contract).ShouldBeTrue();
        }
        public void should_not_work()
        {
            var orish = new OrOperation().GetPredicateBuilder<Contract>(c => c.Status, "open", c => c.Status, "closed");

            var contract = new Contract();
            contract.Status = "a";

            orish.Compile()(contract).ShouldBeFalse();
        }
        public void should_work()
        {
            var orish = new ComposableOrOperation();//.GetPredicateBuilder<Contract>(, c => c.Status, "closed");
            orish.Set<Contract>(c => c.Status, "open");
            orish.Set<Contract>(c => c.Status, "closed");

            var x = orish.GetPredicateBuilder<Contract>();

            var contract = new Contract();
            contract.Status = "open";

            x.Compile()(contract).ShouldBeTrue();

            var contract2 = new Contract();
            contract2.Status = "closed";

            x.Compile()(contract2).ShouldBeTrue();
        }
        public void should_work_for_path()
        {
            var orish = new ComposableOrOperation();
            orish.Set<Contract>(c => c.Part.IsUsed, true);
            orish.Set<Contract>(c => c.Status, new List<string> { "open", "closed" });

            var x = orish.GetPredicateBuilder<Contract>();

            var contract = new Contract();
            contract.Status = "opn";
            contract.Part.IsUsed = true;

            x.Compile()(contract).ShouldBeTrue();
        }
        public void should_work_for_non_primitive_collections()
        {
            var sigs  = new List<Signature>
                                  {
                                      new Signature("ryan"),
                                      new Signature("dru"),
                                      new Signature("brandon")
                                  };

            var orish = new ComposableOrOperation();
            orish.Set<Contract>(c => c.Part.IsUsed, true);
            orish.Set<Contract>(c => c.Signature, sigs);

            var x = orish.GetPredicateBuilder<Contract>();

            var contract = new Contract();
            contract.Part.IsUsed = false;
            contract.Signature = new Signature("brandon");

            x.Compile()(contract).ShouldBeTrue();
        }
        public void should_work_for_collections_a()
        {
            var orish = new ComposableOrOperation();
            orish.Set<Contract>(c => c.Status, new List<string> { "open", "closed" });
            orish.Set<Contract>(c => c.Status, "closed");

            var x = orish.GetPredicateBuilder<Contract>();

            var contract = new Contract();
            contract.Status = "open";

            x.Compile()(contract).ShouldBeTrue();
        }