2 assembly simple-assembly.exe
4 #table schema major version
5 valid offset cli-metadata + read.uint ( stream-header ( 0 ) ) + 4 set-byte 2
6 valid offset tables-header + 4 set-byte 2
9 invalid offset tables-header + 4 set-byte 22
10 invalid offset tables-header + 5 set-byte 1
13 invalid offset stream-header ( 0 ) + 4 set-uint 23
16 invalid offset tables-header + 6 set-byte 0x8
17 invalid offset tables-header + 6 set-byte 0x10
18 invalid offset tables-header + 6 set-byte 0xF
21 #ECMA-335 defines 39 tables, the empty slows are the following:
22 # MS Extensions: 0x3 0x5 0x7 0x13 0x16
23 # Unused: 0x1E 0x1F 0x2D-0x3F
24 # We don't care about the MS extensions.
26 invalid offset tables-header + 8 set-bit 0x3
27 invalid offset tables-header + 8 set-bit 0x5
28 invalid offset tables-header + 8 set-bit 0x7
29 invalid offset tables-header + 8 set-bit 0x13
30 invalid offset tables-header + 8 set-bit 0x16
32 invalid offset tables-header + 8 set-bit 0x1E
33 invalid offset tables-header + 8 set-bit 0x1F
35 invalid offset tables-header + 8 set-bit 0x2D
36 invalid offset tables-header + 8 set-bit 0x2F
37 invalid offset tables-header + 8 set-bit 0x30
38 invalid offset tables-header + 8 set-bit 0x35
39 invalid offset tables-header + 8 set-bit 0x38
40 invalid offset tables-header + 8 set-bit 0x3F
42 #simple-assembly.exe feature 6 tables (modules, typeref, typedef, method, assembly and assemblyref)
43 #This means that there must be 24 + 6 *4 bytes to hold the schemata + rows -> 48 bytes
46 invalid offset stream-header ( 0 ) + 4 set-uint 24
47 invalid offset stream-header ( 0 ) + 4 set-uint 33
48 invalid offset stream-header ( 0 ) + 4 set-uint 39
49 invalid offset stream-header ( 0 ) + 4 set-uint 44
50 invalid offset stream-header ( 0 ) + 4 set-uint 47
52 #total size of the tables
53 invalid offset stream-header ( 0 ) + 4 set-uint 60
54 invalid offset stream-header ( 0 ) + 4 set-uint 93
58 assembly simple-assembly.exe
61 valid offset table-row ( 0 0 ) set-ushort 0
62 invalid offset table-row ( 0 0 ) set-ushort 9999
65 valid offset tables-header + 24 set-uint 1
66 invalid offset tables-header + 24 set-uint 0
67 invalid offset tables-header + 24 set-uint 2 , offset tables-header + 32 set-uint 1
71 invalid offset table-row ( 0 0 ) + 2 set-ushort 0x8888
72 #point to an empty string
73 invalid offset table-row ( 0 0 ) + 2 set-ushort 0
76 invalid offset table-row ( 0 0 ) + 4 set-ushort 0x8888
79 invalid offset table-row ( 0 0 ) + 6 set-ushort 0x8888
82 invalid offset table-row ( 0 0 ) + 8 set-ushort 0x8888
87 assembly simple-assembly.exe
91 #all table indexes are valid
93 invalid offset table-row ( 1 0 ) set-ushort 0x8000
96 invalid offset table-row ( 1 0 ) set-ushort 0x8001
99 invalid offset table-row ( 1 0 ) set-ushort 0x8002
102 invalid offset table-row ( 1 0 ) set-ushort 0x8003
105 invalid offset table-row ( 1 0 ) + 2 set-ushort 0
108 invalid offset table-row ( 1 0 ) + 2 set-ushort 0x8080
111 invalid offset table-row ( 1 0 ) + 4 set-ushort 0x8080
115 assembly simple-assembly.exe
118 valid offset tables-header + 32 set-uint 2
119 invalid offset tables-header + 32 set-uint 0
121 #This part of the test suite only verifies structural properties, not type validation rules - like an interface that's not abstract.
123 #Flags invalid bits: 9,11,14,15,19,21,24-31
124 invalid offset table-row ( 2 1 ) set-bit 9
125 invalid offset table-row ( 2 1 ) set-bit 11
126 invalid offset table-row ( 2 1 ) set-bit 14
127 invalid offset table-row ( 2 1 ) set-bit 15
128 invalid offset table-row ( 2 1 ) set-bit 19
129 invalid offset table-row ( 2 1 ) set-bit 21
130 invalid offset table-row ( 2 1 ) set-bit 24
131 invalid offset table-row ( 2 1 ) set-bit 25
132 invalid offset table-row ( 2 1 ) set-bit 26
133 invalid offset table-row ( 2 1 ) set-bit 27
134 invalid offset table-row ( 2 1 ) set-bit 28
135 invalid offset table-row ( 2 1 ) set-bit 29
136 invalid offset table-row ( 2 1 ) set-bit 30
137 invalid offset table-row ( 2 1 ) set-bit 31