2009-05-07 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / tests / metadata-verifier / cli-tables-tests.md
index 370c68eb6bc35f84e2a917dcec98145ab769a630..ad5198fdc189e5b9093228da1a05b76bcb1563ca 100644 (file)
@@ -790,3 +790,110 @@ event-table {
        #TODO check for dups
 }
 
+property-map-table {
+       assembly assembly-with-properties.exe
+
+       #parent must be a valid typedef token
+       invalid offset table-row ( 0x15 0 ) set-ushort 0x8800
+
+       #bad propertylist
+       invalid offset table-row ( 0x15 0 ) + 2 set-ushort 0x0000
+       invalid offset table-row ( 0x15 0 ) + 2 set-ushort 0x8800
+
+       #propertylist must not be duplicated and increase monotonically
+       #property list is 1,3,7 we change the first to 4
+       invalid offset table-row ( 0x15 0 ) + 2 set-ushort 4
+}
+
+property-table {
+       assembly assembly-with-properties.exe
+
+       #valid flags (3)
+       #only bits 9, 10 and 12 are used 
+       invalid offset table-row ( 0x17 0 ) set-bit 0
+       invalid offset table-row ( 0x17 0 ) set-bit 1
+       invalid offset table-row ( 0x17 0 ) set-bit 2
+       invalid offset table-row ( 0x17 0 ) set-bit 3
+       invalid offset table-row ( 0x17 0 ) set-bit 4
+       invalid offset table-row ( 0x17 0 ) set-bit 5
+       invalid offset table-row ( 0x17 0 ) set-bit 6
+       invalid offset table-row ( 0x17 0 ) set-bit 7
+       invalid offset table-row ( 0x17 0 ) set-bit 8
+       invalid offset table-row ( 0x17 0 ) set-bit 11
+       invalid offset table-row ( 0x17 0 ) set-bit 13
+       invalid offset table-row ( 0x17 0 ) set-bit 14
+       invalid offset table-row ( 0x17 0 ) set-bit 15
+
+       #valid non empty name (4)
+       invalid offset table-row ( 0x17 0 ) + 2 set-ushort 0
+       invalid offset table-row ( 0x17 0 ) + 2 set-ushort 0x8800
+
+       #type must be a non null type signature in the blob heap (6)
+       invalid offset table-row ( 0x17 0 ) + 4 set-ushort 0
+       invalid offset table-row ( 0x17 0 ) + 4 set-ushort 0x8800
+
+       #TODO signature must be of the right kind (7)
+
+       #if property has default, there must be a row in the defaults table
+       #we mark row zero as having default value
+       #field zero has default value
+       valid offset table-row (0x17 0) + 0 or-ushort  0x1000, #mark the property with hasdefault
+                 offset table-row (0x04 0) + 0 set-ushort 0x0011, #clear literal and hasdefault from the field
+                 offset table-row (0x0B 0) + 2 set-ushort 0x0006  #change the parent token to row 1 of the property table (0x2) 
+
+       invalid offset table-row (0x17 0) + 0 or-ushort  0x1000
+
+       #TODO check for dups
+}
+
+methodimpl-table {
+       assembly assembly-with-complex-type.exe
+
+       #class shall be valid (2)
+       invalid offset table-row (0x19 0) set-ushort 0 
+       invalid offset table-row (0x19 0) set-ushort 0x8800
+
+       #methodbody shall be valid (3)
+       #null
+       invalid offset table-row (0x19 0) + 2 set-ushort 0x0000 
+       invalid offset table-row (0x19 0) + 2 set-ushort 0x0001
+       #out of range
+       invalid offset table-row (0x19 0) + 2 set-ushort 0x8800 
+       invalid offset table-row (0x19 0) + 2 set-ushort 0x8801
+
+       #MethodDeclaration shall be valid
+       #null
+       invalid offset table-row (0x19 0) + 4 set-ushort 0x0000 
+       invalid offset table-row (0x19 0) + 4 set-ushort 0x0001
+       #out of range
+       invalid offset table-row (0x19 0) + 4 set-ushort 0x8800 
+       invalid offset table-row (0x19 0) + 4 set-ushort 0x8801
+       
+
+       #TODO check MethodDeclaration method for virtual and owner type for !sealed (4,5)       
+       #TODO check MethodBody for belonging to a super type of Class,been virtual and rva != 0 (6,7,8)
+       #TODO check MethodBody must belong to any ancestor or iface of Class (9)
+       #TODO check MethodDeclaration method shall not be final (10)
+       #TODO if MethodDeclaration is strict, it must be visible to Class (11)
+       #TODO the method signature of MethodBody must match of MethodDeclaration (12)   
+       #TODO no dups
+}
+
+moduleref-table {
+       assembly assembly-with-module.exe
+
+       #string must be valid (2)
+       invalid offset table-row (0x1A 0) set-ushort 0
+       invalid offset table-row (0x1A 0) set-ushort 0x8801
+
+       #TODO there must be a row on the File table with the same name
+}
+
+typespec-table {
+       assembly assembly-with-complex-type.exe
+
+       #valid signature
+       invalid offset table-row (0x1B 0) set-ushort 0
+       invalid offset table-row (0x1B 0) set-ushort 0x8800
+}
+