linux-packaging-mono/mcs/tests/gtest-linq-01.cs
Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

129 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
namespace from
{
interface ITest
{
int Id { get; }
}
class C
{
// This is pure grammar/parser test
public static void Main ()
{
int[] i2 = new int [] { 0, 1 };
int[] i_b = new int [] { 0, 1 };
ITest[] join_test = new ITest[0];
IEnumerable<int> e;
IEnumerable<IGrouping<int,int>> g;
// FROM
e = from i in i2 select i;
e = from int i in i2 select i;
var e2 = from bool? i in i2 select i;
e = from i in new int[0] select i;
e = from x in i2 from y in i2 select y;
// WHERE
e = from i in i2 where i % 3 != 0 select i;
// ORDER BY
e = from i in i2 orderby i select i;
e = from i in i2 orderby i, i, i, i select i;
e = from i in i2 orderby i descending select i;
e = from i in i2 orderby i ascending select i;
// JOIN
e = from i in i2 join j in join_test on i equals j.Id select i;
e = from i in i2 join ITest j in join_test on i equals j.Id select i;
e = from i in i2 join j in join_test on i equals j.Id
join j2 in join_test on i equals j2.Id select i;
e = from i in i2 join j in i_b on i equals j into j select i;
e = from i in i2 join int j in i_b on i equals j into j select i;
// GROUP BY
g = from i in i2 group i by 2;
g = from i in i2 group i by 2 into i select i;
// LET
e = from i in i2 let l = i + 4 select i;
e = from i in i2 let l = i + 4 let l2 = l + 2 select i;
// INTO
g = from i in i2 group i by 2 into i9
from i in i2 group i by 2 into i9
from i in i2 group i by 2 into i9
from i in i2 group i by 2 into i9
select i9;
// NESTED
var e3 = from a in
from b in i2
select b
orderby a
select a;
var e4 = from i in
from x in i2
select x
let l = from x2 in i2 select x2
let l2 = 50
select 1;
int from = 0;
bool let = false;
// TODO: Re-enable when we fix cast of query expression
//object o = (object)from i in i2 select i;
}
void Foo (int from, bool where)
{
int Foo = 0;
if (from < Foo) // This tests generics micro-parser awareness
return;
}
int foo;
void Do (string[] args)
{
int from = this.foo;
Console.WriteLine (args [from]);
}
}
class D
{
public bool check (object from, object to)
{
if (from is int && to is int) return true;
return false;
}
}
}
namespace FromProblems2
{
class from
{
}
class C
{
void M1 ()
{
from local = new from ();
}
from M2 ()
{
return null;
}
}
}