blob: c31e3afac7e1ec3bce452780e28ab41ec340617e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
public interface IGenX<T>
{
string m(T t);
}
public interface IGenY<T>
{
string m(T[] tArr);
}
class Gen<T,U> : IGenX<T[]>, IGenY<U>
{
string IGenX<T[]>.m(T[] t)
{
return "IGenX.m";
}
string IGenY<U>.m(U[] tArr)
{
return "IGenY.m";
}
}
public class Test
{
public static int counter = 0;
public static bool result = true;
public static void Eval(bool exp)
{
counter++;
if (!exp)
{
result = exp;
Console.WriteLine("Test Failed at location: " + counter);
}
}
public static int Main()
{
Gen<int,int> GenIntInt = new Gen<int,int>();
Eval(((IGenX<int[]>)GenIntInt).m(null).Equals("IGenX.m"));
Eval(((IGenY<int>)GenIntInt).m(null).Equals("IGenY.m"));
Gen<int,string> GenIntString = new Gen<int,string>();
Eval(((IGenX<int[]>)GenIntString).m(null).Equals("IGenX.m"));
Eval(((IGenY<string>)GenIntString).m(null).Equals("IGenY.m"));
Gen<string,int> GenStringInt = new Gen<string,int>();
Eval(((IGenX<string[]>)GenStringInt).m(null).Equals("IGenX.m"));
Eval(((IGenY<int>)GenStringInt).m(null).Equals("IGenY.m"));
Gen<string,string> GenStringString = new Gen<string,string>();
Eval(((IGenX<string[]>)GenStringString).m(null).Equals("IGenX.m"));
Eval(((IGenY<string>)GenStringString).m(null).Equals("IGenY.m"));
if (result)
{
Console.WriteLine("Test Passed");
return 100;
}
else
{
Console.WriteLine("Test Failed");
return 1;
}
}
}
|