1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
using Mono.Documentation;
using NUnit.Framework;
using System;
using System.Linq;
namespace mdoc.Test.Enumeration
{
[TestFixture ()]
public class ExceptionTests : CecilBaseTest
{
[Test ()]
public void TestExceptionEnumerations ()
{
var type = GetTypeDef<ExceptionTestClass> ();
var member = type.Methods.Single (m => m.Name == "ThrowAnException");
var sources = new ExceptionLookup (ExceptionLocations.DependentAssemblies)[member];
Assert.IsNotNull (sources);
Assert.AreEqual (1, sources.Count ());
var source = sources.First ();
Assert.AreEqual ("ThrowAnException", source.Sources.First ().Name);
}
[Test ()]
public void TestExceptionEnumerations_FromPrivateMethod ()
{
var type = GetTypeDef<ExceptionTestClass> ();
var member = type.Methods.Single (m => m.Name == "ThrowFromPrivateMethod");
var sources = new ExceptionLookup (ExceptionLocations.DependentAssemblies)[member];
Assert.IsNotNull (sources);
Assert.AreEqual (0, sources.Count ());
}
[Test ()]
public void TestExceptionEnumerations_FromPublicMethod ()
{
var type = GetTypeDef<ExceptionTestClass> ();
var member = type.Methods.Single (m => m.Name == "ThrowFromPublicMethod");
var sources = new ExceptionLookup (ExceptionLocations.Assembly)[member];
Assert.IsNotNull (sources);
Assert.AreEqual (1, sources.Count ());
var source = sources.First ();
Assert.AreEqual ("ThrowItPublic", source.Sources.First ().Name);
}
public class ExceptionTestClass
{
public void ThrowAnException()
{
throw new NotImplementedException ();
}
public void ThrowFromPrivateMethod () => ThrowItPrivate ();
private void ThrowItPrivate () => throw new NotImplementedException ();
public void ThrowFromPublicMethod () => ThrowItPublic ();
public void ThrowItPublic () => throw new NotImplementedException ();
}
}
}
|