* Demand

** P/Invoke

pinvoke1.cs	Successful p/invoke
pinvoke2.cs	p/invoke denied (Deny) at class level
pinvoke3.cs	p/invoke denied (Deny) at method level

Notes
- We do not try to refuse UnmanagedCode (RequestRefused) at assembly level
  because this would fail at the LinkDemand level (which is tested elsewhere)
- With Mono runtime the native function getuid is called in libc
- With MS runtime the native function GetTickCount is called in kernel32.dll


** [SuppressUnmanagedCodeSecurity] a.k.a. SUCS

Test the automatic demand generated for P/Invoking when 
[SuppressUnmanagedCodeSecurity] is being used to suppress it.

sucs1.cs	Call native code without any [SUCS] attribute (fails).
sucs2.cs	Call native code with a [SUCS] attribute at class level.
sucs3.cs	Call native code with a [SUCS] attribute at method level.
sucs4.cs	Call native code with [SUCS] attributes at both class and 
		method level.

Notes
- With Mono runtime the native function getuid is called in libc
- With MS runtime the native function GetTickCount is called in kernel32.dll


** Self

Stack walk starts at the caller frame - i.e. the current frame is ignored. The
self*.cs tests ensure that the walk starts at the right frame (or at least 
that it ignore the caller frame).

selfassert.cs	Deny on caller, Assert and Demand on callee. Assert is 
		ignored, Demand is executed and fail on caller's Deny.
selfdeny.cs	Deny and Demand on the same frame. Deny is ignored. Demand is
		executed (stack walk).
selfpermit.cs	PermitOnly Unmanaged, Demand ControlAppDomain. PermitOnly is
		ignored and Demand (for ControlAppDomain) succeed.
