[bcl] Make mono cas opt-in features instead of opt-out for mobile profiles
[mono.git] / mcs / class / corlib / Test / System.Security / CodeAccessPermissionTest.cs
1 //
2 // CodeAccessPermissionTest.cs - NUnit Test Cases for CodeAccessPermission
3 //
4 // Author:
5 //      Sebastien Pouliot (spouliot@motus.com)
6 //
7 // (C) 2004 Motus Technologies Inc. (http://www.motus.com)
8 //
9
10 #if FEATURE_MONO_CAS
11
12 using NUnit.Framework;
13 using System;
14 using System.Security;
15 using System.Security.Permissions;
16 using System.Text;
17
18 namespace MonoTests.System.Security {
19
20         // Almost minimal CAS class for unit tests
21         [Serializable]
22         public class NonAbstractCodeAccessPermission : CodeAccessPermission {
23
24                 private string _tag;
25                 private string _text;
26
27                 public NonAbstractCodeAccessPermission (string tag, string text)
28                 {
29                         _tag = tag;
30                         _text = text;
31                 }
32
33                 public override IPermission Copy () 
34                 {
35                         return new NonAbstractCodeAccessPermission (_tag, _text);
36                 }
37
38                 public override void FromXml (SecurityElement elem) {}
39
40                 public override IPermission Intersect (IPermission target) 
41                 {
42                         return null;
43                 }
44
45                 public override bool IsSubsetOf (IPermission target) 
46                 {
47                         return true;
48                 }
49
50                 public override SecurityElement ToXml () 
51                 {
52                         if (_tag == null)
53                                 return null;
54                         return new SecurityElement (_tag, _text);
55                 }
56         }
57
58         [TestFixture]
59         [Category ("CAS")]
60         public class CodeAccessPermissionTest {
61
62                 [Test]
63                 public void CustomCAS () 
64                 {
65                         // test for http://bugzilla.ximian.com/show_bug.cgi?id=52626
66                         NonAbstractCodeAccessPermission p = new NonAbstractCodeAccessPermission ("custom", null);
67                         p.Demand ();
68                 }
69
70                 [Test]
71                 public void Union () 
72                 {
73                         NonAbstractCodeAccessPermission cap = new NonAbstractCodeAccessPermission (null, null);
74                         IPermission p = cap.Union (null);
75                 }
76
77                 [Test]
78                 [ExpectedException (typeof (NullReferenceException))]
79                 public void To_String_Exception () 
80                 {
81                         NonAbstractCodeAccessPermission cap = new NonAbstractCodeAccessPermission (null, null);
82                         string s = cap.ToString ();
83                 }
84
85                 [Test]
86                 public void To_String () 
87                 {
88                         NonAbstractCodeAccessPermission cap = new NonAbstractCodeAccessPermission ("CodeAccessPermission", "NonAbstract");
89                         string s = cap.ToString ();
90                         Assert.AreEqual ("<CodeAccessPermission>NonAbstract</CodeAccessPermission>" + Environment.NewLine, s, "ToString");
91                 }
92         }
93 }
94
95 #endif