Merge pull request #2323 from esdrubal/servicemodel
[mono.git] / mono / tests / verifier / make_cmmp_test.sh
1 #! /bin/sh
2
3 SED="sed"
4 if [ `which gsed 2> /dev/null` ] ; then 
5         SED="gsed"
6 fi
7
8 TEST_NAME=$1
9 TEST_VALIDITY=$2
10 TEST_OP=$3
11 TEST_LOAD_OP=$4
12 TEST_TYPE=$5
13 TEST_BEFORE_OP=$6
14
15 echo $TEST_OP | grep unbox > /dev/null;
16
17 if [ "$?" == "0" ]; then
18         TEST_CODE="
19         ldloc.0
20         box $TEST_TYPE";
21 else
22         TEST_CODE="
23         ldc.i4.1
24         newarr $TEST_TYPE
25         ldc.i4.0";
26 fi
27
28
29 TEST_FILE=`echo ${TEST_VALIDITY}_${TEST_NAME} | $SED -e 's/ /_/g' -e 's/\./_/g' -e 's/&/mp/g' -e 's/\[/_/g' -e 's/\]/_/g'`_generated.il
30 echo $TEST_FILE
31 $SED  -e "s/TYPE/${TEST_TYPE}/g" -e "s/OPCODE/${TEST_OP}/g"  -e "s/BEFORE_OP/${TEST_BEFORE_OP}/g" -e "s/LOAD_OP/${TEST_LOAD_OP}/g"> $TEST_FILE <<//EOF
32
33 .assembly extern mscorlib
34 {
35   .ver 2:0:0:0
36   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
37 }
38
39 .assembly 'cmmp_test'
40 {
41   .hash algorithm 0x00008004
42   .ver  0:0:0:0
43 }
44
45 .module cmmp.exe
46
47
48 .class ClassA extends [mscorlib]System.Object
49 {
50     .field public int32 valid
51
52         .method public hidebysig  specialname  rtspecialname instance default void .ctor (int32&)  cil managed 
53         {
54                 .maxstack 8
55                 ldarg.0 
56                 call instance void object::.ctor()
57                 ret 
58         }
59
60         .method public virtual void VirtTest (ClassA& arg)
61         {
62                 ret
63         }
64 }
65
66 .class public Template\`1<T>
67         extends [mscorlib]System.Object
68 {
69 }
70
71 .class sealed public StructTemplate\`1<T>
72         extends [mscorlib]System.ValueType
73 {
74         .field public !0 t
75 }
76
77 .class sealed public StructTemplate2\`1<T>
78         extends [mscorlib]System.ValueType
79 {
80         .field public !0 t
81 }
82
83
84 .class public auto ansi sealed MyStruct
85         extends [mscorlib]System.ValueType
86 {
87         .field public int32 foo
88         .field public native int ptr
89
90         .method public static void Test (MyStruct& arg)
91         {
92                 ret
93         }
94
95 }
96
97
98 .class public auto ansi sealed MyEnum
99         extends [mscorlib]System.Enum
100 {
101     .field public specialname  rtspecialname  int32 value__
102     .field public static  literal  valuetype MyEnum B = int32(0x00000000)
103     .field public static  literal  valuetype MyEnum C = int32(0x00000001)
104 }
105
106 .method public static int32 Main ()
107 {
108         .entrypoint
109         .maxstack 8
110         .locals init (TYPE V_0)
111
112         BEFORE_OP
113
114         ${TEST_CODE}
115
116         OPCODE
117
118         LOAD_OP
119
120         leave END
121 END:
122         ldc.i4.0
123         ret 
124 }
125
126 //EOF