// -----------------------------------------------------------------------
//
// Copyright 2015 MIT Licence. See licence.md for more information.
//
// -----------------------------------------------------------------------
namespace Perspex.Base.UnitTests
{
using System;
using System.Linq;
using System.Reactive.Linq;
using System.Reactive.Subjects;
using Xunit;
public class PerspexObjectTests_Metadata
{
public PerspexObjectTests_Metadata()
{
// Ensure properties are registered.
PerspexProperty p;
p = Class1.FooProperty;
p = Class2.BarProperty;
}
[Fact]
public void GetProperties_Returns_Registered_Properties()
{
string[] names = PerspexObject.GetProperties(typeof(Class1)).Select(x => x.Name).ToArray();
Assert.Equal(new[] { "Foo", "Baz", "Qux" }, names);
}
[Fact]
public void GetProperties_Returns_Registered_Properties_For_Base_Types()
{
string[] names = PerspexObject.GetProperties(typeof(Class2)).Select(x => x.Name).ToArray();
Assert.Equal(new[] { "Bar", "Flob", "Fred", "Foo", "Baz", "Qux" }, names);
}
private class Class1 : PerspexObject
{
public static readonly PerspexProperty FooProperty =
PerspexProperty.Register("Foo");
public static readonly PerspexProperty BazProperty =
PerspexProperty.Register("Baz");
public static readonly PerspexProperty QuxProperty =
PerspexProperty.Register("Qux");
}
private class Class2 : Class1
{
public static readonly PerspexProperty BarProperty =
PerspexProperty.Register("Bar");
public static readonly PerspexProperty FlobProperty =
PerspexProperty.Register("Flob");
public static readonly PerspexProperty FredProperty =
PerspexProperty.Register("Fred");
}
}
}