File: gtest-fixedbuffer-01.cs

package info (click to toggle)
mono-reference-assemblies 3.12.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 604,240 kB
  • ctags: 625,505
  • sloc: cs: 3,967,741; xml: 2,793,081; ansic: 418,042; java: 60,435; sh: 14,833; makefile: 11,576; sql: 7,956; perl: 1,467; cpp: 1,446; yacc: 1,203; python: 598; asm: 422; sed: 16; php: 1
file content (69 lines) | stat: -rw-r--r-- 1,607 bytes parent folder | download | duplicates (10)
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
// 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 ();
	}
}