2013-11-07 17:16:22 +01:00
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
|
using Umbraco.Core;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Umbraco.Tests.DynamicsAndReflection
|
|
|
|
|
|
{
|
|
|
|
|
|
[TestFixture]
|
|
|
|
|
|
public class ReflectionTests
|
|
|
|
|
|
{
|
|
|
|
|
|
[Test]
|
|
|
|
|
|
public void GetBaseTypesIsOk()
|
|
|
|
|
|
{
|
|
|
|
|
|
// tests that the GetBaseTypes extension method works.
|
|
|
|
|
|
|
|
|
|
|
|
var type = typeof(Class2);
|
|
|
|
|
|
var types = type.GetBaseTypes(true).ToArray();
|
|
|
|
|
|
Assert.AreEqual(3, types.Length);
|
|
|
|
|
|
Assert.Contains(typeof(Class2), types);
|
|
|
|
|
|
Assert.Contains(typeof(Class1), types);
|
|
|
|
|
|
Assert.Contains(typeof(object), types);
|
|
|
|
|
|
|
|
|
|
|
|
types = type.GetBaseTypes(false).ToArray();
|
|
|
|
|
|
Assert.AreEqual(2, types.Length);
|
|
|
|
|
|
Assert.Contains(typeof(Class1), types);
|
|
|
|
|
|
Assert.Contains(typeof(object), types);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
|
public void GetInterfacesIsOk()
|
|
|
|
|
|
{
|
|
|
|
|
|
// tests that GetInterfaces gets _all_ interfaces
|
|
|
|
|
|
// so the AllInterfaces extension method is useless
|
|
|
|
|
|
|
|
|
|
|
|
var type = typeof(Class2);
|
|
|
|
|
|
var interfaces = type.GetInterfaces();
|
|
|
|
|
|
Assert.AreEqual(2, interfaces.Length);
|
|
|
|
|
|
Assert.Contains(typeof(IInterface1), interfaces);
|
|
|
|
|
|
Assert.Contains(typeof(IInterface2), interfaces);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TypeExtensions.AllInterfaces was broken an not used, has been commented out
|
|
|
|
|
|
//
|
|
|
|
|
|
//[Test]
|
|
|
|
|
|
//public void AllInterfacesIsBroken()
|
|
|
|
|
|
//{
|
|
|
|
|
|
// // tests that the AllInterfaces extension method is broken
|
|
|
|
|
|
//
|
|
|
|
|
|
// var type = typeof(Class2);
|
|
|
|
|
|
// var interfaces = type.AllInterfaces().ToArray();
|
|
|
|
|
|
// Assert.AreEqual(3, interfaces.Length); // should be 2!
|
|
|
|
|
|
// Assert.Contains(typeof(IInterface1), interfaces);
|
|
|
|
|
|
// Assert.Contains(typeof(IInterface2), interfaces);
|
|
|
|
|
|
// Assert.AreEqual(2, interfaces.Count(i => i == typeof(IInterface1))); // duplicate!
|
|
|
|
|
|
// Assert.AreEqual(1, interfaces.Count(i => i == typeof(IInterface2)));
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
interface IInterface1
|
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
|
|
interface IInterface2 : IInterface1
|
|
|
|
|
|
{
|
|
|
|
|
|
void Method();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class Class1 : IInterface2
|
|
|
|
|
|
{
|
|
|
|
|
|
public void Method() { }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class Class2 : Class1
|
|
|
|
|
|
{ }
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|