summaryrefslogtreecommitdiff
path: root/tests/src/Loader/classloader/generics/Instantiation/Positive/MultipleInterface09.cs
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;
		}
	}
		
}