linux-packaging-mono/mcs/tests/gtest-fixedbuffer-01.cs
Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

70 lines
1.6 KiB
C#

// Compiler options: -unsafe -r:gtest-fixedbuffer-01-lib.dll
// Fixed buffers tests
using System;
using System.Runtime.InteropServices;
[module: DefaultCharSet (CharSet.Ansi)]
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public unsafe struct TestNew {
private fixed char test_1 [128];
public fixed bool test2 [4];
public fixed int T [2];
public fixed bool test20 [4], test21 [40];
private int foo, foo2;
public void SetTest () {
fixed (char* c = test_1) {
*c = 'g';
}
}
}
struct Struct2 {
public unsafe fixed byte Pad[64];
}
public class C {
unsafe static int Test () {
TestNew tt = new TestNew ();
tt.SetTest ();
tt.test2 [2] = false;
tt.T [1] = 5544;
if (tt.T [1] != 5544)
return 2;
ExternalStruct es = new ExternalStruct ();
es.double_buffer [1] = 999999.8888;
es.double_buffer [0] = es.double_buffer [1];
// Attributes test
if (Attribute.GetCustomAttribute (typeof (TestNew).GetField ("test2"), typeof (System.Runtime.CompilerServices.FixedBufferAttribute)) == null)
return 3;
if (typeof (TestNew).GetNestedTypes ().Length != 5)
return 5;
foreach (Type t in typeof (TestNew).GetNestedTypes ()) {
if (Attribute.GetCustomAttribute (t, typeof (System.Runtime.CompilerServices.CompilerGeneratedAttribute)) == null)
return 40;
if (Attribute.GetCustomAttribute (t, typeof (System.Runtime.CompilerServices.UnsafeValueTypeAttribute)) == null)
return 41;
if (!t.IsUnicodeClass)
return 42;
}
Console.WriteLine ("OK");
return 0;
}
public static int Main () {
return Test ();
}
}