// ----------------------------------------------------------------------- // // 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"); } } }