Author: kumpera
Date: 2007-12-06 18:17:43 -0500 (Thu, 06 Dec 2007)
New Revision: 90872

Added:
   trunk/mono/mono/tests/verifier/make_ldelem_test.sh
Modified:
   trunk/mono/mono/tests/verifier/ChangeLog
   trunk/mono/mono/tests/verifier/make_tests.sh
Log:
2007-12-06 Rodrigo Kumpera <[EMAIL PROTECTED]>

        * make_test.sh: added tests for ldelem.X
        * make_ldelem_test.sh: new test generator



Modified: trunk/mono/mono/tests/verifier/ChangeLog
===================================================================
--- trunk/mono/mono/tests/verifier/ChangeLog    2007-12-06 22:45:57 UTC (rev 
90871)
+++ trunk/mono/mono/tests/verifier/ChangeLog    2007-12-06 23:17:43 UTC (rev 
90872)
@@ -1,3 +1,8 @@
+2007-12-06 Rodrigo Kumpera <[EMAIL PROTECTED]>
+
+       * make_test.sh: added tests for ldelem.X
+       * make_ldelem_test.sh: new test generator
+
 2007-12-05 Rodrigo Kumpera <[EMAIL PROTECTED]>
 
        * make_test.sh: added tests for ldelema

Added: trunk/mono/mono/tests/verifier/make_ldelem_test.sh
===================================================================
--- trunk/mono/mono/tests/verifier/make_ldelem_test.sh  2007-12-06 22:45:57 UTC 
(rev 90871)
+++ trunk/mono/mono/tests/verifier/make_ldelem_test.sh  2007-12-06 23:17:43 UTC 
(rev 90872)
@@ -0,0 +1,65 @@
+#! /bin/sh
+
+TEST_NAME=$1
+TEST_VALIDITY=$2
+TEST_ARR=$3
+TEST_IDX=$4
+TEST_LD=$5
+
+
+TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
+TEST_FILE=${TEST_NAME}_generated.il
+echo $TEST_FILE
+sed -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/ARR/${TEST_ARR}/g" -e 
"s/IDX/${TEST_IDX}/g" -e "s/LD/${TEST_LD}/g" > $TEST_FILE <<//EOF
+
+// VALIDITY CIL which breaks the ECMA-335 rules. 
+// this CIL should fail verification by a conforming CLI verifier.
+
+.assembly '${TEST_NAME}_generated'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+
+.class ClassA extends [mscorlib]System.Object
+{
+}
+
+.class ClassSubA extends ClassA
+{
+}
+
+.class public auto ansi sealed MyStruct
+       extends [mscorlib]System.ValueType
+{
+       .field public int32 foo
+}
+
+.method public static void foo() cil managed
+{
+       .maxstack 2
+       ldc.i4.1
+       ARR
+       IDX
+       LD // VALIDITY.
+       pop
+       ret
+}
+
+.method public static int32 Main() cil managed
+{
+       .maxstack 8
+       .entrypoint
+       .try {
+               call void foo ()
+               leave END
+       } catch [mscorlib]System.NullReferenceException {
+               pop 
+               leave END
+
+        }
+
+END:   ldc.i4.0
+       ret
+}
+//EOF


Property changes on: trunk/mono/mono/tests/verifier/make_ldelem_test.sh
___________________________________________________________________
Name: svn:executable
   + *

Modified: trunk/mono/mono/tests/verifier/make_tests.sh
===================================================================
--- trunk/mono/mono/tests/verifier/make_tests.sh        2007-12-06 22:45:57 UTC 
(rev 90871)
+++ trunk/mono/mono/tests/verifier/make_tests.sh        2007-12-06 23:17:43 UTC 
(rev 90872)
@@ -2719,3 +2719,149 @@
 done
 
 
+#ldelem.X
+
+#TODO add tests for CMMP (read only prefix)
+#TODO add tests for arrays that are not zero-based
+
+
+I=1
+for ARR in "int8" "bool" "unsigned int8"
+do
+       ./make_ldelem_test.sh ldelem_base_types_i_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.i1"
+       ./make_ldelem_test.sh ldelem_base_types_u_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.u1"
+       I=`expr $I + 1`
+done
+
+for ARR in "int16" "char" "unsigned int16" "int32" "unsigned int32" "native 
int" "native unsigned int" "int64" "unsigned int64" "float32" "float64" "object"
+do
+       ./make_ldelem_test.sh ldelem_base_types_i_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.i1"
+       ./make_ldelem_test.sh ldelem_base_types_u_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.u1"
+       I=`expr $I + 1`
+done
+
+
+for ARR in "int16" "char" "unsigned int16"
+do
+       ./make_ldelem_test.sh ldelem_base_types_i_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.i2"
+       ./make_ldelem_test.sh ldelem_base_types_u_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.u2"
+       I=`expr $I + 1`
+done
+
+for ARR in "int8" "bool" "unsigned int8" "int32" "unsigned int32" "native int" 
"native unsigned int" "int64" "unsigned int64" "float32" "float64" "object"
+do
+       ./make_ldelem_test.sh ldelem_base_types_i_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.i2"
+       ./make_ldelem_test.sh ldelem_base_types_u_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.u2"
+       I=`expr $I + 1`
+done
+
+
+for ARR in "int32" "unsigned int32" "native int" "native unsigned int"
+do
+       ./make_ldelem_test.sh ldelem_base_types_i_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.i4"
+       ./make_ldelem_test.sh ldelem_base_types_u_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.u4"
+       ./make_ldelem_test.sh ldelem_base_types_n_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.i"
+       I=`expr $I + 1`
+done
+
+for ARR in "int8" "bool" "unsigned int8" "int16" "char" "unsigned int16" 
"int64" "unsigned int64" "float32" "float64" "object"
+do
+       ./make_ldelem_test.sh ldelem_base_types_i_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.i4"
+       ./make_ldelem_test.sh ldelem_base_types_u_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.u4"
+       ./make_ldelem_test.sh ldelem_base_types_n_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.i"
+       I=`expr $I + 1`
+done
+
+
+for ARR in "int64" "unsigned int64"
+do
+       ./make_ldelem_test.sh ldelem_base_types_i_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.i8"
+       ./make_ldelem_test.sh ldelem_base_types_u_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.u8"
+       I=`expr $I + 1`
+done
+
+for ARR in "int8" "bool" "unsigned int8" "int16" "char" "unsigned int16" 
"int32" "unsigned int32" "native int" "native unsigned int" "float32" "float64" 
"object"
+do
+       ./make_ldelem_test.sh ldelem_base_types_i_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.i8"
+       ./make_ldelem_test.sh ldelem_base_types_u_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.u8"
+       I=`expr $I + 1`
+done
+
+
+for ARR in "float32"
+do
+       ./make_ldelem_test.sh ldelem_base_types_f_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.r4"
+       I=`expr $I + 1`
+done
+
+for ARR in "int8" "bool" "unsigned int8" "int16" "char" "unsigned int16" 
"int32" "unsigned int32" "native int" "native unsigned int" "int64" "unsigned 
int64" "float64" "object"
+do
+       ./make_ldelem_test.sh ldelem_base_types_f_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.r4"
+       I=`expr $I + 1`
+done
+
+
+for ARR in "float64"
+do
+       ./make_ldelem_test.sh ldelem_base_types_f_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.r8"
+       I=`expr $I + 1`
+done
+
+for ARR in "int8" "bool" "unsigned int8" "int16" "char" "unsigned int16" 
"int32" "unsigned int32" "native int" "native unsigned int" "int64" "unsigned 
int64" "float32" "object"
+do
+       ./make_ldelem_test.sh ldelem_base_types_f_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.r8"
+       I=`expr $I + 1`
+done
+
+
+for ARR in "object" "string" "ClassA"
+do
+       ./make_ldelem_test.sh ldelem_base_types_o_${I} valid "newarr ${ARR}" 
"ldc.i4.0" "ldelem.ref"
+       I=`expr $I + 1`
+done
+
+for ARR in "valuetype MyStruct" "int8" "bool" "unsigned int8" "int16" "char" 
"unsigned int16" "int32" "unsigned int32" "native int" "native unsigned int" 
"int64" "unsigned int64" "float32" "float64" 
+do
+       ./make_ldelem_test.sh ldelem_base_types_o_${I} unverifiable "newarr 
${ARR}" "ldc.i4.0" "ldelem.ref"
+       I=`expr $I + 1`
+done
+
+I=1
+for OP in i1 u1 i2 u2 i4 u4 i8 u8 r4 r8 i ref
+do
+       ./make_ldelem_test.sh ldelem_null_array_${I} valid "pop\n\tldnull" 
"ldc.i4.0" "ldelem.${OP}"
+       I=`expr $I + 1`
+done
+
+
+I=1
+for OP in i1 u1 i2 u2 i4 u4 i8 u8 r4 r8 i ref
+do
+       ./make_ldelem_test.sh ldelem_empty_stack_1_${I} invalid "pop" "nop" 
"ldelem.${OP}"
+       ./make_ldelem_test.sh ldelem_empty_stack_2_${I} invalid "newarr int32" 
"nop" "ldelem.${OP}"
+       ./make_ldelem_test.sh ldelem_empty_stack_3_${I} invalid "pop" 
"ldc.i4.0" "ldelem.${OP}"
+       I=`expr $I + 1`
+done
+
+I=1
+for OP in i1 u1 i2 u2 i4 u4 i8 u8 r4 r8 i ref
+do
+       for ARR in "newobj instance void object::.ctor()" 
"ldc.i4.0\n\tldc.i4.0\n\tnewobj instance void string[,]::.ctor(int32, int32)" 
"ldc.r4 0" "ldc.r8 0" "ldc.i8 0" "ldc.i4.0" "ldc.i4.0\n\tconv.i"
+       do
+        ./make_ldelem_test.sh ldelema_bad_array_${I} unverifiable 
"pop\n\t${ARR}" "ldc.i4.0" "ldelem.${OP}"
+         I=`expr $I + 1`
+       done
+done
+
+
+I=1
+for OP in i1 u1 i2 u2 i4 u4 i8 u8 r4 r8 i ref
+do
+       for IDX in "newobj instance void object::.ctor()" "ldc.i8 0" "ldc.r4 0"
+       do
+        ./make_ldelem_test.sh ldelema_bad_index_${I} unverifiable 
"pop\n\tldnull" "${IDX}" "ldelem.${OP}"
+         I=`expr $I + 1`
+       done
+done
+
+

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to