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