public void ParseFileNotNameContainsExpressionTest()
        {
            string expressionText = "!($(File.Name) : '.Designer.')";

            IConditionExpression expression = ConditionExpressionParser.Instance.Parse(
                expressionText);

            Assert.IsNotNull(expression, "Expected an expression instance.");

            UnaryOperatorExpression negateExpression = expression as UnaryOperatorExpression;

            Assert.IsNotNull(negateExpression, "Expected a unary operator expression.");
            Assert.AreEqual(UnaryExpressionOperator.Negate, negateExpression.Operator, "Unexpected operator.");

            BinaryOperatorExpression operatorExpression = negateExpression.InnerExpression as BinaryOperatorExpression;

            Assert.IsNotNull(operatorExpression, "Expected a binary operator expression.");
            Assert.AreEqual(BinaryExpressionOperator.Contains, operatorExpression.Operator, "Unexpected operator.");

            FileAttributeExpression attributeExpression = operatorExpression.Left as FileAttributeExpression;

            Assert.IsNotNull(attributeExpression, "Unexpected left node type.");
            Assert.AreEqual(FileAttributeType.Name, attributeExpression.FileAttribute,
                            "Attribute expression was not parsed correctly.");

            StringExpression stringExpression = operatorExpression.Right as StringExpression;

            Assert.IsNotNull(stringExpression, "Unexpected right node type.");
            Assert.AreEqual(".Designer.", stringExpression.Text, "String expression was not parsed correctly.");
        }
Пример #2
0
        /// <summary>
        /// Gets the expression value.
        /// </summary>
        /// <param name="expression">The expression.</param>
        /// <param name="file">The file to evaluate the expression against.</param>
        /// <returns>The expression value as text.</returns>
        private static string GetExpressionValue(IConditionExpression expression, FileInfo file)
        {
            string value = string.Empty;

            if (expression != null && file != null)
            {
                StringExpression stringExpression = expression as StringExpression;
                if (stringExpression != null)
                {
                    value = stringExpression.Text;
                }
                else
                {
                    FileAttributeExpression attributeExpression = expression as FileAttributeExpression;
                    if (attributeExpression != null)
                    {
                        value = FileUtilities.GetAttribute(attributeExpression.FileAttribute, file);
                    }
                }
            }

            return(value);
        }
        public void ToStringTest()
        {
            FileAttributeExpression expression = new FileAttributeExpression(FileAttributeType.Path);

            Assert.AreEqual("$(File.Path)", expression.ToString(), "Unexpected string representation.");
        }