1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 using System;
6 using ILCompiler.Metadata;
7 using Internal.TypeSystem;
8 
9 namespace MetadataTransformTests
10 {
11     struct MockPolicy : IMetadataPolicy
12     {
13         private Func<MetadataType, bool> _typeGeneratesMetadata;
14         private Func<MethodDesc, bool> _methodGeneratesMetadata;
15         private Func<FieldDesc, bool> _fieldGeneratesMetadata;
16 
17         private Func<MetadataType, bool> _isBlockedType;
18         private Func<MetadataType, ModuleDesc> _moduleOfType;
19 
MockPolicyMetadataTransformTests.MockPolicy20         public MockPolicy(
21             Func<MetadataType, bool> typeGeneratesMetadata,
22             Func<MethodDesc, bool> methodGeneratesMetadata = null,
23             Func<FieldDesc, bool> fieldGeneratesMetadata = null,
24             Func<MetadataType, bool> isBlockedType = null,
25             Func<MetadataType, ModuleDesc> moduleOfType = null)
26         {
27             _typeGeneratesMetadata = typeGeneratesMetadata;
28             _methodGeneratesMetadata = methodGeneratesMetadata;
29             _fieldGeneratesMetadata = fieldGeneratesMetadata;
30             _isBlockedType = isBlockedType;
31             _moduleOfType = moduleOfType;
32         }
33 
GeneratesMetadataMetadataTransformTests.MockPolicy34         public bool GeneratesMetadata(MethodDesc methodDef)
35         {
36             if (_methodGeneratesMetadata != null)
37                 return _methodGeneratesMetadata(methodDef);
38             return false;
39         }
40 
GeneratesMetadataMetadataTransformTests.MockPolicy41         public bool GeneratesMetadata(FieldDesc fieldDef)
42         {
43             if (_fieldGeneratesMetadata != null)
44                 return _fieldGeneratesMetadata(fieldDef);
45             return false;
46         }
47 
GeneratesMetadataMetadataTransformTests.MockPolicy48         public bool GeneratesMetadata(MetadataType typeDef)
49         {
50             return _typeGeneratesMetadata(typeDef);
51         }
52 
IsBlockedMetadataTransformTests.MockPolicy53         public bool IsBlocked(MetadataType typeDef)
54         {
55             if (_isBlockedType != null)
56                 return _isBlockedType(typeDef);
57             return false;
58         }
59 
IsBlockedMetadataTransformTests.MockPolicy60         public bool IsBlocked(MethodDesc method)
61         {
62             return IsBlocked((MetadataType)method.OwningType);
63         }
64 
GetModuleOfTypeMetadataTransformTests.MockPolicy65         public ModuleDesc GetModuleOfType(MetadataType typeDef)
66         {
67             if (_moduleOfType != null)
68                 return _moduleOfType(typeDef);
69             return typeDef.Module;
70         }
71     }
72 }
73