a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
70 lines
1.6 KiB
C#
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 ();
|
|
}
|
|
}
|