Add assert when dllmap is disabled and fix support build in netcore mode
[mono-project.git] / mono / tests / assembly_append_ordering.cs
blob13da3b7fa7e7a2604113f0bb560d36770c76b24d
1 using System;
2 using System.Linq;
3 using System.Reflection;
4 using System.Reflection.Emit;
6 class Driver {
7 static int Main () {
8 var dyn = DefineDynamicAssembly (AppDomain.CurrentDomain);
9 var core = TriggerLoadingSystemCore ();
10 var asm = AppDomain.CurrentDomain.GetAssemblies ();
12 if (asm [0] != typeof (object).Assembly) {
13 Console.WriteLine ("first assembly must be mscorlib, but it was {0}", asm [0]);
14 return 1;
17 if (asm [1] != typeof (Driver).Assembly) {
18 Console.WriteLine ("second assembly must be test assembly, but it was {0}", asm [1]);
19 return 2;
22 if (asm [2] != dyn) {
23 Console.WriteLine ("third assembly must be SRE, but it was {0}", asm [2]);
24 return 3;
27 if (asm [3] != core) {
28 Console.WriteLine ("last assembly must be System.Core, but it was {0}", asm [3]);
29 return 4;
32 return 0;
35 [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
36 static Assembly TriggerLoadingSystemCore ()
38 int[] x = new int[] { 1,2,3};
39 x.Where (v => v > 1);
40 return typeof (Enumerable).Assembly;
44 static Assembly DefineDynamicAssembly (AppDomain domain)
46 AssemblyName assemblyName = new AssemblyName ();
47 assemblyName.Name = "MyDynamicAssembly";
49 AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly (assemblyName, AssemblyBuilderAccess.Run);
50 ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule ("MyDynamicModule");
51 TypeBuilder typeBuilder = moduleBuilder.DefineType ("MyDynamicType", TypeAttributes.Public);
52 ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor (MethodAttributes.Public, CallingConventions.Standard, null);
53 ILGenerator ilGenerator = constructorBuilder.GetILGenerator ();
54 ilGenerator.EmitWriteLine ("MyDynamicType instantiated!");
55 ilGenerator.Emit (OpCodes.Ret);
56 typeBuilder.CreateType ();
57 return assemblyBuilder;