Welcome to mirror list, hosted at ThFree Co, Russian Federation.

test-311.cs « tests « mcs - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 1db5487ecaf086f907d0f478fae8d40dce3b43c3 (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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using System;
using System.Security;
using System.Security.Permissions;

[assembly: SecurityPermission (SecurityAction.RequestMinimum, Execution=true)]
[assembly: SecurityPermission (SecurityAction.RequestOptional, Unrestricted=true)]
[assembly: SecurityPermission (SecurityAction.RequestRefuse, SkipVerification=true)]

[SecurityPermission (SecurityAction.LinkDemand, ControlPrincipal=true)]
struct LinkDemandStruct {
	internal string Info;
}

[SecurityPermission (SecurityAction.Demand, ControlAppDomain=true)]
public class Program {

	private static string _message = "Hello Mono!";
	private LinkDemandStruct info;

	[SecurityPermission (SecurityAction.InheritanceDemand, ControlAppDomain=true)]
	public Program () {
		info = new LinkDemandStruct ();
		info.Info = ":-)";
	}

	public static string Message {
		[SecurityPermission (SecurityAction.PermitOnly, ControlEvidence=true)]
		get { return _message; }
		[SecurityPermission (SecurityAction.Assert, ControlThread=true)]
		set { _message = value; }
	}

	[SecurityPermission (SecurityAction.Deny, UnmanagedCode=true)]
	private bool DenyMethod () {
		return false;
	}
	
	[SiteIdentityPermission (SecurityAction.PermitOnly)]
	[PermissionSet (SecurityAction.PermitOnly, Unrestricted=true)]
	[PermissionSet (SecurityAction.PermitOnly, Unrestricted=false)]
	public void Test2 ()
	{
	}

	[PermissionSet (SecurityAction.PermitOnly, Unrestricted=true)]
	[PermissionSet (SecurityAction.PermitOnly, Unrestricted=false)]
	public void Test3 ()
	{
	}
	
	[EnvironmentPermission (SecurityAction.Demand, Unrestricted=true)]
	public void Test4 ()
	{
	}
	
	[SecurityPermission (SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlEvidence, UnmanagedCode=true)]
	[SecurityPermission (SecurityAction.Demand, Flags = SecurityPermissionFlag.AllFlags, UnmanagedCode=true)]
	public static int Main (string[] args)
	{
		// TODO: this will not be working for .NET 2.0 as attributes are decoded back
		Type program = typeof (Program);
		
		if (program.GetCustomAttributes (true).Length != 0)
			return 1;
		
		if (program.GetConstructor (System.Type.EmptyTypes).GetCustomAttributes (true).Length != 0)
			return 2;

		if (program.GetProperty ("Message").GetSetMethod ().GetCustomAttributes (true).Length != 0)
			return 3;

		if (program.GetMethod ("Main").GetCustomAttributes (true).Length != 0)
			return 4;

		if (program.GetMethod ("Test2").GetCustomAttributes (true).Length != 0)
			return 5;		
		
		Type test2 = typeof (Test2);
		if (test2.GetCustomAttributes (true).Length != 0)
			return 6;
		
		Console.WriteLine ("OK");
		return 0;
	}
}

[SecurityPermission (SecurityAction.Demand, ControlAppDomain=true)]
public partial class Test2 {}

[SecurityPermission (SecurityAction.Demand, ControlAppDomain=true)]
public partial class Test2 {}