2009-05-19 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Tue, 19 May 2009 22:15:02 +0000 (22:15 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Tue, 19 May 2009 22:15:02 +0000 (22:15 -0000)
* cli-tables-tests.md: Add tests for the generic param table.

* assembly-with-generics.cs: New file for generic tests.

* Makefile: Adjust the build to the new file.

svn path=/trunk/mono/; revision=134426

mono/tests/metadata-verifier/Changelog
mono/tests/metadata-verifier/Makefile
mono/tests/metadata-verifier/assembly-with-generics.cs [new file with mode: 0644]
mono/tests/metadata-verifier/cli-tables-tests.md

index ba9bb4b1ba8ea3f25e9fa66c70ff6c4c6a7cc7b4..d4ba15c50b4f53426cfa58964e585ce50340d3cf 100644 (file)
@@ -1,3 +1,11 @@
+2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * cli-tables-tests.md: Add tests for the generic param table.
+
+       * assembly-with-generics.cs: New file for generic tests.
+
+       * Makefile: Adjust the build to the new file.
+
 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * cli-tables-tests.md: Add tests for the nested class table.
index 679b227e886bd57f28eec40d35db2d18aaa139d3..81c0e61f89bf40e991b223426a99e7dcb300153d 100644 (file)
@@ -37,6 +37,9 @@ module.netmodule: module.il
 assembly-with-module.exe: assembly-with-module.cs module.netmodule
        gmcs assembly-with-module.cs -addmodule:module.netmodule
 
+assembly-with-generics.exe: assembly-with-generics.cs
+       gmcs assembly-with-generics.cs
+
 TEST_BINARIES = assembly-with-resource.exe \
        assembly-with-complex-type.exe \
        assembly-with-methods.exe \
@@ -48,6 +51,7 @@ TEST_BINARIES = assembly-with-resource.exe \
        assembly-with-properties.exe \
        assembly-with-module.exe \
        assembly-with-resource.exe \
+       assembly-with-generics.exe \
        simple-assembly.exe
 
 
diff --git a/mono/tests/metadata-verifier/assembly-with-generics.cs b/mono/tests/metadata-verifier/assembly-with-generics.cs
new file mode 100644 (file)
index 0000000..4729a59
--- /dev/null
@@ -0,0 +1,28 @@
+using System;
+using System.Runtime.InteropServices;
+
+public class Simple<T,K>  {}
+
+public class Generic<A,B,C,D,E> 
+       where B : class
+       where C : struct
+       where D : new()
+       where E : class, new()
+{
+}
+
+
+public class Driver
+{
+       public void GenericMethod<A,B,C,D,E> ()
+               where B : class
+               where C : struct
+               where D : new()
+               where E : class, new() 
+       {
+       }
+
+       public static void Main ()
+       {
+       }
+}
\ No newline at end of file
index 4a6283fbb58f49427ceb37f5f1627dc4b0b44f77..e0d6ae97046be309af86fafffe291dc2cbee4a64 100644 (file)
@@ -1180,3 +1180,51 @@ nested-class-table {
 
        #TODO check for dups based on nestedclass (5) 
 }
+
+
+generic-param-table {
+       assembly assembly-with-generics.exe
+
+       #bad flags
+       #only 0-4 are used
+       invalid offset table-row (0x2A 0) + 2 set-bit 5
+       invalid offset table-row (0x2A 0) + 2 set-bit 6
+       invalid offset table-row (0x2A 0) + 2 set-bit 7
+       invalid offset table-row (0x2A 0) + 2 set-bit 8
+       invalid offset table-row (0x2A 0) + 2 set-bit 9
+       invalid offset table-row (0x2A 0) + 2 set-bit 10
+       invalid offset table-row (0x2A 0) + 2 set-bit 11
+       invalid offset table-row (0x2A 0) + 2 set-bit 12
+       invalid offset table-row (0x2A 0) + 2 set-bit 13
+       invalid offset table-row (0x2A 0) + 2 set-bit 14
+       invalid offset table-row (0x2A 0) + 2 set-bit 15
+
+       #variance 0x3 is invalid
+       invalid offset table-row (0x2A 0) + 2 set-ushort 0x3
+
+       #bad or null owner
+       invalid offset table-row (0x2A 0) + 4 set-ushort 0
+       invalid offset table-row (0x2A 0) + 4 set-ushort 0x8800
+       invalid offset table-row (0x2A 0) + 4 set-ushort 0x8801
+
+       #bad or empty name      
+       invalid offset table-row (0x2A 0) + 6 set-ushort 0
+       invalid offset table-row (0x2A 0) + 6 set-ushort 0x8800
+
+       #wrong order
+       invalid offset table-row (0x2A 0)  set-ushort 1,
+                       offset table-row (0x2A 1)  set-ushort 0
+
+       #not monotonically growing
+       invalid offset table-row (0x2A 0)  set-ushort 0,
+                       offset table-row (0x2A 1)  set-ushort 0
+
+       #start big
+       invalid offset table-row (0x2A 0)  set-ushort 1,
+                       offset table-row (0x2A 1)  set-ushort 2
+
+       #step bigger than 1
+       invalid offset table-row (0x2A 0)  set-ushort 0,
+                       offset table-row (0x2A 1)  set-ushort 2
+
+}