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."); }
/// <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."); }