.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

109 lines
4.5 KiB

// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under MIT X11 license (for details please see \doc\license.txt)
using System;
using NUnit.Framework;
namespace ICSharpCode.NRefactory.CSharp.Parser.Expression
{
[TestFixture, Ignore]
public class QueryExpressionTests
{
[Test]
public void SimpleExpression()
{
/*
QueryExpression qe = ParseUtilCSharp.ParseExpression<QueryExpression>(
"from c in customers where c.City == \"London\" select c"
);
Assert.AreEqual("c", qe.FromClause.Sources.First().Identifier);
Assert.AreEqual("customers", ((IdentifierExpression)qe.FromClause.Sources.First().Expression).Identifier);
Assert.AreEqual(1, qe.MiddleClauses.Count);
Assert.IsInstanceOf(typeof(QueryExpressionWhereClause), qe.MiddleClauses[0]);
QueryExpressionWhereClause wc = (QueryExpressionWhereClause)qe.MiddleClauses[0];
Assert.IsInstanceOf(typeof(BinaryOperatorExpression), wc.Condition);
Assert.IsInstanceOf(typeof(QueryExpressionSelectClause), qe.SelectOrGroupClause);*/
throw new NotImplementedException();
}
/* TODO port unit tests
[Test]
public void ExpressionWithType1()
{
QueryExpression qe = ParseUtilCSharp.ParseExpression<QueryExpression>(
"from Customer c in customers select c"
);
Assert.AreEqual("c", qe.FromClause.Sources.First().Identifier);
Assert.AreEqual("Customer", qe.FromClause.Sources.First().Type.ToString());
Assert.AreEqual("customers", ((IdentifierExpression)qe.FromClause.Sources.First().Expression).Identifier);
Assert.IsInstanceOf(typeof(QueryExpressionSelectClause), qe.SelectOrGroupClause);
}
[Test]
public void ExpressionWithType2()
{
QueryExpression qe = ParseUtilCSharp.ParseExpression<QueryExpression>(
"from int c in customers select c"
);
Assert.AreEqual("c", qe.FromClause.Sources.First().Identifier);
Assert.AreEqual("System.Int32", qe.FromClause.Sources.First().Type.Type);
Assert.AreEqual("customers", ((IdentifierExpression)qe.FromClause.Sources.First().Expression).Identifier);
Assert.IsInstanceOf(typeof(QueryExpressionSelectClause), qe.SelectOrGroupClause);
}
[Test]
public void ExpressionWithType3()
{
QueryExpression qe = ParseUtilCSharp.ParseExpression<QueryExpression>(
"from S<int[]>? c in customers select c"
);
Assert.AreEqual("c", qe.FromClause.Sources.First().Identifier);
Assert.AreEqual("System.Nullable<S<System.Int32[]>>", qe.FromClause.Sources.First().Type.ToString());
Assert.AreEqual("customers", ((IdentifierExpression)qe.FromClause.Sources.First().Expression).Identifier);
Assert.IsInstanceOf(typeof(QueryExpressionSelectClause), qe.SelectOrGroupClause);
}
[Test]
public void MultipleGenerators()
{
QueryExpression qe = ParseUtilCSharp.ParseExpression<QueryExpression>(@"
from c in customers
where c.City == ""London""
from o in c.Orders
where o.OrderDate.Year == 2005
select new { c.Name, o.OrderID, o.Total }");
Assert.AreEqual(3, qe.MiddleClauses.Count);
Assert.IsInstanceOf(typeof(QueryExpressionWhereClause), qe.MiddleClauses[0]);
Assert.IsInstanceOf(typeof(QueryExpressionFromClause), qe.MiddleClauses[1]);
Assert.IsInstanceOf(typeof(QueryExpressionWhereClause), qe.MiddleClauses[2]);
Assert.IsInstanceOf(typeof(QueryExpressionSelectClause), qe.SelectOrGroupClause);
}
[Test]
public void ExpressionWithOrderBy()
{
QueryExpression qe = ParseUtilCSharp.ParseExpression<QueryExpression>(
"from c in customers orderby c.Name select c"
);
Assert.AreEqual("c", qe.FromClause.Sources.First().Identifier);
Assert.AreEqual("customers", ((IdentifierExpression)qe.FromClause.Sources.First().Expression).Identifier);
Assert.IsInstanceOf(typeof(QueryExpressionOrderClause), qe.MiddleClauses[0]);
Assert.IsInstanceOf(typeof(QueryExpressionSelectClause), qe.SelectOrGroupClause);
}
[Test]
public void ExpressionWithOrderByAndLet()
{
QueryExpression qe = ParseUtilCSharp.ParseExpression<QueryExpression>(
"from c in customers orderby c.Name let x = c select x"
);
Assert.AreEqual("c", qe.FromClause.Sources.First().Identifier);
Assert.AreEqual("customers", ((IdentifierExpression)qe.FromClause.Sources.First().Expression).Identifier);
Assert.IsInstanceOf(typeof(QueryExpressionOrderClause), qe.MiddleClauses[0]);
Assert.IsInstanceOf(typeof(QueryExpressionLetClause), qe.MiddleClauses[1]);
Assert.IsInstanceOf(typeof(QueryExpressionSelectClause), qe.SelectOrGroupClause);
}*/
}
}