Ejemplo n.º 1
0
 public async Task CanInspectSecureDelegate()
 {
     using (var scope = await HeapAnalysisScope.Create())
     {
         var delegateObj = scope.Subject.GetFieldValue(nameof(HeapAnalysisTarget.Program.SecureDelegate)).CastAs <IClrCompositeObject>();
         var details     = new DelegateInspector().Inspect(delegateObj);
         Assert.That(details.Kind.HasFlag(DelegateKind.Secure7));
     }
 }
Ejemplo n.º 2
0
        public async Task CanInspectInstanceOpenVirtualDelegate()
        {
            using (var scope = await HeapAnalysisScope.Create())
            {
                var delegateObj = scope.Subject.GetFieldValue(nameof(HeapAnalysisTarget.Program.InstanceOpenVirtualDelegate)).CastAs <IClrCompositeObject>();
                var details     = new DelegateInspector().Inspect(delegateObj);
                Assert.That(details.Kind.HasFlag(DelegateKind.InstanceOpenVirtual3));

                Assert.That(details.TargetOrFirstArg, Is.Null);
                Assert.That(details.Method, Is.EqualTo(scope.FindClrType <HeapAnalysisTarget.Program.InstanceDelegateContainer>().FindMethodByName("VirtualMethod")).Using(new ClrMethodEqualityComparer()));
            }
        }
Ejemplo n.º 3
0
        public async Task CanInspectInstanceClosedDelegate()
        {
            using (var scope = await HeapAnalysisScope.Create())
            {
                var delegateObj = scope.Subject.GetFieldValue(nameof(HeapAnalysisTarget.Program.InstanceClosedDelegate)).CastAs <IClrCompositeObject>();
                var details     = new DelegateInspector().Inspect(delegateObj);
                Assert.That(details.Kind.HasFlag(DelegateKind.InstanceClosed1));

                var targetInstance = details.TargetOrFirstArg.CastAs <ClrClassObject>();
                Assert.That(targetInstance.Type.CanBeAssignedTo <HeapAnalysisTarget.Program.InstanceDelegateContainer>());
                Assert.That(targetInstance.GetFieldValue <string>("instanceId"), Is.EqualTo("Instance1"));
                Assert.That(details.Method, Is.EqualTo(targetInstance.Type.FindMethodByName("Method")).Using(new ClrMethodEqualityComparer()));
            }
        }