2009-05-28 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / tests / metadata-verifier / cli-blob-tests.md
1 method-def-sig {
2         assembly assembly-with-methods.exe
3
4         #bad first byte
5         #method zero is a default ctor
6         #0 -> default 5 -> vararg
7
8         #signature size, zero is invalid
9         invalid offset blob.i (table-row (6 0) + 10) set-byte 0
10
11         #cconv
12         invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x26
13         invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x27
14         invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x28
15         invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x29
16         invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2A
17         invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2B
18         invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2C
19         invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2D
20         invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2E
21         invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2F
22
23         #upper nimble flags 0x80 is invalid     
24         invalid offset blob.i (table-row (6 0) + 10) + 1 set-bit 7
25
26         #sig is too small to decode param count
27         invalid offset blob.i (table-row (6 0) + 10) set-byte 1
28
29         #sig is too small to decode return type
30         invalid offset blob.i (table-row (6 0) + 10) set-byte 2
31
32         #zero generic args
33         #method 1 is generic
34         #bytes: size cconv gen_param_count
35         invalid offset blob.i (table-row (6 1) + 10) + 2 set-byte 0
36
37         #set ret type to an invalid value
38         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0
39         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x17
40         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x1A
41         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x21 #mono doesn't support internal type
42         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x40 #modifier
43         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x41 #sentinel
44         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x45 #pinner
45         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x50 #type
46         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x51 #boxed
47         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x52 #reserved
48         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x53 #field
49         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x54 #property
50         invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x55 #enum
51
52         #bad args
53         #method 12 has sig void (int,int,int)
54         #bytes: size cconv param_count void int32 int32 int32
55         valid offset blob.i (table-row (6 12) + 10) + 4 set-byte 0x05
56         valid offset blob.i (table-row (6 12) + 10) + 5 set-byte 0x06
57         valid offset blob.i (table-row (6 12) + 10) + 6 set-byte 0x07
58
59         #void
60         invalid offset blob.i (table-row (6 12) + 10) + 5 set-byte 0x01
61
62         #byref without anything after
63         invalid offset blob.i (table-row (6 12) + 10) + 4 set-byte 0x10
64         invalid offset blob.i (table-row (6 12) + 10) + 5 set-byte 0x10
65         invalid offset blob.i (table-row (6 12) + 10) + 6 set-byte 0x10
66 }
67
68 #Test for stuff in the ret that can't be expressed with C#
69 method-def-ret-misc {
70         assembly assembly-with-custommod.exe
71
72         #method 0 has a modreq
73         #bytes: size cconv param_count mod_req compressed_token
74         invalid offset blob.i (table-row (6 0) + 10) + 4 set-byte 0x7C
75         invalid offset blob.i (table-row (6 0) + 10) + 4 set-byte 0x07
76
77         #switch modreq to modopt
78         valid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x20
79
80         #2 times byref
81         #method 4 returns byref
82         #bytes: size cconv param_count byref int32
83         invalid offset blob.i (table-row (6 4) + 10) + 4 set-byte 0x10
84         #byref of typedref
85         invalid offset blob.i (table-row (6 4) + 10) + 4 set-byte 0x16
86
87 }
88
89 method-ref-sig {
90         assembly assembly-with-signatures.exe
91
92         #member ref 0 is has a vararg sig 
93         #member ref 1 don't use vararg
94
95         #2 sentinels
96         #bytes: size cconv pcount void str obj obj obj obj ... i32 i32 i32
97         invalid offset blob.i (table-row (0xA 0) + 4) + 10 set-byte 0x41
98         invalid offset blob.i (table-row (0xA 0) + 4) + 11 set-byte 0x41
99
100         #sentinel but not vararg
101         invalid offset blob.i (table-row (0xA 0) + 4) + 1 set-byte 0
102
103         
104 }