public void test_WHEN_string_based_value_is_user_id_THEN_lookup_id_value_operand_is_created()
        {
            var operandBuilder = new OperandBuilder();
            Expression <Func <SPListItem, bool> > expr = x => x["Foo"] == (DataTypes.UserId) "1";
            var operand = operandBuilder.CreateValueOperandForStringBasedSyntax(((BinaryExpression)expr.Body).Right);

            Assert.That(operand, Is.InstanceOf <UserIdValueOperand>());

            var valueOperand = operand as UserIdValueOperand;

            Assert.That(valueOperand.Type, Is.EqualTo(typeof(DataTypes.UserId)));
            Assert.That(valueOperand.Value, Is.EqualTo("1"));
        }
        public void test_WHEN_string_based_value_is_text_THEN_text_operand_is_created()
        {
            var operandBuilder = new OperandBuilder();
            Expression <Func <SPListItem, bool> > expr = x => x["Email"] == (DataTypes.Text) "*****@*****.**";
            var operand = operandBuilder.CreateValueOperandForStringBasedSyntax(((BinaryExpression)expr.Body).Right);

            Assert.That(operand, Is.InstanceOf <TextValueOperand>());

            var valueOperand = operand as TextValueOperand;

            Assert.That(valueOperand.Type, Is.EqualTo(typeof(DataTypes.Text)));
            Assert.That(valueOperand.Value, Is.EqualTo("*****@*****.**"));
        }
        public void test_WHEN_string_based_value_is_guid_THEN_guid_operand_is_created()
        {
            var operandBuilder = new OperandBuilder();
            Expression <Func <SPListItem, bool> > expr = x => x["Foo"] == (DataTypes.Guid) "4feaf1f3-5b04-4d93-b0fc-4e48d0c60eed";
            var operand = operandBuilder.CreateValueOperandForStringBasedSyntax(((BinaryExpression)expr.Body).Right);

            Assert.That(operand, Is.InstanceOf <GuidValueOperand>());

            var valueOperand = operand as GuidValueOperand;

            Assert.That(valueOperand.Type, Is.EqualTo(typeof(DataTypes.Guid)));
            Assert.That(valueOperand.Value, Is.EqualTo(new Guid("4feaf1f3-5b04-4d93-b0fc-4e48d0c60eed")));
        }
        public void test_WHEN_value_is_string_based_and_has_no_native_representation_THEN_generic_string_based_operand_is_created()
        {
            var operandBuilder = new OperandBuilder();
            Expression <Func <SPListItem, bool> > expr = x => x["User"] == (DataTypes.User) "John Smith";
            var operand = operandBuilder.CreateValueOperandForStringBasedSyntax(((BinaryExpression)expr.Body).Right);

            Assert.That(operand, Is.InstanceOf <GenericStringBasedValueOperand>());

            var valueOperand = operand as GenericStringBasedValueOperand;

            Assert.That(valueOperand.Type, Is.EqualTo(typeof(DataTypes.User)));
            Assert.That(valueOperand.Value, Is.EqualTo("John Smith"));
        }
        public void test_WHEN_string_based_value_is_boolean_THEN_boolean_operand_is_created()
        {
            var operandBuilder = new OperandBuilder();
            Expression <Func <SPListItem, bool> > expr = x => x["Foo"] == (DataTypes.Boolean) "false";
            var operand = operandBuilder.CreateValueOperandForStringBasedSyntax(((BinaryExpression)expr.Body).Right);

            Assert.That(operand, Is.InstanceOf <BooleanValueOperand>());

            var valueOperand = operand as BooleanValueOperand;

            Assert.That(valueOperand.Type, Is.EqualTo(typeof(DataTypes.Boolean)));
            Assert.That(valueOperand.Value, Is.False);
        }
        public void test_WHEN_string_based_value_is_datetime_with_today_and_offsetdays_THEN_datetime_operand_is_created()
        {
            var operandBuilder = new OperandBuilder();
            Expression <Func <SPListItem, bool> > expr = x => x["Modified"] == ((DataTypes.DateTime)Camlex.Today).OffsetDays(3);
            var operand = operandBuilder.CreateValueOperandForStringBasedSyntax(((BinaryExpression)expr.Body).Right);

            Assert.That(operand, Is.InstanceOf <DateTimeValueOperand>());

            var valueOperand = operand as DateTimeValueOperand;

            Assert.That(valueOperand.Type, Is.EqualTo(typeof(DataTypes.DateTime)));
            Assert.That(valueOperand.Mode, Is.EqualTo(DateTimeValueOperand.DateTimeValueMode.Today));
            Assert.That(valueOperand.OffsetDays, Is.EqualTo(3));
        }
        public void test_WHEN_string_based_value_is_datetime_with_includetimevalue_THEN_datetime_operand_is_created()
        {
            var operandBuilder = new OperandBuilder();
            Expression <Func <SPListItem, bool> > expr = x => x["Modified"] == ((DataTypes.DateTime) "02.01.2010 03:04:05").IncludeTimeValue();
            var operand = operandBuilder.CreateValueOperandForStringBasedSyntax(((BinaryExpression)expr.Body).Right);

            Assert.That(operand, Is.InstanceOf <DateTimeValueOperand>());

            var valueOperand = operand as DateTimeValueOperand;

            Assert.That(valueOperand.Type, Is.EqualTo(typeof(DataTypes.DateTime)));
            var expected = DateTime.Parse("02.01.2010 03:04:05");

            Assert.That(valueOperand.Value, Is.EqualTo(expected));
            Assert.That(valueOperand.IncludeTimeValue, Is.True);
        }